{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\koselekt\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2717: DtypeWarning: Columns (2,14,27,28,29,30,44,45,46,47,48,49,50,51) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    }
   ],
   "source": [
    "mets_df_small = pd.read_csv('2016_Mets.csv')\n",
    "mets_df2_small = pd.read_csv('2017_Mets.csv')\n",
    "mets_df = pd.read_csv('2016_Mets_FULL.csv')\n",
    "mets_df2 = pd.read_csv('2017_Mets_FULL.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Antonio Bastardo', 'Bartolo Colon', 'Gabriel Ynoa', 'Jim Henderson',\n",
       "       'Jonathon Niese', 'Logan Verrett'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find players present in training data but not test data\n",
    "mets_discrepancies = pd.Index(mets_df_small['player_name']).difference(pd.Index(mets_df2_small['player_name']))\n",
    "mets_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['AJ Ramos', 'Adam Wilk', 'Chasen Bradford', 'Chris Flexen',\n",
       "       'Jacob Rhame', 'Jamie Callahan', 'Kevin McGowan', 'Kevin Plawecki',\n",
       "       'Neil Ramirez', 'Paul Sewald', 'Tommy Milone', 'Tyler Pill',\n",
       "       'Zack Wheeler'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# find players in test data but not training data\n",
    "mets_2017_discrepancies = pd.Index(mets_df2_small['player_name']).difference(pd.Index(mets_df_small['player_name']))\n",
    "mets_2017_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>spin_dir</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>player_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>87.5</td>\n",
       "      <td>-1.3697</td>\n",
       "      <td>4.9081</td>\n",
       "      <td>608384</td>\n",
       "      <td>606160</td>\n",
       "      <td>home_run</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.790</td>\n",
       "      <td>1.388</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>73</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.4</td>\n",
       "      <td>-1.5430</td>\n",
       "      <td>5.4642</td>\n",
       "      <td>608384</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>73</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.2</td>\n",
       "      <td>-1.1618</td>\n",
       "      <td>4.9754</td>\n",
       "      <td>608384</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>73</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.9</td>\n",
       "      <td>-1.1488</td>\n",
       "      <td>4.9740</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>walk</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>72</td>\n",
       "      <td>7</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>81.5</td>\n",
       "      <td>-1.4822</td>\n",
       "      <td>5.2082</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>2</td>\n",
       "      <td>72</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>80.6</td>\n",
       "      <td>-1.4527</td>\n",
       "      <td>5.1770</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>72</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.4</td>\n",
       "      <td>-1.3541</td>\n",
       "      <td>5.2354</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>72</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.5</td>\n",
       "      <td>-1.2772</td>\n",
       "      <td>5.1228</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>72</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>83.9</td>\n",
       "      <td>-1.6226</td>\n",
       "      <td>5.1097</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>72</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.2</td>\n",
       "      <td>-1.4539</td>\n",
       "      <td>5.2896</td>\n",
       "      <td>656555</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>72</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>93.8</td>\n",
       "      <td>-1.5558</td>\n",
       "      <td>5.3958</td>\n",
       "      <td>571437</td>\n",
       "      <td>606160</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.049</td>\n",
       "      <td>0.046</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>71</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.8</td>\n",
       "      <td>-1.2793</td>\n",
       "      <td>5.3133</td>\n",
       "      <td>546318</td>\n",
       "      <td>606160</td>\n",
       "      <td>double</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.475</td>\n",
       "      <td>0.552</td>\n",
       "      <td>1.25</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>70</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.5</td>\n",
       "      <td>-1.0396</td>\n",
       "      <td>5.0925</td>\n",
       "      <td>514917</td>\n",
       "      <td>606160</td>\n",
       "      <td>walk</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>69</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.7</td>\n",
       "      <td>-1.1966</td>\n",
       "      <td>4.9457</td>\n",
       "      <td>514917</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>69</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.1</td>\n",
       "      <td>-0.8477</td>\n",
       "      <td>5.2587</td>\n",
       "      <td>514917</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>69</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>86.8</td>\n",
       "      <td>-1.2664</td>\n",
       "      <td>5.1551</td>\n",
       "      <td>514917</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>69</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.8</td>\n",
       "      <td>-1.2239</td>\n",
       "      <td>5.1913</td>\n",
       "      <td>571841</td>\n",
       "      <td>606160</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.013</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>68</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.0</td>\n",
       "      <td>-0.8082</td>\n",
       "      <td>5.3119</td>\n",
       "      <td>571841</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>68</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.6</td>\n",
       "      <td>-1.0027</td>\n",
       "      <td>5.3846</td>\n",
       "      <td>571841</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>68</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.0</td>\n",
       "      <td>-1.0656</td>\n",
       "      <td>5.0989</td>\n",
       "      <td>641487</td>\n",
       "      <td>606160</td>\n",
       "      <td>walk</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.7</td>\n",
       "      <td>-1.3012</td>\n",
       "      <td>5.3029</td>\n",
       "      <td>641487</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>67</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.3</td>\n",
       "      <td>-1.0419</td>\n",
       "      <td>4.9754</td>\n",
       "      <td>641487</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>93.3</td>\n",
       "      <td>-1.5212</td>\n",
       "      <td>5.2627</td>\n",
       "      <td>641487</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.2</td>\n",
       "      <td>-1.1084</td>\n",
       "      <td>5.1640</td>\n",
       "      <td>641487</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>93.7</td>\n",
       "      <td>-1.3451</td>\n",
       "      <td>5.3611</td>\n",
       "      <td>641487</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>83.7</td>\n",
       "      <td>-1.2011</td>\n",
       "      <td>5.2850</td>\n",
       "      <td>595284</td>\n",
       "      <td>606160</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>7</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>87.7</td>\n",
       "      <td>-1.2362</td>\n",
       "      <td>4.9174</td>\n",
       "      <td>595284</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.8</td>\n",
       "      <td>-1.2024</td>\n",
       "      <td>4.8435</td>\n",
       "      <td>595284</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.5</td>\n",
       "      <td>-1.4715</td>\n",
       "      <td>5.1201</td>\n",
       "      <td>595284</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rafael Montero</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.9</td>\n",
       "      <td>-1.3899</td>\n",
       "      <td>5.2420</td>\n",
       "      <td>595284</td>\n",
       "      <td>606160</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.5</td>\n",
       "      <td>-0.7407</td>\n",
       "      <td>6.5265</td>\n",
       "      <td>542255</td>\n",
       "      <td>592789</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.188</td>\n",
       "      <td>0.176</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.2</td>\n",
       "      <td>-0.6169</td>\n",
       "      <td>6.5295</td>\n",
       "      <td>542255</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.6</td>\n",
       "      <td>-0.5160</td>\n",
       "      <td>6.6724</td>\n",
       "      <td>542255</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>18</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.9</td>\n",
       "      <td>-0.5868</td>\n",
       "      <td>6.6820</td>\n",
       "      <td>527054</td>\n",
       "      <td>592789</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>17</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.3</td>\n",
       "      <td>-0.4110</td>\n",
       "      <td>6.6863</td>\n",
       "      <td>527054</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.3</td>\n",
       "      <td>-0.4369</td>\n",
       "      <td>6.6411</td>\n",
       "      <td>527054</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>96.3</td>\n",
       "      <td>-0.6155</td>\n",
       "      <td>6.6334</td>\n",
       "      <td>452095</td>\n",
       "      <td>592789</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.031</td>\n",
       "      <td>0.038</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>16</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>96.3</td>\n",
       "      <td>-0.5264</td>\n",
       "      <td>6.7320</td>\n",
       "      <td>452095</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>4</td>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>94.4</td>\n",
       "      <td>-0.7982</td>\n",
       "      <td>6.5637</td>\n",
       "      <td>611177</td>\n",
       "      <td>592789</td>\n",
       "      <td>force_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.075</td>\n",
       "      <td>0.069</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>96.5</td>\n",
       "      <td>-0.6503</td>\n",
       "      <td>6.6507</td>\n",
       "      <td>611177</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.7</td>\n",
       "      <td>-0.5175</td>\n",
       "      <td>6.7392</td>\n",
       "      <td>408252</td>\n",
       "      <td>592789</td>\n",
       "      <td>single</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.421</td>\n",
       "      <td>0.387</td>\n",
       "      <td>0.90</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>99.3</td>\n",
       "      <td>-0.4850</td>\n",
       "      <td>6.6072</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.5</td>\n",
       "      <td>-0.5870</td>\n",
       "      <td>6.5478</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>91.8</td>\n",
       "      <td>-0.4909</td>\n",
       "      <td>6.5669</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.2</td>\n",
       "      <td>-0.5051</td>\n",
       "      <td>6.4096</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.2</td>\n",
       "      <td>-0.5413</td>\n",
       "      <td>6.6863</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.8</td>\n",
       "      <td>-0.6948</td>\n",
       "      <td>6.5276</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.2</td>\n",
       "      <td>-0.5683</td>\n",
       "      <td>6.7260</td>\n",
       "      <td>455976</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>92.4</td>\n",
       "      <td>-0.4049</td>\n",
       "      <td>6.6797</td>\n",
       "      <td>461314</td>\n",
       "      <td>592789</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.285</td>\n",
       "      <td>0.268</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.8</td>\n",
       "      <td>-0.4321</td>\n",
       "      <td>6.7084</td>\n",
       "      <td>461314</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.7</td>\n",
       "      <td>-0.4567</td>\n",
       "      <td>6.7060</td>\n",
       "      <td>461314</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>92.1</td>\n",
       "      <td>-0.5694</td>\n",
       "      <td>6.6610</td>\n",
       "      <td>461314</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.1</td>\n",
       "      <td>-0.6617</td>\n",
       "      <td>6.6423</td>\n",
       "      <td>461314</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.7</td>\n",
       "      <td>-0.4719</td>\n",
       "      <td>6.6536</td>\n",
       "      <td>518692</td>\n",
       "      <td>592789</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.010</td>\n",
       "      <td>0.012</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.4</td>\n",
       "      <td>-0.7450</td>\n",
       "      <td>6.5289</td>\n",
       "      <td>518692</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.7</td>\n",
       "      <td>-0.5772</td>\n",
       "      <td>6.6897</td>\n",
       "      <td>621020</td>\n",
       "      <td>592789</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>99.2</td>\n",
       "      <td>-0.6037</td>\n",
       "      <td>6.6813</td>\n",
       "      <td>621020</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>92.3</td>\n",
       "      <td>-0.6609</td>\n",
       "      <td>6.5505</td>\n",
       "      <td>542255</td>\n",
       "      <td>592789</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.0</td>\n",
       "      <td>-0.5082</td>\n",
       "      <td>6.7583</td>\n",
       "      <td>542255</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Noah Syndergaard</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.3</td>\n",
       "      <td>-0.5291</td>\n",
       "      <td>6.6705</td>\n",
       "      <td>542255</td>\n",
       "      <td>592789</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>18686 rows × 78 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 pitch_type   game_date release_speed release_pos_x  \\\n",
       "player_name                                                           \n",
       "Rafael Montero           CH  2017-10-01          87.5       -1.3697   \n",
       "Rafael Montero           FF  2017-10-01          94.4       -1.5430   \n",
       "Rafael Montero           CH  2017-10-01          89.2       -1.1618   \n",
       "Rafael Montero           SL  2017-10-01          85.9       -1.1488   \n",
       "Rafael Montero           SL  2017-10-01          81.5       -1.4822   \n",
       "Rafael Montero           SL  2017-10-01          80.6       -1.4527   \n",
       "Rafael Montero           FF  2017-10-01          94.4       -1.3541   \n",
       "Rafael Montero           FF  2017-10-01          89.5       -1.2772   \n",
       "Rafael Montero           SL  2017-10-01          83.9       -1.6226   \n",
       "Rafael Montero           FF  2017-10-01          94.2       -1.4539   \n",
       "Rafael Montero           FF  2017-10-01          93.8       -1.5558   \n",
       "Rafael Montero           FF  2017-10-01          94.8       -1.2793   \n",
       "Rafael Montero           FF  2017-10-01          94.5       -1.0396   \n",
       "Rafael Montero           CH  2017-10-01          88.7       -1.1966   \n",
       "Rafael Montero           FF  2017-10-01          94.1       -0.8477   \n",
       "Rafael Montero           SL  2017-10-01          86.8       -1.2664   \n",
       "Rafael Montero           CH  2017-10-01          88.8       -1.2239   \n",
       "Rafael Montero           FF  2017-10-01          94.0       -0.8082   \n",
       "Rafael Montero           FF  2017-10-01          94.6       -1.0027   \n",
       "Rafael Montero           CH  2017-10-01          88.0       -1.0656   \n",
       "Rafael Montero           FF  2017-10-01          94.7       -1.3012   \n",
       "Rafael Montero           CH  2017-10-01          88.3       -1.0419   \n",
       "Rafael Montero           FF  2017-10-01          93.3       -1.5212   \n",
       "Rafael Montero           CH  2017-10-01          85.2       -1.1084   \n",
       "Rafael Montero           FF  2017-10-01          93.7       -1.3451   \n",
       "Rafael Montero           SL  2017-10-01          83.7       -1.2011   \n",
       "Rafael Montero           CH  2017-10-01          87.7       -1.2362   \n",
       "Rafael Montero           CH  2017-10-01          88.8       -1.2024   \n",
       "Rafael Montero           SL  2017-10-01          85.5       -1.4715   \n",
       "Rafael Montero           FF  2017-10-01          89.9       -1.3899   \n",
       "...                     ...         ...           ...           ...   \n",
       "Noah Syndergaard         CH  2017-04-03          89.5       -0.7407   \n",
       "Noah Syndergaard         CH  2017-04-03          89.2       -0.6169   \n",
       "Noah Syndergaard         SI  2017-04-03          97.6       -0.5160   \n",
       "Noah Syndergaard         SL  2017-04-03          89.9       -0.5868   \n",
       "Noah Syndergaard         SI  2017-04-03          97.3       -0.4110   \n",
       "Noah Syndergaard         SI  2017-04-03          97.3       -0.4369   \n",
       "Noah Syndergaard         SI  2017-04-03          96.3       -0.6155   \n",
       "Noah Syndergaard         SI  2017-04-03          96.3       -0.5264   \n",
       "Noah Syndergaard         SI  2017-04-03          94.4       -0.7982   \n",
       "Noah Syndergaard         SI  2017-04-03          96.5       -0.6503   \n",
       "Noah Syndergaard         SI  2017-04-03          98.7       -0.5175   \n",
       "Noah Syndergaard         SI  2017-04-03          99.3       -0.4850   \n",
       "Noah Syndergaard         FF  2017-04-03          98.5       -0.5870   \n",
       "Noah Syndergaard         SL  2017-04-03          91.8       -0.4909   \n",
       "Noah Syndergaard         CH  2017-04-03          89.2       -0.5051   \n",
       "Noah Syndergaard         SI  2017-04-03          97.2       -0.5413   \n",
       "Noah Syndergaard         CH  2017-04-03          89.8       -0.6948   \n",
       "Noah Syndergaard         SI  2017-04-03          97.2       -0.5683   \n",
       "Noah Syndergaard         SL  2017-04-03          92.4       -0.4049   \n",
       "Noah Syndergaard         FF  2017-04-03          98.8       -0.4321   \n",
       "Noah Syndergaard         SI  2017-04-03          97.7       -0.4567   \n",
       "Noah Syndergaard         SL  2017-04-03          92.1       -0.5694   \n",
       "Noah Syndergaard         SI  2017-04-03          97.1       -0.6617   \n",
       "Noah Syndergaard         SI  2017-04-03          98.7       -0.4719   \n",
       "Noah Syndergaard         CH  2017-04-03          89.4       -0.7450   \n",
       "Noah Syndergaard         SI  2017-04-03          97.7       -0.5772   \n",
       "Noah Syndergaard         SI  2017-04-03          99.2       -0.6037   \n",
       "Noah Syndergaard         SL  2017-04-03          92.3       -0.6609   \n",
       "Noah Syndergaard         SI  2017-04-03          98.0       -0.5082   \n",
       "Noah Syndergaard         SI  2017-04-03          98.3       -0.5291   \n",
       "\n",
       "                 release_pos_z  batter  pitcher     events  \\\n",
       "player_name                                                  \n",
       "Rafael Montero          4.9081  608384   606160   home_run   \n",
       "Rafael Montero          5.4642  608384   606160       null   \n",
       "Rafael Montero          4.9754  608384   606160       null   \n",
       "Rafael Montero          4.9740  656555   606160       walk   \n",
       "Rafael Montero          5.2082  656555   606160       null   \n",
       "Rafael Montero          5.1770  656555   606160       null   \n",
       "Rafael Montero          5.2354  656555   606160       null   \n",
       "Rafael Montero          5.1228  656555   606160       null   \n",
       "Rafael Montero          5.1097  656555   606160       null   \n",
       "Rafael Montero          5.2896  656555   606160       null   \n",
       "Rafael Montero          5.3958  571437   606160  field_out   \n",
       "Rafael Montero          5.3133  546318   606160     double   \n",
       "Rafael Montero          5.0925  514917   606160       walk   \n",
       "Rafael Montero          4.9457  514917   606160       null   \n",
       "Rafael Montero          5.2587  514917   606160       null   \n",
       "Rafael Montero          5.1551  514917   606160       null   \n",
       "Rafael Montero          5.1913  571841   606160  field_out   \n",
       "Rafael Montero          5.3119  571841   606160       null   \n",
       "Rafael Montero          5.3846  571841   606160       null   \n",
       "Rafael Montero          5.0989  641487   606160       walk   \n",
       "Rafael Montero          5.3029  641487   606160       null   \n",
       "Rafael Montero          4.9754  641487   606160       null   \n",
       "Rafael Montero          5.2627  641487   606160       null   \n",
       "Rafael Montero          5.1640  641487   606160       null   \n",
       "Rafael Montero          5.3611  641487   606160       null   \n",
       "Rafael Montero          5.2850  595284   606160  strikeout   \n",
       "Rafael Montero          4.9174  595284   606160       null   \n",
       "Rafael Montero          4.8435  595284   606160       null   \n",
       "Rafael Montero          5.1201  595284   606160       null   \n",
       "Rafael Montero          5.2420  595284   606160       null   \n",
       "...                        ...     ...      ...        ...   \n",
       "Noah Syndergaard        6.5265  542255   592789  field_out   \n",
       "Noah Syndergaard        6.5295  542255   592789       null   \n",
       "Noah Syndergaard        6.6724  542255   592789       null   \n",
       "Noah Syndergaard        6.6820  527054   592789  strikeout   \n",
       "Noah Syndergaard        6.6863  527054   592789       null   \n",
       "Noah Syndergaard        6.6411  527054   592789       null   \n",
       "Noah Syndergaard        6.6334  452095   592789  field_out   \n",
       "Noah Syndergaard        6.7320  452095   592789       null   \n",
       "Noah Syndergaard        6.5637  611177   592789  force_out   \n",
       "Noah Syndergaard        6.6507  611177   592789       null   \n",
       "Noah Syndergaard        6.7392  408252   592789     single   \n",
       "Noah Syndergaard        6.6072  455976   592789  strikeout   \n",
       "Noah Syndergaard        6.5478  455976   592789       null   \n",
       "Noah Syndergaard        6.5669  455976   592789       null   \n",
       "Noah Syndergaard        6.4096  455976   592789       null   \n",
       "Noah Syndergaard        6.6863  455976   592789       null   \n",
       "Noah Syndergaard        6.5276  455976   592789       null   \n",
       "Noah Syndergaard        6.7260  455976   592789       null   \n",
       "Noah Syndergaard        6.6797  461314   592789  field_out   \n",
       "Noah Syndergaard        6.7084  461314   592789       null   \n",
       "Noah Syndergaard        6.7060  461314   592789       null   \n",
       "Noah Syndergaard        6.6610  461314   592789       null   \n",
       "Noah Syndergaard        6.6423  461314   592789       null   \n",
       "Noah Syndergaard        6.6536  518692   592789  field_out   \n",
       "Noah Syndergaard        6.5289  518692   592789       null   \n",
       "Noah Syndergaard        6.6897  621020   592789  field_out   \n",
       "Noah Syndergaard        6.6813  621020   592789       null   \n",
       "Noah Syndergaard        6.5505  542255   592789  strikeout   \n",
       "Noah Syndergaard        6.7583  542255   592789       null   \n",
       "Noah Syndergaard        6.6705  542255   592789       null   \n",
       "\n",
       "                           description  spin_dir  ...    \\\n",
       "player_name                                       ...     \n",
       "Rafael Montero     hit_into_play_score       NaN  ...     \n",
       "Rafael Montero                    foul       NaN  ...     \n",
       "Rafael Montero            blocked_ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    foul       NaN  ...     \n",
       "Rafael Montero           called_strike       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero         swinging_strike       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero     hit_into_play_score       NaN  ...     \n",
       "Rafael Montero     hit_into_play_score       NaN  ...     \n",
       "Rafael Montero            blocked_ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero           hit_into_play       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero           called_strike       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    foul       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero           called_strike       NaN  ...     \n",
       "Rafael Montero         swinging_strike       NaN  ...     \n",
       "Rafael Montero                    foul       NaN  ...     \n",
       "Rafael Montero           called_strike       NaN  ...     \n",
       "Rafael Montero                    ball       NaN  ...     \n",
       "Rafael Montero           called_strike       NaN  ...     \n",
       "...                                ...       ...  ...     \n",
       "Noah Syndergaard         hit_into_play       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard         called_strike       NaN  ...     \n",
       "Noah Syndergaard         called_strike       NaN  ...     \n",
       "Noah Syndergaard         hit_into_play       NaN  ...     \n",
       "Noah Syndergaard                  foul       NaN  ...     \n",
       "Noah Syndergaard         hit_into_play       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard  hit_into_play_no_out       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard                  foul       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard         called_strike       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard         hit_into_play       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard         hit_into_play       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard         hit_into_play       NaN  ...     \n",
       "Noah Syndergaard                  ball       NaN  ...     \n",
       "Noah Syndergaard       swinging_strike       NaN  ...     \n",
       "Noah Syndergaard                  foul       NaN  ...     \n",
       "Noah Syndergaard                  foul       NaN  ...     \n",
       "\n",
       "                  estimated_ba_using_speedangle  \\\n",
       "player_name                                       \n",
       "Rafael Montero                            0.790   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.049   \n",
       "Rafael Montero                            0.475   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.013   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "Rafael Montero                            0.000   \n",
       "...                                         ...   \n",
       "Noah Syndergaard                          0.188   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.031   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.075   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.421   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.285   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.010   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.044   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "Noah Syndergaard                          0.000   \n",
       "\n",
       "                  estimated_woba_using_speedangle  woba_value woba_denom  \\\n",
       "player_name                                                                \n",
       "Rafael Montero                              1.388        2.00          1   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        0.70          1   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.046        0.00          1   \n",
       "Rafael Montero                              0.552        1.25          1   \n",
       "Rafael Montero                              0.000        0.70          1   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.014        0.00          1   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        0.70          1   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        0.00          1   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "Rafael Montero                              0.000        null       null   \n",
       "...                                           ...         ...        ...   \n",
       "Noah Syndergaard                            0.176        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.038        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.069        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.387        0.90          1   \n",
       "Noah Syndergaard                            0.000        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.268        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.012        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.042        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        0.00          1   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "Noah Syndergaard                            0.000        null       null   \n",
       "\n",
       "                 babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "player_name                                                               \n",
       "Rafael Montero             0         3                  6            73   \n",
       "Rafael Montero          null      null               null            73   \n",
       "Rafael Montero          null      null               null            73   \n",
       "Rafael Montero             0         0               null            72   \n",
       "Rafael Montero          null      null                  2            72   \n",
       "Rafael Montero          null      null               null            72   \n",
       "Rafael Montero          null      null               null            72   \n",
       "Rafael Montero          null      null               null            72   \n",
       "Rafael Montero          null      null               null            72   \n",
       "Rafael Montero          null      null               null            72   \n",
       "Rafael Montero             0         0                  1            71   \n",
       "Rafael Montero             1         1                  4            70   \n",
       "Rafael Montero             0         0               null            69   \n",
       "Rafael Montero          null      null               null            69   \n",
       "Rafael Montero          null      null               null            69   \n",
       "Rafael Montero          null      null               null            69   \n",
       "Rafael Montero             0         0                  3            68   \n",
       "Rafael Montero          null      null               null            68   \n",
       "Rafael Montero          null      null               null            68   \n",
       "Rafael Montero             0         0               null            67   \n",
       "Rafael Montero          null      null                  1            67   \n",
       "Rafael Montero          null      null               null            67   \n",
       "Rafael Montero          null      null               null            67   \n",
       "Rafael Montero          null      null               null            67   \n",
       "Rafael Montero          null      null               null            67   \n",
       "Rafael Montero             0         0               null            63   \n",
       "Rafael Montero          null      null               null            63   \n",
       "Rafael Montero          null      null               null            63   \n",
       "Rafael Montero          null      null               null            63   \n",
       "Rafael Montero          null      null               null            63   \n",
       "...                      ...       ...                ...           ...   \n",
       "Noah Syndergaard           0         0                  2            18   \n",
       "Noah Syndergaard        null      null               null            18   \n",
       "Noah Syndergaard        null      null               null            18   \n",
       "Noah Syndergaard           0         0               null            17   \n",
       "Noah Syndergaard        null      null               null            17   \n",
       "Noah Syndergaard        null      null               null            17   \n",
       "Noah Syndergaard           0         0                  3            16   \n",
       "Noah Syndergaard        null      null                  4            16   \n",
       "Noah Syndergaard           0         0                  2            11   \n",
       "Noah Syndergaard        null      null               null            11   \n",
       "Noah Syndergaard           1         0                  2            10   \n",
       "Noah Syndergaard           0         0               null             9   \n",
       "Noah Syndergaard        null      null                  3             9   \n",
       "Noah Syndergaard        null      null               null             9   \n",
       "Noah Syndergaard        null      null               null             9   \n",
       "Noah Syndergaard        null      null               null             9   \n",
       "Noah Syndergaard        null      null               null             9   \n",
       "Noah Syndergaard        null      null               null             9   \n",
       "Noah Syndergaard           0         0                  2             8   \n",
       "Noah Syndergaard        null      null               null             8   \n",
       "Noah Syndergaard        null      null               null             8   \n",
       "Noah Syndergaard        null      null               null             8   \n",
       "Noah Syndergaard        null      null               null             8   \n",
       "Noah Syndergaard           0         0                  3             3   \n",
       "Noah Syndergaard        null      null               null             3   \n",
       "Noah Syndergaard           0         0                  2             2   \n",
       "Noah Syndergaard        null      null               null             2   \n",
       "Noah Syndergaard           0         0               null             1   \n",
       "Noah Syndergaard        null      null                  4             1   \n",
       "Noah Syndergaard        null      null                  4             1   \n",
       "\n",
       "                 pitch_number   home  \n",
       "player_name                           \n",
       "Rafael Montero              3  false  \n",
       "Rafael Montero              2  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              7  false  \n",
       "Rafael Montero              6  false  \n",
       "Rafael Montero              5  false  \n",
       "Rafael Montero              4  false  \n",
       "Rafael Montero              3  false  \n",
       "Rafael Montero              2  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              4  false  \n",
       "Rafael Montero              3  false  \n",
       "Rafael Montero              2  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              3  false  \n",
       "Rafael Montero              2  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              6  false  \n",
       "Rafael Montero              5  false  \n",
       "Rafael Montero              4  false  \n",
       "Rafael Montero              3  false  \n",
       "Rafael Montero              2  false  \n",
       "Rafael Montero              1  false  \n",
       "Rafael Montero              7  false  \n",
       "Rafael Montero              6  false  \n",
       "Rafael Montero              5  false  \n",
       "Rafael Montero              4  false  \n",
       "Rafael Montero              3  false  \n",
       "...                       ...    ...  \n",
       "Noah Syndergaard            3   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            3   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            7   true  \n",
       "Noah Syndergaard            6   true  \n",
       "Noah Syndergaard            5   true  \n",
       "Noah Syndergaard            4   true  \n",
       "Noah Syndergaard            3   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            5   true  \n",
       "Noah Syndergaard            4   true  \n",
       "Noah Syndergaard            3   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "Noah Syndergaard            3   true  \n",
       "Noah Syndergaard            2   true  \n",
       "Noah Syndergaard            1   true  \n",
       "\n",
       "[18686 rows x 78 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add home column to 2017 test data\n",
    "mets_df2['home'] = mets_df2['home_team'].apply(lambda x: 'true' if x == 'NYM' else 'false')\n",
    "\n",
    "# drop players that are in test data but not training data\n",
    "mets_df2.set_index('player_name', inplace=True)\n",
    "mets_df2.drop(mets_2017_discrepancies, inplace=True)\n",
    "mets_df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true     12328\n",
       "false    11284\n",
       "Name: home, dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add the home column to unmodified training and test files\n",
    "mets_df['home'] = mets_df['home_team'].apply(lambda x: 'true' if x == 'NYM' else 'false')\n",
    "mets_df['home'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Drop players that retired or unsigned in 2017\n",
    "mets_df.set_index('player_name', inplace=True)\n",
    "mets_df.drop(labels=pd.Index(['Jim Henderson', 'Jonathan Niese']), inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mets_df_add = pd.read_csv('2017_Mets_ADD.csv')\n",
    "\n",
    "#Here add home column to new pitchers\n",
    "mets_dict = {'Bartolo Colon': ['ATL', 'MIN'], 'Gabriel Ynoa': ['BAL'], \n",
    "            'Logan Verrett': ['BAL']}\n",
    "columnToAdd = []\n",
    "for index, row in mets_df_add.iterrows():\n",
    "    dictVal = mets_dict.get(mets_df_add.at[index, 'player_name'])\n",
    "    if (dictVal is not None) and (mets_df_add.at[index, 'home_team'] in dictVal):\n",
    "        columnToAdd.append('true')\n",
    "    else:\n",
    "        columnToAdd.append('false')\n",
    "\n",
    "mets_df_add['home'] = pd.Series(columnToAdd)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Combine the test dataframes into one and write to csv\n",
    "mets_df_add.set_index('player_name', inplace=True)\n",
    "mets_test_combined = pd.concat([mets_df2, mets_df_add])\n",
    "mets_test_combined.to_csv('2017_Mets_COMBINED.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Finished cleaning Mets!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\koselekt\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2717: DtypeWarning: Columns (2,14,27,28,29,30,44,45,46,47,48,49,50,51) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    }
   ],
   "source": [
    "reds_df_small = pd.read_csv('2016_Reds.csv')\n",
    "reds_df2_small = pd.read_csv('2017_Reds.csv')\n",
    "reds_df = pd.read_csv('2016_Reds_FULL.csv')\n",
    "reds_df2 = pd.read_csv('2017_Reds_FULL.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['A.J. Morris', 'Abel De Los Santos', 'Alfredo Simon',\n",
       "       'Anthony DeSclafani', 'Caleb Cotham', 'Dan Straily', 'Daniel Wright',\n",
       "       'Dayan Diaz', 'Drew Hayes', 'J.J. Hoover', 'JC Ramirez', 'John Lamb',\n",
       "       'Jon Moscot', 'Josh Smith', 'Jumbo Diaz', 'Keyvius Sampson',\n",
       "       'Layne Somsen', 'Matt Magill', 'Ross Ohlendorf', 'Steve Delabar',\n",
       "       'Tim Melville', 'Tyler Holt'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find players present in training data but not test data\n",
    "reds_discrepancies = pd.Index(reds_df_small['player_name']).difference(pd.Index(reds_df2_small['player_name']))\n",
    "reds_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Alejandro Chacin', 'Amir Garrett', 'Ariel Hernandez',\n",
       "       'Asher Wojciechowski', 'Austin Brice', 'Barrett Astin',\n",
       "       'Bronson Arroyo', 'Deck McGuire', 'Drew Storen', 'Jackson Stephens',\n",
       "       'Jake Buchanan', 'Keury Mella', 'Kevin Shackelford',\n",
       "       'Lisalverto Bonilla', 'Luis Castillo', 'Luke Farrell', 'Rookie Davis',\n",
       "       'Sal Romano', 'Scooter Gennett', 'Scott Feldman', 'Tyler Mahle'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# find players in test data but not training data\n",
    "reds_2017_discrepancies = pd.Index(reds_df2_small['player_name']).difference(pd.Index(reds_df_small['player_name']))\n",
    "reds_2017_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>spin_dir</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>player_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Raisel Iglesias</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>86.5</td>\n",
       "      <td>-2.3736</td>\n",
       "      <td>5.3274</td>\n",
       "      <td>450314</td>\n",
       "      <td>628452</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.149</td>\n",
       "      <td>0.137</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>69</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Raisel Iglesias</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.3</td>\n",
       "      <td>-2.1675</td>\n",
       "      <td>5.5148</td>\n",
       "      <td>502273</td>\n",
       "      <td>628452</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.087</td>\n",
       "      <td>0.081</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>68</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Raisel Iglesias</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.4</td>\n",
       "      <td>-1.5702</td>\n",
       "      <td>5.9901</td>\n",
       "      <td>546991</td>\n",
       "      <td>628452</td>\n",
       "      <td>home_run</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.919</td>\n",
       "      <td>1.777</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>67</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Raisel Iglesias</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.9</td>\n",
       "      <td>-2.3013</td>\n",
       "      <td>5.5905</td>\n",
       "      <td>546991</td>\n",
       "      <td>628452</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Raisel Iglesias</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.5</td>\n",
       "      <td>-1.7360</td>\n",
       "      <td>5.6476</td>\n",
       "      <td>543089</td>\n",
       "      <td>628452</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.491</td>\n",
       "      <td>0.460</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>66</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>97.0</td>\n",
       "      <td>1.5314</td>\n",
       "      <td>6.2893</td>\n",
       "      <td>656941</td>\n",
       "      <td>593974</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.193</td>\n",
       "      <td>0.178</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>53</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>86.5</td>\n",
       "      <td>2.0453</td>\n",
       "      <td>5.7984</td>\n",
       "      <td>570240</td>\n",
       "      <td>593974</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>52</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>97.1</td>\n",
       "      <td>1.4965</td>\n",
       "      <td>6.3042</td>\n",
       "      <td>570240</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>52</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.5</td>\n",
       "      <td>1.6259</td>\n",
       "      <td>6.3108</td>\n",
       "      <td>570240</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>52</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.5</td>\n",
       "      <td>1.8785</td>\n",
       "      <td>6.2267</td>\n",
       "      <td>570240</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>52</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.6</td>\n",
       "      <td>1.6190</td>\n",
       "      <td>6.3243</td>\n",
       "      <td>570240</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>52</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>87.5</td>\n",
       "      <td>1.8804</td>\n",
       "      <td>5.7556</td>\n",
       "      <td>450314</td>\n",
       "      <td>593974</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>51</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>87.5</td>\n",
       "      <td>1.9536</td>\n",
       "      <td>5.9556</td>\n",
       "      <td>450314</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>51</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.5</td>\n",
       "      <td>1.9495</td>\n",
       "      <td>5.9362</td>\n",
       "      <td>450314</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>51</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.2</td>\n",
       "      <td>1.7824</td>\n",
       "      <td>6.2477</td>\n",
       "      <td>450314</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>51</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.6</td>\n",
       "      <td>2.1172</td>\n",
       "      <td>5.9853</td>\n",
       "      <td>450314</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>51</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wandy Peralta</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.1</td>\n",
       "      <td>1.9584</td>\n",
       "      <td>6.3045</td>\n",
       "      <td>450314</td>\n",
       "      <td>593974</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>51</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>96.5</td>\n",
       "      <td>-2.6842</td>\n",
       "      <td>5.8879</td>\n",
       "      <td>502273</td>\n",
       "      <td>547179</td>\n",
       "      <td>force_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.075</td>\n",
       "      <td>0.069</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>68</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>96.3</td>\n",
       "      <td>-2.6021</td>\n",
       "      <td>6.0208</td>\n",
       "      <td>502273</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>68</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>96.1</td>\n",
       "      <td>-2.5783</td>\n",
       "      <td>5.9933</td>\n",
       "      <td>502273</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>68</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>97.1</td>\n",
       "      <td>-2.4437</td>\n",
       "      <td>6.0417</td>\n",
       "      <td>488671</td>\n",
       "      <td>547179</td>\n",
       "      <td>walk</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>95.0</td>\n",
       "      <td>-2.5939</td>\n",
       "      <td>6.0913</td>\n",
       "      <td>488671</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>95.1</td>\n",
       "      <td>-2.6173</td>\n",
       "      <td>6.0174</td>\n",
       "      <td>488671</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>97.3</td>\n",
       "      <td>-2.6558</td>\n",
       "      <td>6.0326</td>\n",
       "      <td>488671</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>96.0</td>\n",
       "      <td>-2.7993</td>\n",
       "      <td>5.9575</td>\n",
       "      <td>488671</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>67</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>97.5</td>\n",
       "      <td>-2.7297</td>\n",
       "      <td>5.9561</td>\n",
       "      <td>664023</td>\n",
       "      <td>547179</td>\n",
       "      <td>home_run</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.888</td>\n",
       "      <td>1.554</td>\n",
       "      <td>2.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>66</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>90.6</td>\n",
       "      <td>-2.7519</td>\n",
       "      <td>6.1430</td>\n",
       "      <td>664023</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>97.3</td>\n",
       "      <td>-2.7874</td>\n",
       "      <td>5.8371</td>\n",
       "      <td>664023</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>97.5</td>\n",
       "      <td>-2.7522</td>\n",
       "      <td>6.0136</td>\n",
       "      <td>656941</td>\n",
       "      <td>547179</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>foul_tip</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-09-29</td>\n",
       "      <td>97.3</td>\n",
       "      <td>-2.7441</td>\n",
       "      <td>5.8934</td>\n",
       "      <td>656941</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>92.1</td>\n",
       "      <td>-1.5942</td>\n",
       "      <td>5.8592</td>\n",
       "      <td>514917</td>\n",
       "      <td>547179</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.444</td>\n",
       "      <td>0.561</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>66</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>92.6</td>\n",
       "      <td>-1.5412</td>\n",
       "      <td>5.8733</td>\n",
       "      <td>514917</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>79.3</td>\n",
       "      <td>-1.3425</td>\n",
       "      <td>5.9333</td>\n",
       "      <td>514917</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>93.7</td>\n",
       "      <td>-1.5365</td>\n",
       "      <td>5.8585</td>\n",
       "      <td>514917</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>93.0</td>\n",
       "      <td>-1.4345</td>\n",
       "      <td>5.9186</td>\n",
       "      <td>514917</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>94.4</td>\n",
       "      <td>-1.4724</td>\n",
       "      <td>5.9129</td>\n",
       "      <td>595426</td>\n",
       "      <td>547179</td>\n",
       "      <td>walk</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.7</td>\n",
       "      <td>-1.3976</td>\n",
       "      <td>5.9656</td>\n",
       "      <td>595426</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.4</td>\n",
       "      <td>-1.5594</td>\n",
       "      <td>6.0537</td>\n",
       "      <td>595426</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>93.9</td>\n",
       "      <td>-1.5238</td>\n",
       "      <td>5.8855</td>\n",
       "      <td>595426</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>94.7</td>\n",
       "      <td>-1.6124</td>\n",
       "      <td>5.9551</td>\n",
       "      <td>595426</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>65</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>80.6</td>\n",
       "      <td>-1.3507</td>\n",
       "      <td>6.0862</td>\n",
       "      <td>520471</td>\n",
       "      <td>547179</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike_blocked</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.133</td>\n",
       "      <td>0.125</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>64</td>\n",
       "      <td>6</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>79.4</td>\n",
       "      <td>-1.2817</td>\n",
       "      <td>5.8976</td>\n",
       "      <td>520471</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>64</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.1</td>\n",
       "      <td>-1.4090</td>\n",
       "      <td>6.2112</td>\n",
       "      <td>520471</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>64</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>99.0</td>\n",
       "      <td>-1.3970</td>\n",
       "      <td>6.0419</td>\n",
       "      <td>520471</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>64</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>98.8</td>\n",
       "      <td>-1.4354</td>\n",
       "      <td>6.1005</td>\n",
       "      <td>520471</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>64</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>79.2</td>\n",
       "      <td>-1.2299</td>\n",
       "      <td>5.9649</td>\n",
       "      <td>520471</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>64</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.9</td>\n",
       "      <td>-1.4895</td>\n",
       "      <td>6.1293</td>\n",
       "      <td>519237</td>\n",
       "      <td>547179</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.379</td>\n",
       "      <td>0.355</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>63</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>92.1</td>\n",
       "      <td>-1.4055</td>\n",
       "      <td>6.1351</td>\n",
       "      <td>519237</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Michael Lorenzen</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>97.5</td>\n",
       "      <td>-1.3382</td>\n",
       "      <td>6.1365</td>\n",
       "      <td>519237</td>\n",
       "      <td>547179</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>85.6</td>\n",
       "      <td>-2.5056</td>\n",
       "      <td>6.5142</td>\n",
       "      <td>514917</td>\n",
       "      <td>502028</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.044</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>49</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.8</td>\n",
       "      <td>-2.4472</td>\n",
       "      <td>6.5367</td>\n",
       "      <td>514917</td>\n",
       "      <td>502028</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>49</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>null</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>476451</td>\n",
       "      <td>502028</td>\n",
       "      <td>triple</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.452</td>\n",
       "      <td>0.547</td>\n",
       "      <td>1.60</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>48</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>94.4</td>\n",
       "      <td>-2.4342</td>\n",
       "      <td>6.5760</td>\n",
       "      <td>476451</td>\n",
       "      <td>502028</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>48</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.8</td>\n",
       "      <td>-2.3300</td>\n",
       "      <td>6.5194</td>\n",
       "      <td>476451</td>\n",
       "      <td>502028</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>48</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>84.8</td>\n",
       "      <td>-2.3048</td>\n",
       "      <td>6.4866</td>\n",
       "      <td>520471</td>\n",
       "      <td>502028</td>\n",
       "      <td>double</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.770</td>\n",
       "      <td>0.777</td>\n",
       "      <td>1.25</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>47</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.4</td>\n",
       "      <td>-2.5120</td>\n",
       "      <td>6.4361</td>\n",
       "      <td>520471</td>\n",
       "      <td>502028</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>47</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.6</td>\n",
       "      <td>-2.4022</td>\n",
       "      <td>6.7093</td>\n",
       "      <td>520471</td>\n",
       "      <td>502028</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>47</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.6</td>\n",
       "      <td>-2.4551</td>\n",
       "      <td>6.6885</td>\n",
       "      <td>519237</td>\n",
       "      <td>502028</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.031</td>\n",
       "      <td>0.045</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>46</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.5</td>\n",
       "      <td>-2.3997</td>\n",
       "      <td>6.6798</td>\n",
       "      <td>519237</td>\n",
       "      <td>502028</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>46</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blake Wood</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>95.6</td>\n",
       "      <td>-2.3807</td>\n",
       "      <td>6.6643</td>\n",
       "      <td>571830</td>\n",
       "      <td>502028</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.068</td>\n",
       "      <td>0.074</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>45</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10739 rows × 78 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 pitch_type   game_date release_speed release_pos_x  \\\n",
       "player_name                                                           \n",
       "Raisel Iglesias          CH  2017-10-01          86.5       -2.3736   \n",
       "Raisel Iglesias          SI  2017-10-01          96.3       -2.1675   \n",
       "Raisel Iglesias          FF  2017-10-01          96.4       -1.5702   \n",
       "Raisel Iglesias          SL  2017-10-01          85.9       -2.3013   \n",
       "Raisel Iglesias          FF  2017-10-01          95.5       -1.7360   \n",
       "Wandy Peralta            FF  2017-10-01          97.0        1.5314   \n",
       "Wandy Peralta            CH  2017-10-01          86.5        2.0453   \n",
       "Wandy Peralta            FF  2017-10-01          97.1        1.4965   \n",
       "Wandy Peralta            FF  2017-10-01          96.5        1.6259   \n",
       "Wandy Peralta            FF  2017-10-01          94.5        1.8785   \n",
       "Wandy Peralta            FF  2017-10-01          96.6        1.6190   \n",
       "Wandy Peralta            CH  2017-10-01          87.5        1.8804   \n",
       "Wandy Peralta            SL  2017-10-01          87.5        1.9536   \n",
       "Wandy Peralta            CH  2017-10-01          88.5        1.9495   \n",
       "Wandy Peralta            FF  2017-10-01          96.2        1.7824   \n",
       "Wandy Peralta            CH  2017-10-01          85.6        2.1172   \n",
       "Wandy Peralta            FF  2017-10-01          95.1        1.9584   \n",
       "Michael Lorenzen         FT  2017-09-29          96.5       -2.6842   \n",
       "Michael Lorenzen         FT  2017-09-29          96.3       -2.6021   \n",
       "Michael Lorenzen         FT  2017-09-29          96.1       -2.5783   \n",
       "Michael Lorenzen         FT  2017-09-29          97.1       -2.4437   \n",
       "Michael Lorenzen         FF  2017-09-29          95.0       -2.5939   \n",
       "Michael Lorenzen         FT  2017-09-29          95.1       -2.6173   \n",
       "Michael Lorenzen         FT  2017-09-29          97.3       -2.6558   \n",
       "Michael Lorenzen         FT  2017-09-29          96.0       -2.7993   \n",
       "Michael Lorenzen         FT  2017-09-29          97.5       -2.7297   \n",
       "Michael Lorenzen         FC  2017-09-29          90.6       -2.7519   \n",
       "Michael Lorenzen         FT  2017-09-29          97.3       -2.7874   \n",
       "Michael Lorenzen         FT  2017-09-29          97.5       -2.7522   \n",
       "Michael Lorenzen         FT  2017-09-29          97.3       -2.7441   \n",
       "...                     ...         ...           ...           ...   \n",
       "Michael Lorenzen         FC  2017-04-03          92.1       -1.5942   \n",
       "Michael Lorenzen         FC  2017-04-03          92.6       -1.5412   \n",
       "Michael Lorenzen         CU  2017-04-03          79.3       -1.3425   \n",
       "Michael Lorenzen         FC  2017-04-03          93.7       -1.5365   \n",
       "Michael Lorenzen         FC  2017-04-03          93.0       -1.4345   \n",
       "Michael Lorenzen         FC  2017-04-03          94.4       -1.4724   \n",
       "Michael Lorenzen         FF  2017-04-03          97.7       -1.3976   \n",
       "Michael Lorenzen         FF  2017-04-03          97.4       -1.5594   \n",
       "Michael Lorenzen         FC  2017-04-03          93.9       -1.5238   \n",
       "Michael Lorenzen         FC  2017-04-03          94.7       -1.6124   \n",
       "Michael Lorenzen         CU  2017-04-03          80.6       -1.3507   \n",
       "Michael Lorenzen         CU  2017-04-03          79.4       -1.2817   \n",
       "Michael Lorenzen         FF  2017-04-03          98.1       -1.4090   \n",
       "Michael Lorenzen         FF  2017-04-03          99.0       -1.3970   \n",
       "Michael Lorenzen         FF  2017-04-03          98.8       -1.4354   \n",
       "Michael Lorenzen         CU  2017-04-03          79.2       -1.2299   \n",
       "Michael Lorenzen         FC  2017-04-03          95.9       -1.4895   \n",
       "Michael Lorenzen         FC  2017-04-03          92.1       -1.4055   \n",
       "Michael Lorenzen         FF  2017-04-03          97.5       -1.3382   \n",
       "Blake Wood               FS  2017-04-03          85.6       -2.5056   \n",
       "Blake Wood               SI  2017-04-03          95.8       -2.4472   \n",
       "Blake Wood             null  2017-04-03          null          null   \n",
       "Blake Wood               SI  2017-04-03          94.4       -2.4342   \n",
       "Blake Wood               SI  2017-04-03          95.8       -2.3300   \n",
       "Blake Wood               FS  2017-04-03          84.8       -2.3048   \n",
       "Blake Wood               SL  2017-04-03          89.4       -2.5120   \n",
       "Blake Wood               SI  2017-04-03          95.6       -2.4022   \n",
       "Blake Wood               SI  2017-04-03          95.6       -2.4551   \n",
       "Blake Wood               SI  2017-04-03          95.5       -2.3997   \n",
       "Blake Wood               SI  2017-04-03          95.6       -2.3807   \n",
       "\n",
       "                 release_pos_z  batter  pitcher     events  \\\n",
       "player_name                                                  \n",
       "Raisel Iglesias         5.3274  450314   628452  field_out   \n",
       "Raisel Iglesias         5.5148  502273   628452  field_out   \n",
       "Raisel Iglesias         5.9901  546991   628452   home_run   \n",
       "Raisel Iglesias         5.5905  546991   628452       null   \n",
       "Raisel Iglesias         5.6476  543089   628452  field_out   \n",
       "Wandy Peralta           6.2893  656941   593974  field_out   \n",
       "Wandy Peralta           5.7984  570240   593974  strikeout   \n",
       "Wandy Peralta           6.3042  570240   593974       null   \n",
       "Wandy Peralta           6.3108  570240   593974       null   \n",
       "Wandy Peralta           6.2267  570240   593974       null   \n",
       "Wandy Peralta           6.3243  570240   593974       null   \n",
       "Wandy Peralta           5.7556  450314   593974  strikeout   \n",
       "Wandy Peralta           5.9556  450314   593974       null   \n",
       "Wandy Peralta           5.9362  450314   593974       null   \n",
       "Wandy Peralta           6.2477  450314   593974       null   \n",
       "Wandy Peralta           5.9853  450314   593974       null   \n",
       "Wandy Peralta           6.3045  450314   593974       null   \n",
       "Michael Lorenzen        5.8879  502273   547179  force_out   \n",
       "Michael Lorenzen        6.0208  502273   547179       null   \n",
       "Michael Lorenzen        5.9933  502273   547179       null   \n",
       "Michael Lorenzen        6.0417  488671   547179       walk   \n",
       "Michael Lorenzen        6.0913  488671   547179       null   \n",
       "Michael Lorenzen        6.0174  488671   547179       null   \n",
       "Michael Lorenzen        6.0326  488671   547179       null   \n",
       "Michael Lorenzen        5.9575  488671   547179       null   \n",
       "Michael Lorenzen        5.9561  664023   547179   home_run   \n",
       "Michael Lorenzen        6.1430  664023   547179       null   \n",
       "Michael Lorenzen        5.8371  664023   547179       null   \n",
       "Michael Lorenzen        6.0136  656941   547179  strikeout   \n",
       "Michael Lorenzen        5.8934  656941   547179       null   \n",
       "...                        ...     ...      ...        ...   \n",
       "Michael Lorenzen        5.8592  514917   547179  field_out   \n",
       "Michael Lorenzen        5.8733  514917   547179       null   \n",
       "Michael Lorenzen        5.9333  514917   547179       null   \n",
       "Michael Lorenzen        5.8585  514917   547179       null   \n",
       "Michael Lorenzen        5.9186  514917   547179       null   \n",
       "Michael Lorenzen        5.9129  595426   547179       walk   \n",
       "Michael Lorenzen        5.9656  595426   547179       null   \n",
       "Michael Lorenzen        6.0537  595426   547179       null   \n",
       "Michael Lorenzen        5.8855  595426   547179       null   \n",
       "Michael Lorenzen        5.9551  595426   547179       null   \n",
       "Michael Lorenzen        6.0862  520471   547179  strikeout   \n",
       "Michael Lorenzen        5.8976  520471   547179       null   \n",
       "Michael Lorenzen        6.2112  520471   547179       null   \n",
       "Michael Lorenzen        6.0419  520471   547179       null   \n",
       "Michael Lorenzen        6.1005  520471   547179       null   \n",
       "Michael Lorenzen        5.9649  520471   547179       null   \n",
       "Michael Lorenzen        6.1293  519237   547179  field_out   \n",
       "Michael Lorenzen        6.1351  519237   547179       null   \n",
       "Michael Lorenzen        6.1365  519237   547179       null   \n",
       "Blake Wood              6.5142  514917   502028  field_out   \n",
       "Blake Wood              6.5367  514917   502028       null   \n",
       "Blake Wood                null  476451   502028     triple   \n",
       "Blake Wood              6.5760  476451   502028       null   \n",
       "Blake Wood              6.5194  476451   502028       null   \n",
       "Blake Wood              6.4866  520471   502028     double   \n",
       "Blake Wood              6.4361  520471   502028       null   \n",
       "Blake Wood              6.7093  520471   502028       null   \n",
       "Blake Wood              6.6885  519237   502028  field_out   \n",
       "Blake Wood              6.6798  519237   502028       null   \n",
       "Blake Wood              6.6643  571830   502028  field_out   \n",
       "\n",
       "                              description  spin_dir  ...    \\\n",
       "player_name                                          ...     \n",
       "Raisel Iglesias             hit_into_play       NaN  ...     \n",
       "Raisel Iglesias             hit_into_play       NaN  ...     \n",
       "Raisel Iglesias       hit_into_play_score       NaN  ...     \n",
       "Raisel Iglesias                      ball       NaN  ...     \n",
       "Raisel Iglesias             hit_into_play       NaN  ...     \n",
       "Wandy Peralta               hit_into_play       NaN  ...     \n",
       "Wandy Peralta             swinging_strike       NaN  ...     \n",
       "Wandy Peralta                        foul       NaN  ...     \n",
       "Wandy Peralta                        foul       NaN  ...     \n",
       "Wandy Peralta                        foul       NaN  ...     \n",
       "Wandy Peralta                        ball       NaN  ...     \n",
       "Wandy Peralta             swinging_strike       NaN  ...     \n",
       "Wandy Peralta                        ball       NaN  ...     \n",
       "Wandy Peralta                        ball       NaN  ...     \n",
       "Wandy Peralta               called_strike       NaN  ...     \n",
       "Wandy Peralta               called_strike       NaN  ...     \n",
       "Wandy Peralta                        ball       NaN  ...     \n",
       "Michael Lorenzen            hit_into_play       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen          swinging_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen            called_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen      hit_into_play_score       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen          swinging_strike       NaN  ...     \n",
       "Michael Lorenzen                 foul_tip       NaN  ...     \n",
       "Michael Lorenzen            called_strike       NaN  ...     \n",
       "...                                   ...       ...  ...     \n",
       "Michael Lorenzen            hit_into_play       NaN  ...     \n",
       "Michael Lorenzen          swinging_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen          swinging_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen             blocked_ball       NaN  ...     \n",
       "Michael Lorenzen            called_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen  swinging_strike_blocked       NaN  ...     \n",
       "Michael Lorenzen                     foul       NaN  ...     \n",
       "Michael Lorenzen            called_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen          swinging_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Michael Lorenzen            hit_into_play       NaN  ...     \n",
       "Michael Lorenzen          swinging_strike       NaN  ...     \n",
       "Michael Lorenzen                     ball       NaN  ...     \n",
       "Blake Wood                  hit_into_play       NaN  ...     \n",
       "Blake Wood                  called_strike       NaN  ...     \n",
       "Blake Wood            hit_into_play_score       NaN  ...     \n",
       "Blake Wood                  called_strike       NaN  ...     \n",
       "Blake Wood                   blocked_ball       NaN  ...     \n",
       "Blake Wood           hit_into_play_no_out       NaN  ...     \n",
       "Blake Wood                           ball       NaN  ...     \n",
       "Blake Wood                  called_strike       NaN  ...     \n",
       "Blake Wood                  hit_into_play       NaN  ...     \n",
       "Blake Wood                  called_strike       NaN  ...     \n",
       "Blake Wood                  hit_into_play       NaN  ...     \n",
       "\n",
       "                  estimated_ba_using_speedangle  \\\n",
       "player_name                                       \n",
       "Raisel Iglesias                           0.149   \n",
       "Raisel Iglesias                           0.087   \n",
       "Raisel Iglesias                           0.919   \n",
       "Raisel Iglesias                           0.000   \n",
       "Raisel Iglesias                           0.491   \n",
       "Wandy Peralta                             0.193   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Wandy Peralta                             0.000   \n",
       "Michael Lorenzen                          0.075   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.888   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "...                                         ...   \n",
       "Michael Lorenzen                          0.444   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.133   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.379   \n",
       "Michael Lorenzen                          0.000   \n",
       "Michael Lorenzen                          0.000   \n",
       "Blake Wood                                0.044   \n",
       "Blake Wood                                0.000   \n",
       "Blake Wood                                0.452   \n",
       "Blake Wood                                0.000   \n",
       "Blake Wood                                0.000   \n",
       "Blake Wood                                0.770   \n",
       "Blake Wood                                0.000   \n",
       "Blake Wood                                0.000   \n",
       "Blake Wood                                0.031   \n",
       "Blake Wood                                0.000   \n",
       "Blake Wood                                0.068   \n",
       "\n",
       "                  estimated_woba_using_speedangle  woba_value woba_denom  \\\n",
       "player_name                                                                \n",
       "Raisel Iglesias                             0.137        0.00          1   \n",
       "Raisel Iglesias                             0.081        0.00          1   \n",
       "Raisel Iglesias                             1.777        2.00          1   \n",
       "Raisel Iglesias                             0.000        null       null   \n",
       "Raisel Iglesias                             0.460        0.00          1   \n",
       "Wandy Peralta                               0.178        0.00          1   \n",
       "Wandy Peralta                               0.000        0.00          1   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        0.00          1   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Wandy Peralta                               0.000        null       null   \n",
       "Michael Lorenzen                            0.069        0.00          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        0.70          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            1.554        2.00          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        0.00          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "...                                           ...         ...        ...   \n",
       "Michael Lorenzen                            0.561        0.00          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        0.70          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.125        0.00          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.355        0.00          1   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Michael Lorenzen                            0.000        null       null   \n",
       "Blake Wood                                  0.042        0.00          1   \n",
       "Blake Wood                                  0.000        null       null   \n",
       "Blake Wood                                  0.547        1.60          1   \n",
       "Blake Wood                                  0.000        null       null   \n",
       "Blake Wood                                  0.000        null       null   \n",
       "Blake Wood                                  0.777        1.25          1   \n",
       "Blake Wood                                  0.000        null       null   \n",
       "Blake Wood                                  0.000        null       null   \n",
       "Blake Wood                                  0.045        0.00          1   \n",
       "Blake Wood                                  0.000        null       null   \n",
       "Blake Wood                                  0.074        0.00          1   \n",
       "\n",
       "                 babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "player_name                                                               \n",
       "Raisel Iglesias            0         0                  2            69   \n",
       "Raisel Iglesias            0         0                  2            68   \n",
       "Raisel Iglesias            0         3                  6            67   \n",
       "Raisel Iglesias         null      null               null            67   \n",
       "Raisel Iglesias            0         0                  4            66   \n",
       "Wandy Peralta              0         0                  2            53   \n",
       "Wandy Peralta              0         0               null            52   \n",
       "Wandy Peralta           null      null                  3            52   \n",
       "Wandy Peralta           null      null                  1            52   \n",
       "Wandy Peralta           null      null               null            52   \n",
       "Wandy Peralta           null      null               null            52   \n",
       "Wandy Peralta              0         0               null            51   \n",
       "Wandy Peralta           null      null               null            51   \n",
       "Wandy Peralta           null      null               null            51   \n",
       "Wandy Peralta           null      null               null            51   \n",
       "Wandy Peralta           null      null               null            51   \n",
       "Wandy Peralta           null      null               null            51   \n",
       "Michael Lorenzen           0         0                  2            68   \n",
       "Michael Lorenzen        null      null               null            68   \n",
       "Michael Lorenzen        null      null                  1            68   \n",
       "Michael Lorenzen           0         0               null            67   \n",
       "Michael Lorenzen        null      null               null            67   \n",
       "Michael Lorenzen        null      null               null            67   \n",
       "Michael Lorenzen        null      null               null            67   \n",
       "Michael Lorenzen        null      null               null            67   \n",
       "Michael Lorenzen           0         3                  6            66   \n",
       "Michael Lorenzen        null      null               null            66   \n",
       "Michael Lorenzen        null      null               null            66   \n",
       "Michael Lorenzen           0         0               null            65   \n",
       "Michael Lorenzen        null      null               null            65   \n",
       "...                      ...       ...                ...           ...   \n",
       "Michael Lorenzen           0         0                  4            66   \n",
       "Michael Lorenzen        null      null               null            66   \n",
       "Michael Lorenzen        null      null               null            66   \n",
       "Michael Lorenzen        null      null               null            66   \n",
       "Michael Lorenzen        null      null               null            66   \n",
       "Michael Lorenzen           0         0               null            65   \n",
       "Michael Lorenzen        null      null               null            65   \n",
       "Michael Lorenzen        null      null               null            65   \n",
       "Michael Lorenzen        null      null               null            65   \n",
       "Michael Lorenzen        null      null               null            65   \n",
       "Michael Lorenzen           0         0                  2            64   \n",
       "Michael Lorenzen        null      null                  3            64   \n",
       "Michael Lorenzen        null      null               null            64   \n",
       "Michael Lorenzen        null      null               null            64   \n",
       "Michael Lorenzen        null      null               null            64   \n",
       "Michael Lorenzen        null      null               null            64   \n",
       "Michael Lorenzen           0         0                  2            63   \n",
       "Michael Lorenzen        null      null               null            63   \n",
       "Michael Lorenzen        null      null               null            63   \n",
       "Blake Wood                 0         0                  2            49   \n",
       "Blake Wood              null      null               null            49   \n",
       "Blake Wood                 1         2                  4            48   \n",
       "Blake Wood              null      null               null            48   \n",
       "Blake Wood              null      null               null            48   \n",
       "Blake Wood                 1         1                  4            47   \n",
       "Blake Wood              null      null               null            47   \n",
       "Blake Wood              null      null               null            47   \n",
       "Blake Wood                 0         0                  3            46   \n",
       "Blake Wood              null      null               null            46   \n",
       "Blake Wood                 0         0                  3            45   \n",
       "\n",
       "                 pitch_number   home  \n",
       "player_name                           \n",
       "Raisel Iglesias             1  false  \n",
       "Raisel Iglesias             1  false  \n",
       "Raisel Iglesias             2  false  \n",
       "Raisel Iglesias             1  false  \n",
       "Raisel Iglesias             1  false  \n",
       "Wandy Peralta               1  false  \n",
       "Wandy Peralta               5  false  \n",
       "Wandy Peralta               4  false  \n",
       "Wandy Peralta               3  false  \n",
       "Wandy Peralta               2  false  \n",
       "Wandy Peralta               1  false  \n",
       "Wandy Peralta               6  false  \n",
       "Wandy Peralta               5  false  \n",
       "Wandy Peralta               4  false  \n",
       "Wandy Peralta               3  false  \n",
       "Wandy Peralta               2  false  \n",
       "Wandy Peralta               1  false  \n",
       "Michael Lorenzen            3  false  \n",
       "Michael Lorenzen            2  false  \n",
       "Michael Lorenzen            1  false  \n",
       "Michael Lorenzen            5  false  \n",
       "Michael Lorenzen            4  false  \n",
       "Michael Lorenzen            3  false  \n",
       "Michael Lorenzen            2  false  \n",
       "Michael Lorenzen            1  false  \n",
       "Michael Lorenzen            3  false  \n",
       "Michael Lorenzen            2  false  \n",
       "Michael Lorenzen            1  false  \n",
       "Michael Lorenzen            4  false  \n",
       "Michael Lorenzen            3  false  \n",
       "...                       ...    ...  \n",
       "Michael Lorenzen            5   true  \n",
       "Michael Lorenzen            4   true  \n",
       "Michael Lorenzen            3   true  \n",
       "Michael Lorenzen            2   true  \n",
       "Michael Lorenzen            1   true  \n",
       "Michael Lorenzen            5   true  \n",
       "Michael Lorenzen            4   true  \n",
       "Michael Lorenzen            3   true  \n",
       "Michael Lorenzen            2   true  \n",
       "Michael Lorenzen            1   true  \n",
       "Michael Lorenzen            6   true  \n",
       "Michael Lorenzen            5   true  \n",
       "Michael Lorenzen            4   true  \n",
       "Michael Lorenzen            3   true  \n",
       "Michael Lorenzen            2   true  \n",
       "Michael Lorenzen            1   true  \n",
       "Michael Lorenzen            3   true  \n",
       "Michael Lorenzen            2   true  \n",
       "Michael Lorenzen            1   true  \n",
       "Blake Wood                  2   true  \n",
       "Blake Wood                  1   true  \n",
       "Blake Wood                  3   true  \n",
       "Blake Wood                  2   true  \n",
       "Blake Wood                  1   true  \n",
       "Blake Wood                  3   true  \n",
       "Blake Wood                  2   true  \n",
       "Blake Wood                  1   true  \n",
       "Blake Wood                  2   true  \n",
       "Blake Wood                  1   true  \n",
       "Blake Wood                  1   true  \n",
       "\n",
       "[10739 rows x 78 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add home column to 2017 test data\n",
    "reds_df2['home'] = reds_df2['home_team'].apply(lambda x: 'true' if x == 'CIN' else 'false')\n",
    "\n",
    "# drop players that are in test data but not training data\n",
    "reds_df2.set_index('player_name', inplace=True)\n",
    "reds_df2.drop(reds_2017_discrepancies, inplace=True)\n",
    "reds_df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true     12674\n",
       "false    12231\n",
       "Name: home, dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add the home column to unmodified training and test files\n",
    "reds_df['home'] = reds_df['home_team'].apply(lambda x: 'true' if x == 'CIN' else 'false')\n",
    "reds_df['home'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Drop players that retired or unsigned in 2017\n",
    "reds_df.set_index('player_name', inplace=True)\n",
    "reds_df.drop(labels=pd.Index(['A.J. Morris', 'Abel de Los Santos', 'Alfredo Simon', 'Anthony DeSclafani', 'Caleb Cotham',\n",
    "                             'Drew Hayes', 'John Lamb', 'Jon Moscot', 'Keyvins Sampson', 'Layne Somsen', 'Matt Magill',\n",
    "                             'Ross Ohlendorf', 'Steve Delabar', 'Tyler Holt']), inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>player_name</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>92.9</td>\n",
       "      <td>-2.0130</td>\n",
       "      <td>5.8690</td>\n",
       "      <td>J.J. Hoover</td>\n",
       "      <td>466320</td>\n",
       "      <td>543331</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>...</td>\n",
       "      <td>0.492</td>\n",
       "      <td>0.631</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>23</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>92.6</td>\n",
       "      <td>-2.1398</td>\n",
       "      <td>5.7186</td>\n",
       "      <td>J.J. Hoover</td>\n",
       "      <td>466320</td>\n",
       "      <td>543331</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.3</td>\n",
       "      <td>-2.2876</td>\n",
       "      <td>5.5502</td>\n",
       "      <td>J.J. Hoover</td>\n",
       "      <td>593160</td>\n",
       "      <td>543331</td>\n",
       "      <td>single</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>...</td>\n",
       "      <td>0.924</td>\n",
       "      <td>0.849</td>\n",
       "      <td>0.90</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>22</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>92.9</td>\n",
       "      <td>-1.9958</td>\n",
       "      <td>5.9068</td>\n",
       "      <td>J.J. Hoover</td>\n",
       "      <td>593160</td>\n",
       "      <td>543331</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>22</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.0</td>\n",
       "      <td>-2.1761</td>\n",
       "      <td>5.6520</td>\n",
       "      <td>J.J. Hoover</td>\n",
       "      <td>593160</td>\n",
       "      <td>543331</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>22</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 79 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  pitch_type   game_date release_speed release_pos_x release_pos_z  \\\n",
       "0         FF  2017-10-01          92.9       -2.0130        5.8690   \n",
       "1         FF  2017-10-01          92.6       -2.1398        5.7186   \n",
       "2         SL  2017-10-01          85.3       -2.2876        5.5502   \n",
       "3         FF  2017-10-01          92.9       -1.9958        5.9068   \n",
       "4         SL  2017-10-01          85.0       -2.1761        5.6520   \n",
       "\n",
       "   player_name  batter  pitcher     events           description  ...    \\\n",
       "0  J.J. Hoover  466320   543331  field_out         hit_into_play  ...     \n",
       "1  J.J. Hoover  466320   543331       null         called_strike  ...     \n",
       "2  J.J. Hoover  593160   543331     single  hit_into_play_no_out  ...     \n",
       "3  J.J. Hoover  593160   543331       null                  ball  ...     \n",
       "4  J.J. Hoover  593160   543331       null                  ball  ...     \n",
       "\n",
       "   estimated_ba_using_speedangle  estimated_woba_using_speedangle  woba_value  \\\n",
       "0                          0.492                            0.631        0.00   \n",
       "1                          0.000                            0.000        null   \n",
       "2                          0.924                            0.849        0.90   \n",
       "3                          0.000                            0.000        null   \n",
       "4                          0.000                            0.000        null   \n",
       "\n",
       "   woba_denom babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "0           1           0         0                  5            23   \n",
       "1        null        null      null               null            23   \n",
       "2           1           1         0                  4            22   \n",
       "3        null        null      null               null            22   \n",
       "4        null        null      null               null            22   \n",
       "\n",
       "  pitch_number   home  \n",
       "0            2  false  \n",
       "1            1  false  \n",
       "2            6  false  \n",
       "3            5  false  \n",
       "4            4  false  \n",
       "\n",
       "[5 rows x 79 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Here add home column to new pitchers\n",
    "reds_df_add = pd.read_csv('2017_Reds_ADD.csv')\n",
    "\n",
    "reds_dict = {'Dan Straily': ['MIA'], 'Jumbo Diaz': ['TB'], \n",
    "            'Daniel Wright': ['LAA'], 'Tim Melville': ['MIN', 'SD'],\n",
    "            'Dayan Diaz': ['HOU'], 'J.J. Hoover': ['ARI'], 'JC Ramirez': ['LAA'],\n",
    "            'Josh Smith': ['OAK']}\n",
    "columnToAdd = []\n",
    "for index, row in reds_df_add.iterrows():\n",
    "    dictVal = reds_dict.get(reds_df_add.at[index, 'player_name'])\n",
    "    if (dictVal is not None) and (reds_df_add.at[index, 'home_team'] in dictVal):\n",
    "        columnToAdd.append('true')\n",
    "    else:\n",
    "        columnToAdd.append('false')\n",
    "\n",
    "reds_df_add['home'] = pd.Series(columnToAdd)\n",
    "reds_df_add.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Combine the test dataframes into one and write to csv\n",
    "reds_df_add.set_index('player_name', inplace=True)\n",
    "reds_test_combined = pd.concat([reds_df2, reds_df_add])\n",
    "reds_test_combined.to_csv('2017_Reds_COMBINED.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Finished Cleaning Reds!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\koselekt\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2717: DtypeWarning: Columns (2,14,27,28,29,30,44,45,46,47,48,49,50,51) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    }
   ],
   "source": [
    "yanks_df_small = pd.read_csv('2016_Yankees.csv')\n",
    "yanks_df2_small = pd.read_csv('2017_Yankees.csv')\n",
    "yanks_df = pd.read_csv('2016_Yankees_FULL.csv')\n",
    "yanks_df2 = pd.read_csv('2017_Yankees_FULL.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Andrew Miller', 'Anthony Swarzak', 'Blake Parker', 'Branden Pinder',\n",
       "       'Conor Mullee', 'Ivan Nova', 'James Pazos', 'Johnny Barbato',\n",
       "       'Kirby Yates', 'Nathan Eovaldi', 'Nick Goody', 'Phil Coke',\n",
       "       'Richard Bleier', 'Tyler Olson'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find players present in training data but not test data\n",
    "yanks_discrepancies = pd.Index(yanks_df_small['player_name']).difference(pd.Index(yanks_df2_small['player_name']))\n",
    "yanks_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Caleb Smith', 'David Robertson', 'Domingo German', 'Giovanny Gallegos',\n",
       "       'Jaime Garcia', 'Jordan Montgomery', 'Ronald Herrera', 'Sonny Gray',\n",
       "       'Tommy Kahnle', 'Tyler Webb'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# find players in test data but not training data\n",
    "yanks_2017_discrepancies = pd.Index(yanks_df2_small['player_name']).difference(pd.Index(yanks_df_small['player_name']))\n",
    "yanks_2017_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>spin_dir</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>player_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.2</td>\n",
       "      <td>-2.4357</td>\n",
       "      <td>5.3358</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.271</td>\n",
       "      <td>0.443</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>60</td>\n",
       "      <td>7</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.3</td>\n",
       "      <td>-2.5180</td>\n",
       "      <td>5.4049</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>60</td>\n",
       "      <td>6</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>81.2</td>\n",
       "      <td>-2.6661</td>\n",
       "      <td>4.9790</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>60</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.1</td>\n",
       "      <td>-2.5739</td>\n",
       "      <td>5.3561</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>60</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.7</td>\n",
       "      <td>-2.5577</td>\n",
       "      <td>5.2716</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>60</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.6</td>\n",
       "      <td>-2.5734</td>\n",
       "      <td>5.2968</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>60</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.0</td>\n",
       "      <td>-2.6292</td>\n",
       "      <td>5.5455</td>\n",
       "      <td>459431</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>60</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.2</td>\n",
       "      <td>-2.5475</td>\n",
       "      <td>5.2236</td>\n",
       "      <td>475253</td>\n",
       "      <td>621294</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.592</td>\n",
       "      <td>0.555</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>59</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>83.4</td>\n",
       "      <td>-2.8498</td>\n",
       "      <td>4.9664</td>\n",
       "      <td>475253</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>59</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.6</td>\n",
       "      <td>-2.8742</td>\n",
       "      <td>5.3397</td>\n",
       "      <td>475253</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>59</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.5</td>\n",
       "      <td>-2.6536</td>\n",
       "      <td>5.3565</td>\n",
       "      <td>475253</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>59</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>82.8</td>\n",
       "      <td>-3.0105</td>\n",
       "      <td>4.8880</td>\n",
       "      <td>620446</td>\n",
       "      <td>621294</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>58</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>83.2</td>\n",
       "      <td>-2.9627</td>\n",
       "      <td>5.0224</td>\n",
       "      <td>620446</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>58</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ben Heller</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.2</td>\n",
       "      <td>-2.6302</td>\n",
       "      <td>5.5229</td>\n",
       "      <td>620446</td>\n",
       "      <td>621294</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>58</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.9</td>\n",
       "      <td>-1.1905</td>\n",
       "      <td>6.0528</td>\n",
       "      <td>475253</td>\n",
       "      <td>476589</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>41</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>87.7</td>\n",
       "      <td>-1.4156</td>\n",
       "      <td>6.0045</td>\n",
       "      <td>475253</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>41</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>84.0</td>\n",
       "      <td>-1.6500</td>\n",
       "      <td>5.8548</td>\n",
       "      <td>475253</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>41</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>84.0</td>\n",
       "      <td>-1.7484</td>\n",
       "      <td>5.9682</td>\n",
       "      <td>475253</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>41</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>90.3</td>\n",
       "      <td>-1.5750</td>\n",
       "      <td>5.8387</td>\n",
       "      <td>475253</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>41</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>83.7</td>\n",
       "      <td>-1.6150</td>\n",
       "      <td>5.7637</td>\n",
       "      <td>620446</td>\n",
       "      <td>476589</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.013</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>37</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.2</td>\n",
       "      <td>-1.5974</td>\n",
       "      <td>5.8746</td>\n",
       "      <td>620446</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>37</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>78.8</td>\n",
       "      <td>-1.5610</td>\n",
       "      <td>6.0161</td>\n",
       "      <td>620446</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>37</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.3</td>\n",
       "      <td>-1.4244</td>\n",
       "      <td>5.7856</td>\n",
       "      <td>606192</td>\n",
       "      <td>476589</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>36</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.2</td>\n",
       "      <td>-1.4430</td>\n",
       "      <td>5.9492</td>\n",
       "      <td>606192</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>36</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>86.4</td>\n",
       "      <td>-1.3934</td>\n",
       "      <td>5.9976</td>\n",
       "      <td>606192</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>36</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>85.2</td>\n",
       "      <td>-1.4381</td>\n",
       "      <td>5.9837</td>\n",
       "      <td>606192</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>36</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adam Warren</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.7</td>\n",
       "      <td>-1.1938</td>\n",
       "      <td>6.0176</td>\n",
       "      <td>606192</td>\n",
       "      <td>476589</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>36</td>\n",
       "      <td>1</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Aroldis Chapman</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-09-30</td>\n",
       "      <td>102.6</td>\n",
       "      <td>0.8517</td>\n",
       "      <td>6.0898</td>\n",
       "      <td>446381</td>\n",
       "      <td>547973</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.846</td>\n",
       "      <td>0.784</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>66</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Aroldis Chapman</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-09-30</td>\n",
       "      <td>102.9</td>\n",
       "      <td>0.6371</td>\n",
       "      <td>6.2338</td>\n",
       "      <td>446381</td>\n",
       "      <td>547973</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Aroldis Chapman</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-09-30</td>\n",
       "      <td>87.1</td>\n",
       "      <td>0.6673</td>\n",
       "      <td>6.2658</td>\n",
       "      <td>446381</td>\n",
       "      <td>547973</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>66</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>92.1</td>\n",
       "      <td>-1.2640</td>\n",
       "      <td>5.3038</td>\n",
       "      <td>572816</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>20</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.4</td>\n",
       "      <td>-1.0914</td>\n",
       "      <td>5.4209</td>\n",
       "      <td>572816</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.7</td>\n",
       "      <td>-1.0572</td>\n",
       "      <td>5.3713</td>\n",
       "      <td>519083</td>\n",
       "      <td>547888</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.069</td>\n",
       "      <td>0.063</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>19</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.6</td>\n",
       "      <td>-1.1110</td>\n",
       "      <td>5.0318</td>\n",
       "      <td>519083</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>19</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.5</td>\n",
       "      <td>-1.0619</td>\n",
       "      <td>5.1709</td>\n",
       "      <td>519083</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>19</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.7</td>\n",
       "      <td>-1.0785</td>\n",
       "      <td>5.4270</td>\n",
       "      <td>519083</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>19</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.9</td>\n",
       "      <td>-1.1859</td>\n",
       "      <td>5.4338</td>\n",
       "      <td>519083</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>19</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>86.7</td>\n",
       "      <td>-1.2122</td>\n",
       "      <td>5.3467</td>\n",
       "      <td>605480</td>\n",
       "      <td>547888</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>86.5</td>\n",
       "      <td>-1.3799</td>\n",
       "      <td>5.3775</td>\n",
       "      <td>605480</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.1</td>\n",
       "      <td>-1.6017</td>\n",
       "      <td>5.2780</td>\n",
       "      <td>605480</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.9</td>\n",
       "      <td>-1.4468</td>\n",
       "      <td>4.9944</td>\n",
       "      <td>542921</td>\n",
       "      <td>547888</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.316</td>\n",
       "      <td>0.331</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>11</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>86.3</td>\n",
       "      <td>-1.1418</td>\n",
       "      <td>5.4565</td>\n",
       "      <td>542921</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.7</td>\n",
       "      <td>-1.2238</td>\n",
       "      <td>5.3167</td>\n",
       "      <td>542921</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>89.5</td>\n",
       "      <td>-1.3078</td>\n",
       "      <td>5.5572</td>\n",
       "      <td>489149</td>\n",
       "      <td>547888</td>\n",
       "      <td>single</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.505</td>\n",
       "      <td>0.472</td>\n",
       "      <td>0.90</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>88.6</td>\n",
       "      <td>-1.2725</td>\n",
       "      <td>5.3604</td>\n",
       "      <td>489149</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike_blocked</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.8</td>\n",
       "      <td>-1.2953</td>\n",
       "      <td>5.2107</td>\n",
       "      <td>519306</td>\n",
       "      <td>547888</td>\n",
       "      <td>walk</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>86.0</td>\n",
       "      <td>-1.5237</td>\n",
       "      <td>5.2624</td>\n",
       "      <td>519306</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>91.2</td>\n",
       "      <td>-1.4122</td>\n",
       "      <td>5.3178</td>\n",
       "      <td>519306</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>85.5</td>\n",
       "      <td>-1.4352</td>\n",
       "      <td>5.3404</td>\n",
       "      <td>519306</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>87.6</td>\n",
       "      <td>-1.3408</td>\n",
       "      <td>5.3714</td>\n",
       "      <td>543543</td>\n",
       "      <td>547888</td>\n",
       "      <td>single</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.402</td>\n",
       "      <td>0.378</td>\n",
       "      <td>0.90</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.9</td>\n",
       "      <td>-1.5316</td>\n",
       "      <td>5.2858</td>\n",
       "      <td>543543</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>87.3</td>\n",
       "      <td>-1.2929</td>\n",
       "      <td>5.4781</td>\n",
       "      <td>543543</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>85.7</td>\n",
       "      <td>-1.2977</td>\n",
       "      <td>5.5013</td>\n",
       "      <td>446334</td>\n",
       "      <td>547888</td>\n",
       "      <td>sac_fly</td>\n",
       "      <td>hit_into_play_score</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.011</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>85.8</td>\n",
       "      <td>-1.5759</td>\n",
       "      <td>5.1764</td>\n",
       "      <td>446334</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.7</td>\n",
       "      <td>-1.5501</td>\n",
       "      <td>5.1333</td>\n",
       "      <td>595281</td>\n",
       "      <td>547888</td>\n",
       "      <td>double</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.846</td>\n",
       "      <td>0.863</td>\n",
       "      <td>1.25</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.1</td>\n",
       "      <td>-1.4488</td>\n",
       "      <td>5.3631</td>\n",
       "      <td>595281</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>82.2</td>\n",
       "      <td>-1.7570</td>\n",
       "      <td>5.2553</td>\n",
       "      <td>595281</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.3</td>\n",
       "      <td>-1.4901</td>\n",
       "      <td>5.3522</td>\n",
       "      <td>595281</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>FS</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>86.6</td>\n",
       "      <td>-1.3060</td>\n",
       "      <td>5.5630</td>\n",
       "      <td>572816</td>\n",
       "      <td>547888</td>\n",
       "      <td>single</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.846</td>\n",
       "      <td>0.863</td>\n",
       "      <td>0.90</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Masahiro Tanaka</th>\n",
       "      <td>SI</td>\n",
       "      <td>2017-04-02</td>\n",
       "      <td>90.9</td>\n",
       "      <td>-1.4778</td>\n",
       "      <td>5.3314</td>\n",
       "      <td>572816</td>\n",
       "      <td>547888</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>17621 rows × 78 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                pitch_type   game_date release_speed release_pos_x  \\\n",
       "player_name                                                          \n",
       "Ben Heller              FF  2017-10-01          94.2       -2.4357   \n",
       "Ben Heller              FF  2017-10-01          94.3       -2.5180   \n",
       "Ben Heller              CU  2017-10-01          81.2       -2.6661   \n",
       "Ben Heller              FF  2017-10-01          94.1       -2.5739   \n",
       "Ben Heller              CH  2017-10-01          85.7       -2.5577   \n",
       "Ben Heller              CH  2017-10-01          85.6       -2.5734   \n",
       "Ben Heller              FF  2017-10-01          96.0       -2.6292   \n",
       "Ben Heller              CH  2017-10-01          85.2       -2.5475   \n",
       "Ben Heller              CU  2017-10-01          83.4       -2.8498   \n",
       "Ben Heller              FF  2017-10-01          96.6       -2.8742   \n",
       "Ben Heller              FF  2017-10-01          95.5       -2.6536   \n",
       "Ben Heller              CU  2017-10-01          82.8       -3.0105   \n",
       "Ben Heller              CU  2017-10-01          83.2       -2.9627   \n",
       "Ben Heller              FF  2017-10-01          95.2       -2.6302   \n",
       "Adam Warren             FF  2017-10-01          91.9       -1.1905   \n",
       "Adam Warren             SL  2017-10-01          87.7       -1.4156   \n",
       "Adam Warren             SL  2017-10-01          84.0       -1.6500   \n",
       "Adam Warren             SL  2017-10-01          84.0       -1.7484   \n",
       "Adam Warren             FF  2017-10-01          90.3       -1.5750   \n",
       "Adam Warren             CH  2017-10-01          83.7       -1.6150   \n",
       "Adam Warren             FF  2017-10-01          91.2       -1.5974   \n",
       "Adam Warren             CU  2017-10-01          78.8       -1.5610   \n",
       "Adam Warren             FF  2017-10-01          91.3       -1.4244   \n",
       "Adam Warren             SL  2017-10-01          88.2       -1.4430   \n",
       "Adam Warren             SL  2017-10-01          86.4       -1.3934   \n",
       "Adam Warren             SL  2017-10-01          85.2       -1.4381   \n",
       "Adam Warren             FF  2017-10-01          91.7       -1.1938   \n",
       "Aroldis Chapman         FF  2017-09-30         102.6        0.8517   \n",
       "Aroldis Chapman         FF  2017-09-30         102.9        0.6371   \n",
       "Aroldis Chapman         SL  2017-09-30          87.1        0.6673   \n",
       "...                    ...         ...           ...           ...   \n",
       "Masahiro Tanaka         SI  2017-04-02          92.1       -1.2640   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.4       -1.0914   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.7       -1.0572   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.6       -1.1110   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.5       -1.0619   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.7       -1.0785   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.9       -1.1859   \n",
       "Masahiro Tanaka         FS  2017-04-02          86.7       -1.2122   \n",
       "Masahiro Tanaka         FS  2017-04-02          86.5       -1.3799   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.1       -1.6017   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.9       -1.4468   \n",
       "Masahiro Tanaka         FS  2017-04-02          86.3       -1.1418   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.7       -1.2238   \n",
       "Masahiro Tanaka         FS  2017-04-02          89.5       -1.3078   \n",
       "Masahiro Tanaka         FS  2017-04-02          88.6       -1.2725   \n",
       "Masahiro Tanaka         SI  2017-04-02          91.8       -1.2953   \n",
       "Masahiro Tanaka         SL  2017-04-02          86.0       -1.5237   \n",
       "Masahiro Tanaka         FF  2017-04-02          91.2       -1.4122   \n",
       "Masahiro Tanaka         SL  2017-04-02          85.5       -1.4352   \n",
       "Masahiro Tanaka         FS  2017-04-02          87.6       -1.3408   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.9       -1.5316   \n",
       "Masahiro Tanaka         FS  2017-04-02          87.3       -1.2929   \n",
       "Masahiro Tanaka         FS  2017-04-02          85.7       -1.2977   \n",
       "Masahiro Tanaka         SL  2017-04-02          85.8       -1.5759   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.7       -1.5501   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.1       -1.4488   \n",
       "Masahiro Tanaka         SL  2017-04-02          82.2       -1.7570   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.3       -1.4901   \n",
       "Masahiro Tanaka         FS  2017-04-02          86.6       -1.3060   \n",
       "Masahiro Tanaka         SI  2017-04-02          90.9       -1.4778   \n",
       "\n",
       "                release_pos_z  batter  pitcher     events  \\\n",
       "player_name                                                 \n",
       "Ben Heller             5.3358  459431   621294  field_out   \n",
       "Ben Heller             5.4049  459431   621294       null   \n",
       "Ben Heller             4.9790  459431   621294       null   \n",
       "Ben Heller             5.3561  459431   621294       null   \n",
       "Ben Heller             5.2716  459431   621294       null   \n",
       "Ben Heller             5.2968  459431   621294       null   \n",
       "Ben Heller             5.5455  459431   621294       null   \n",
       "Ben Heller             5.2236  475253   621294  field_out   \n",
       "Ben Heller             4.9664  475253   621294       null   \n",
       "Ben Heller             5.3397  475253   621294       null   \n",
       "Ben Heller             5.3565  475253   621294       null   \n",
       "Ben Heller             4.8880  620446   621294  strikeout   \n",
       "Ben Heller             5.0224  620446   621294       null   \n",
       "Ben Heller             5.5229  620446   621294       null   \n",
       "Adam Warren            6.0528  475253   476589  field_out   \n",
       "Adam Warren            6.0045  475253   476589       null   \n",
       "Adam Warren            5.8548  475253   476589       null   \n",
       "Adam Warren            5.9682  475253   476589       null   \n",
       "Adam Warren            5.8387  475253   476589       null   \n",
       "Adam Warren            5.7637  620446   476589  field_out   \n",
       "Adam Warren            5.8746  620446   476589       null   \n",
       "Adam Warren            6.0161  620446   476589       null   \n",
       "Adam Warren            5.7856  606192   476589  strikeout   \n",
       "Adam Warren            5.9492  606192   476589       null   \n",
       "Adam Warren            5.9976  606192   476589       null   \n",
       "Adam Warren            5.9837  606192   476589       null   \n",
       "Adam Warren            6.0176  606192   476589       null   \n",
       "Aroldis Chapman        6.0898  446381   547973  field_out   \n",
       "Aroldis Chapman        6.2338  446381   547973       null   \n",
       "Aroldis Chapman        6.2658  446381   547973       null   \n",
       "...                       ...     ...      ...        ...   \n",
       "Masahiro Tanaka        5.3038  572816   547888       null   \n",
       "Masahiro Tanaka        5.4209  572816   547888       null   \n",
       "Masahiro Tanaka        5.3713  519083   547888  field_out   \n",
       "Masahiro Tanaka        5.0318  519083   547888       null   \n",
       "Masahiro Tanaka        5.1709  519083   547888       null   \n",
       "Masahiro Tanaka        5.4270  519083   547888       null   \n",
       "Masahiro Tanaka        5.4338  519083   547888       null   \n",
       "Masahiro Tanaka        5.3467  605480   547888  strikeout   \n",
       "Masahiro Tanaka        5.3775  605480   547888       null   \n",
       "Masahiro Tanaka        5.2780  605480   547888       null   \n",
       "Masahiro Tanaka        4.9944  542921   547888  field_out   \n",
       "Masahiro Tanaka        5.4565  542921   547888       null   \n",
       "Masahiro Tanaka        5.3167  542921   547888       null   \n",
       "Masahiro Tanaka        5.5572  489149   547888     single   \n",
       "Masahiro Tanaka        5.3604  489149   547888       null   \n",
       "Masahiro Tanaka        5.2107  519306   547888       walk   \n",
       "Masahiro Tanaka        5.2624  519306   547888       null   \n",
       "Masahiro Tanaka        5.3178  519306   547888       null   \n",
       "Masahiro Tanaka        5.3404  519306   547888       null   \n",
       "Masahiro Tanaka        5.3714  543543   547888     single   \n",
       "Masahiro Tanaka        5.2858  543543   547888       null   \n",
       "Masahiro Tanaka        5.4781  543543   547888       null   \n",
       "Masahiro Tanaka        5.5013  446334   547888    sac_fly   \n",
       "Masahiro Tanaka        5.1764  446334   547888       null   \n",
       "Masahiro Tanaka        5.1333  595281   547888     double   \n",
       "Masahiro Tanaka        5.3631  595281   547888       null   \n",
       "Masahiro Tanaka        5.2553  595281   547888       null   \n",
       "Masahiro Tanaka        5.3522  595281   547888       null   \n",
       "Masahiro Tanaka        5.5630  572816   547888     single   \n",
       "Masahiro Tanaka        5.3314  572816   547888       null   \n",
       "\n",
       "                             description  spin_dir  ...    \\\n",
       "player_name                                         ...     \n",
       "Ben Heller                 hit_into_play       NaN  ...     \n",
       "Ben Heller                          foul       NaN  ...     \n",
       "Ben Heller                          ball       NaN  ...     \n",
       "Ben Heller                          foul       NaN  ...     \n",
       "Ben Heller                          ball       NaN  ...     \n",
       "Ben Heller                          ball       NaN  ...     \n",
       "Ben Heller                 called_strike       NaN  ...     \n",
       "Ben Heller                 hit_into_play       NaN  ...     \n",
       "Ben Heller                          ball       NaN  ...     \n",
       "Ben Heller               swinging_strike       NaN  ...     \n",
       "Ben Heller                 called_strike       NaN  ...     \n",
       "Ben Heller               swinging_strike       NaN  ...     \n",
       "Ben Heller               swinging_strike       NaN  ...     \n",
       "Ben Heller                 called_strike       NaN  ...     \n",
       "Adam Warren                hit_into_play       NaN  ...     \n",
       "Adam Warren                         foul       NaN  ...     \n",
       "Adam Warren                         foul       NaN  ...     \n",
       "Adam Warren                         ball       NaN  ...     \n",
       "Adam Warren                         ball       NaN  ...     \n",
       "Adam Warren                hit_into_play       NaN  ...     \n",
       "Adam Warren                called_strike       NaN  ...     \n",
       "Adam Warren                         ball       NaN  ...     \n",
       "Adam Warren              swinging_strike       NaN  ...     \n",
       "Adam Warren                         foul       NaN  ...     \n",
       "Adam Warren                         ball       NaN  ...     \n",
       "Adam Warren                         ball       NaN  ...     \n",
       "Adam Warren                called_strike       NaN  ...     \n",
       "Aroldis Chapman            hit_into_play       NaN  ...     \n",
       "Aroldis Chapman                     ball       NaN  ...     \n",
       "Aroldis Chapman            called_strike       NaN  ...     \n",
       "...                                  ...       ...  ...     \n",
       "Masahiro Tanaka          swinging_strike       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka            hit_into_play       NaN  ...     \n",
       "Masahiro Tanaka            called_strike       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka          swinging_strike       NaN  ...     \n",
       "Masahiro Tanaka          swinging_strike       NaN  ...     \n",
       "Masahiro Tanaka          swinging_strike       NaN  ...     \n",
       "Masahiro Tanaka            hit_into_play       NaN  ...     \n",
       "Masahiro Tanaka          swinging_strike       NaN  ...     \n",
       "Masahiro Tanaka            called_strike       NaN  ...     \n",
       "Masahiro Tanaka      hit_into_play_score       NaN  ...     \n",
       "Masahiro Tanaka  swinging_strike_blocked       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka             blocked_ball       NaN  ...     \n",
       "Masahiro Tanaka             blocked_ball       NaN  ...     \n",
       "Masahiro Tanaka     hit_into_play_no_out       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka             blocked_ball       NaN  ...     \n",
       "Masahiro Tanaka      hit_into_play_score       NaN  ...     \n",
       "Masahiro Tanaka          swinging_strike       NaN  ...     \n",
       "Masahiro Tanaka     hit_into_play_no_out       NaN  ...     \n",
       "Masahiro Tanaka                     foul       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka                     ball       NaN  ...     \n",
       "Masahiro Tanaka     hit_into_play_no_out       NaN  ...     \n",
       "Masahiro Tanaka            called_strike       NaN  ...     \n",
       "\n",
       "                 estimated_ba_using_speedangle  \\\n",
       "player_name                                      \n",
       "Ben Heller                               0.271   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.592   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Ben Heller                               0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.013   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Adam Warren                              0.000   \n",
       "Aroldis Chapman                          0.846   \n",
       "Aroldis Chapman                          0.000   \n",
       "Aroldis Chapman                          0.000   \n",
       "...                                        ...   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.069   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.316   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.505   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.402   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.011   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.846   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.000   \n",
       "Masahiro Tanaka                          0.846   \n",
       "Masahiro Tanaka                          0.000   \n",
       "\n",
       "                 estimated_woba_using_speedangle  woba_value woba_denom  \\\n",
       "player_name                                                               \n",
       "Ben Heller                                 0.443        0.00          1   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.555        0.00          1   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        0.00          1   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Ben Heller                                 0.000        null       null   \n",
       "Adam Warren                                0.001        0.00          1   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.014        0.00          1   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        0.00          1   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Adam Warren                                0.000        null       null   \n",
       "Aroldis Chapman                            0.784        0.00          1   \n",
       "Aroldis Chapman                            0.000        null       null   \n",
       "Aroldis Chapman                            0.000        null       null   \n",
       "...                                          ...         ...        ...   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.063        0.00          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        0.00          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.331        0.00          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.472        0.90          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        0.70          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.378        0.90          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.014        0.00          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.863        1.25          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "Masahiro Tanaka                            0.863        0.90          1   \n",
       "Masahiro Tanaka                            0.000        null       null   \n",
       "\n",
       "                babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "player_name                                                              \n",
       "Ben Heller                0         0                  5            60   \n",
       "Ben Heller             null      null                  3            60   \n",
       "Ben Heller             null      null               null            60   \n",
       "Ben Heller             null      null               null            60   \n",
       "Ben Heller             null      null               null            60   \n",
       "Ben Heller             null      null               null            60   \n",
       "Ben Heller             null      null               null            60   \n",
       "Ben Heller                0         0                  4            59   \n",
       "Ben Heller             null      null               null            59   \n",
       "Ben Heller             null      null               null            59   \n",
       "Ben Heller             null      null               null            59   \n",
       "Ben Heller                0         0               null            58   \n",
       "Ben Heller             null      null               null            58   \n",
       "Ben Heller             null      null               null            58   \n",
       "Adam Warren               0         0                  3            41   \n",
       "Adam Warren            null      null               null            41   \n",
       "Adam Warren            null      null                  1            41   \n",
       "Adam Warren            null      null               null            41   \n",
       "Adam Warren            null      null               null            41   \n",
       "Adam Warren               0         0                  3            37   \n",
       "Adam Warren            null      null               null            37   \n",
       "Adam Warren            null      null               null            37   \n",
       "Adam Warren               0         0               null            36   \n",
       "Adam Warren            null      null                  3            36   \n",
       "Adam Warren            null      null               null            36   \n",
       "Adam Warren            null      null               null            36   \n",
       "Adam Warren            null      null               null            36   \n",
       "Aroldis Chapman           0         0                  4            66   \n",
       "Aroldis Chapman        null      null               null            66   \n",
       "Aroldis Chapman        null      null               null            66   \n",
       "...                     ...       ...                ...           ...   \n",
       "Masahiro Tanaka        null      null               null            20   \n",
       "Masahiro Tanaka        null      null               null            20   \n",
       "Masahiro Tanaka           0         0                  2            19   \n",
       "Masahiro Tanaka        null      null               null            19   \n",
       "Masahiro Tanaka        null      null               null            19   \n",
       "Masahiro Tanaka        null      null               null            19   \n",
       "Masahiro Tanaka        null      null               null            19   \n",
       "Masahiro Tanaka           0         0               null            12   \n",
       "Masahiro Tanaka        null      null               null            12   \n",
       "Masahiro Tanaka        null      null               null            12   \n",
       "Masahiro Tanaka           0         0                  3            11   \n",
       "Masahiro Tanaka        null      null               null            11   \n",
       "Masahiro Tanaka        null      null               null            11   \n",
       "Masahiro Tanaka           1         0                  4            10   \n",
       "Masahiro Tanaka        null      null               null            10   \n",
       "Masahiro Tanaka           0         0               null             9   \n",
       "Masahiro Tanaka        null      null               null             9   \n",
       "Masahiro Tanaka        null      null               null             9   \n",
       "Masahiro Tanaka        null      null               null             9   \n",
       "Masahiro Tanaka           1         0                  2             8   \n",
       "Masahiro Tanaka        null      null               null             8   \n",
       "Masahiro Tanaka        null      null               null             8   \n",
       "Masahiro Tanaka           0         0                  3             7   \n",
       "Masahiro Tanaka        null      null               null             7   \n",
       "Masahiro Tanaka           1         1                  4             6   \n",
       "Masahiro Tanaka        null      null               null             6   \n",
       "Masahiro Tanaka        null      null               null             6   \n",
       "Masahiro Tanaka        null      null               null             6   \n",
       "Masahiro Tanaka           1         0                  4             5   \n",
       "Masahiro Tanaka        null      null               null             5   \n",
       "\n",
       "                pitch_number   home  \n",
       "player_name                          \n",
       "Ben Heller                 7   true  \n",
       "Ben Heller                 6   true  \n",
       "Ben Heller                 5   true  \n",
       "Ben Heller                 4   true  \n",
       "Ben Heller                 3   true  \n",
       "Ben Heller                 2   true  \n",
       "Ben Heller                 1   true  \n",
       "Ben Heller                 4   true  \n",
       "Ben Heller                 3   true  \n",
       "Ben Heller                 2   true  \n",
       "Ben Heller                 1   true  \n",
       "Ben Heller                 3   true  \n",
       "Ben Heller                 2   true  \n",
       "Ben Heller                 1   true  \n",
       "Adam Warren                5   true  \n",
       "Adam Warren                4   true  \n",
       "Adam Warren                3   true  \n",
       "Adam Warren                2   true  \n",
       "Adam Warren                1   true  \n",
       "Adam Warren                3   true  \n",
       "Adam Warren                2   true  \n",
       "Adam Warren                1   true  \n",
       "Adam Warren                5   true  \n",
       "Adam Warren                4   true  \n",
       "Adam Warren                3   true  \n",
       "Adam Warren                2   true  \n",
       "Adam Warren                1   true  \n",
       "Aroldis Chapman            5   true  \n",
       "Aroldis Chapman            4   true  \n",
       "Aroldis Chapman            3   true  \n",
       "...                      ...    ...  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            5  false  \n",
       "Masahiro Tanaka            4  false  \n",
       "Masahiro Tanaka            3  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            3  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            3  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            4  false  \n",
       "Masahiro Tanaka            3  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            3  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            4  false  \n",
       "Masahiro Tanaka            3  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "Masahiro Tanaka            2  false  \n",
       "Masahiro Tanaka            1  false  \n",
       "\n",
       "[17621 rows x 78 columns]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add home column to 2017 test data\n",
    "yanks_df2['home'] = yanks_df2['home_team'].apply(lambda x: 'true' if x == 'NYY' else 'false')\n",
    "\n",
    "# drop players that are in test data but not training data\n",
    "yanks_df2.set_index('player_name', inplace=True)\n",
    "yanks_df2.drop(yanks_2017_discrepancies, inplace=True)\n",
    "yanks_df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true     11939\n",
       "false    11580\n",
       "Name: home, dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add the home column to unmodified training and test files\n",
    "yanks_df['home'] = yanks_df['home_team'].apply(lambda x: 'true' if x == 'NYY' else 'false')\n",
    "yanks_df['home'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Drop players that retired or unsigned in 2017\n",
    "yanks_df.set_index('player_name', inplace=True)\n",
    "yanks_df.drop(labels=pd.Index([\"Branden Pinder\", 'Conor Mullee', 'Nathan Eowaldi',\n",
    "                              'Phil Coke']), inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>player_name</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.7</td>\n",
       "      <td>-2.7585</td>\n",
       "      <td>6.2671</td>\n",
       "      <td>Johnny Barbato</td>\n",
       "      <td>572191</td>\n",
       "      <td>592127</td>\n",
       "      <td>walk</td>\n",
       "      <td>ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>50</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>93.0</td>\n",
       "      <td>-2.8184</td>\n",
       "      <td>6.3463</td>\n",
       "      <td>Johnny Barbato</td>\n",
       "      <td>572191</td>\n",
       "      <td>592127</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>50</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>92.3</td>\n",
       "      <td>-2.8718</td>\n",
       "      <td>6.2576</td>\n",
       "      <td>Johnny Barbato</td>\n",
       "      <td>572191</td>\n",
       "      <td>592127</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>50</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>93.6</td>\n",
       "      <td>-2.7868</td>\n",
       "      <td>6.2410</td>\n",
       "      <td>Johnny Barbato</td>\n",
       "      <td>572191</td>\n",
       "      <td>592127</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>50</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>SL</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>86.9</td>\n",
       "      <td>-2.8320</td>\n",
       "      <td>6.2391</td>\n",
       "      <td>Johnny Barbato</td>\n",
       "      <td>572191</td>\n",
       "      <td>592127</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 79 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  pitch_type   game_date release_speed release_pos_x release_pos_z  \\\n",
       "0         FF  2017-10-01          94.7       -2.7585        6.2671   \n",
       "1         FF  2017-10-01          93.0       -2.8184        6.3463   \n",
       "2         FF  2017-10-01          92.3       -2.8718        6.2576   \n",
       "3         FF  2017-10-01          93.6       -2.7868        6.2410   \n",
       "4         SL  2017-10-01          86.9       -2.8320        6.2391   \n",
       "\n",
       "      player_name  batter  pitcher events    description  ...    \\\n",
       "0  Johnny Barbato  572191   592127   walk           ball  ...     \n",
       "1  Johnny Barbato  572191   592127   null  called_strike  ...     \n",
       "2  Johnny Barbato  572191   592127   null           ball  ...     \n",
       "3  Johnny Barbato  572191   592127   null   blocked_ball  ...     \n",
       "4  Johnny Barbato  572191   592127   null   blocked_ball  ...     \n",
       "\n",
       "   estimated_ba_using_speedangle  estimated_woba_using_speedangle  woba_value  \\\n",
       "0                            0.0                              0.0        0.70   \n",
       "1                            0.0                              0.0        null   \n",
       "2                            0.0                              0.0        null   \n",
       "3                            0.0                              0.0        null   \n",
       "4                            0.0                              0.0        null   \n",
       "\n",
       "   woba_denom babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "0           1           0         0               null            50   \n",
       "1        null        null      null               null            50   \n",
       "2        null        null      null               null            50   \n",
       "3        null        null      null               null            50   \n",
       "4        null        null      null               null            50   \n",
       "\n",
       "  pitch_number   home  \n",
       "0            5  false  \n",
       "1            4  false  \n",
       "2            3  false  \n",
       "3            2  false  \n",
       "4            1  false  \n",
       "\n",
       "[5 rows x 79 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Here add home column to new pitchers\n",
    "yanks_df_add = pd.read_csv('2017_Yankees_ADD.csv')\n",
    "\n",
    "yanks_dict = {'Andrew Miller': ['CLE'], 'Anthony Swarzak': ['MIL', 'CWS'],\n",
    "             'Blake Parker': ['LAA'], 'Ivan Nova': ['PIT'], 'James Pazos': ['SEA'],\n",
    "             'Johnny Barbato': ['PIT'], 'Kirby Yates': ['SD', 'LAA'], 'Nick Goody': ['CLE'],\n",
    "             'Richard Bleier': ['BAL'], 'Tyler Olson': ['CLE']}\n",
    "columnToAdd = []\n",
    "for index, row in yanks_df_add.iterrows():\n",
    "    dictVal = yanks_dict.get(yanks_df_add.at[index, 'player_name'])\n",
    "    if (dictVal is not None) and (yanks_df_add.at[index, 'home_team'] in dictVal):\n",
    "        columnToAdd.append('true')\n",
    "    else:\n",
    "        columnToAdd.append('false')\n",
    "\n",
    "yanks_df_add['home'] = pd.Series(columnToAdd)\n",
    "yanks_df_add.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Combine the test dataframes into one and write to csv\n",
    "yanks_df_add.set_index('player_name', inplace=True)\n",
    "yanks_test_combined = pd.concat([yanks_df2, yanks_df_add])\n",
    "yanks_test_combined.to_csv('2017_Yankees_COMBINED.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Finished Cleaning Yankees!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\koselekt\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2717: DtypeWarning: Columns (2,14,27,28,29,30,44,45,46,47,48,49,50,51) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    }
   ],
   "source": [
    "jays_df_small = pd.read_csv('2016_BlueJays.csv')\n",
    "jays_df2_small = pd.read_csv('2017_BlueJays.csv')\n",
    "jays_df = pd.read_csv('2016_BlueJays_FULL.csv')\n",
    "jays_df2 = pd.read_csv('2017_BlueJays_FULL.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Arnold Leon', 'Bo Schultz', 'Brett Cecil', 'Chad Girodo',\n",
       "       'Darwin Barney', 'Drew Hutchison', 'Drew Storen', 'Dustin Antolin',\n",
       "       'Franklin Morales', 'Gavin Floyd', 'Jesse Chavez', 'Joaquin Benoit',\n",
       "       'Pat Venditte', 'R.A. Dickey', 'Ryan Goins', 'Scott Diamond',\n",
       "       'Scott Feldman'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find players present in training data but not test data\n",
    "jays_discrepancies = pd.Index(jays_df_small['player_name']).difference(pd.Index(jays_df2_small['player_name']))\n",
    "jays_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Brett Anderson', 'Carlos Ramirez', 'Casey Lawrence', 'Cesar Valdez',\n",
       "       'Chris Rowley', 'Chris Smith', 'Dominic Leone', 'Glenn Sparkman',\n",
       "       'J.P. Howell', 'Jeff Beliveau', 'Joe Smith', 'Leonel Campos',\n",
       "       'Lucas Harrell', 'Luis Santos', 'Mat Latos', 'Mike Bolsinger',\n",
       "       'Nick Tepesch', 'TJ House', 'Taylor Cole', 'Tim Mayza', 'Tom Koehler'],\n",
       "      dtype='object', name='player_name')"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# find players in test data but not training data\n",
    "jays_2017_discrepancies = pd.Index(jays_df2_small['player_name']).difference(pd.Index(jays_df_small['player_name']))\n",
    "jays_2017_discrepancies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>spin_dir</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>player_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.9</td>\n",
       "      <td>-1.1948</td>\n",
       "      <td>5.9921</td>\n",
       "      <td>595885</td>\n",
       "      <td>532077</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.020</td>\n",
       "      <td>0.022</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>63</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.8</td>\n",
       "      <td>-1.0777</td>\n",
       "      <td>6.1772</td>\n",
       "      <td>595885</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.7</td>\n",
       "      <td>-0.6208</td>\n",
       "      <td>6.3387</td>\n",
       "      <td>595885</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>2</td>\n",
       "      <td>63</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>82.8</td>\n",
       "      <td>-0.9901</td>\n",
       "      <td>6.0626</td>\n",
       "      <td>595885</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.9</td>\n",
       "      <td>-0.8903</td>\n",
       "      <td>6.1341</td>\n",
       "      <td>595885</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.0</td>\n",
       "      <td>-0.9614</td>\n",
       "      <td>6.2128</td>\n",
       "      <td>595885</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>63</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.3</td>\n",
       "      <td>-0.8868</td>\n",
       "      <td>6.1033</td>\n",
       "      <td>407812</td>\n",
       "      <td>532077</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.187</td>\n",
       "      <td>0.175</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>62</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.0</td>\n",
       "      <td>-0.7881</td>\n",
       "      <td>6.3811</td>\n",
       "      <td>407812</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>62</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.7</td>\n",
       "      <td>-0.6371</td>\n",
       "      <td>6.2552</td>\n",
       "      <td>407812</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>62</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.6</td>\n",
       "      <td>-0.8683</td>\n",
       "      <td>6.1643</td>\n",
       "      <td>407812</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>62</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.4</td>\n",
       "      <td>-1.0644</td>\n",
       "      <td>6.1319</td>\n",
       "      <td>407812</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>62</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.7</td>\n",
       "      <td>-1.0474</td>\n",
       "      <td>6.1683</td>\n",
       "      <td>407812</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>62</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>91.0</td>\n",
       "      <td>-1.0100</td>\n",
       "      <td>6.1779</td>\n",
       "      <td>642180</td>\n",
       "      <td>532077</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>61</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.9</td>\n",
       "      <td>-0.6287</td>\n",
       "      <td>6.3425</td>\n",
       "      <td>642180</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>61</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.1</td>\n",
       "      <td>-0.6729</td>\n",
       "      <td>6.3046</td>\n",
       "      <td>642180</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>61</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.1</td>\n",
       "      <td>-0.6091</td>\n",
       "      <td>6.4217</td>\n",
       "      <td>642180</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>61</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.9</td>\n",
       "      <td>-0.8613</td>\n",
       "      <td>6.2766</td>\n",
       "      <td>642180</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>61</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Roberto Osuna</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>93.3</td>\n",
       "      <td>-1.0989</td>\n",
       "      <td>6.1944</td>\n",
       "      <td>642180</td>\n",
       "      <td>532077</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>61</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>90.5</td>\n",
       "      <td>-2.3781</td>\n",
       "      <td>5.7035</td>\n",
       "      <td>591720</td>\n",
       "      <td>572193</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.750</td>\n",
       "      <td>0.698</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>57</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>90.5</td>\n",
       "      <td>-2.2690</td>\n",
       "      <td>5.7834</td>\n",
       "      <td>591720</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>57</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>94.8</td>\n",
       "      <td>-2.3612</td>\n",
       "      <td>5.7516</td>\n",
       "      <td>591720</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>4</td>\n",
       "      <td>57</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.6</td>\n",
       "      <td>-2.3024</td>\n",
       "      <td>5.7175</td>\n",
       "      <td>591720</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>57</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.9</td>\n",
       "      <td>-2.2782</td>\n",
       "      <td>5.7070</td>\n",
       "      <td>591720</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>57</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.5</td>\n",
       "      <td>-2.2880</td>\n",
       "      <td>5.7583</td>\n",
       "      <td>591720</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>57</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>89.5</td>\n",
       "      <td>-2.1581</td>\n",
       "      <td>5.7269</td>\n",
       "      <td>543305</td>\n",
       "      <td>572193</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>56</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>88.9</td>\n",
       "      <td>-2.4131</td>\n",
       "      <td>5.6191</td>\n",
       "      <td>543305</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>56</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>96.5</td>\n",
       "      <td>-2.3154</td>\n",
       "      <td>5.6546</td>\n",
       "      <td>543305</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>56</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>92.6</td>\n",
       "      <td>-2.4485</td>\n",
       "      <td>5.8427</td>\n",
       "      <td>543305</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>56</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>95.7</td>\n",
       "      <td>-2.2898</td>\n",
       "      <td>5.7926</td>\n",
       "      <td>543305</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>56</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ryan Tepera</th>\n",
       "      <td>FT</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>97.2</td>\n",
       "      <td>-2.4609</td>\n",
       "      <td>5.7325</td>\n",
       "      <td>543305</td>\n",
       "      <td>572193</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>56</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>91.0</td>\n",
       "      <td>-0.7024</td>\n",
       "      <td>6.5160</td>\n",
       "      <td>570731</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>3</td>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>91.3</td>\n",
       "      <td>-0.6613</td>\n",
       "      <td>6.5098</td>\n",
       "      <td>570731</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>17</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>90.5</td>\n",
       "      <td>-0.9684</td>\n",
       "      <td>6.5639</td>\n",
       "      <td>570731</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>90.7</td>\n",
       "      <td>-0.8998</td>\n",
       "      <td>6.5059</td>\n",
       "      <td>570731</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>78.3</td>\n",
       "      <td>-0.8658</td>\n",
       "      <td>6.5026</td>\n",
       "      <td>547957</td>\n",
       "      <td>462136</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.528</td>\n",
       "      <td>0.494</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>16</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>78.0</td>\n",
       "      <td>-0.9207</td>\n",
       "      <td>6.5664</td>\n",
       "      <td>547957</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>16</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>78.5</td>\n",
       "      <td>-0.8698</td>\n",
       "      <td>6.5585</td>\n",
       "      <td>547957</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>90.0</td>\n",
       "      <td>-0.7888</td>\n",
       "      <td>6.5382</td>\n",
       "      <td>547957</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>16</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.6</td>\n",
       "      <td>-0.8460</td>\n",
       "      <td>6.6060</td>\n",
       "      <td>547957</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>78.0</td>\n",
       "      <td>-1.1338</td>\n",
       "      <td>6.6017</td>\n",
       "      <td>456078</td>\n",
       "      <td>462136</td>\n",
       "      <td>double</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.047</td>\n",
       "      <td>0.086</td>\n",
       "      <td>1.25</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>15</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>76.8</td>\n",
       "      <td>-1.0750</td>\n",
       "      <td>6.5755</td>\n",
       "      <td>456078</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>15</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>79.4</td>\n",
       "      <td>-0.9571</td>\n",
       "      <td>6.5295</td>\n",
       "      <td>444432</td>\n",
       "      <td>462136</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.012</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>80.5</td>\n",
       "      <td>-0.9905</td>\n",
       "      <td>6.4881</td>\n",
       "      <td>444432</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>90.7</td>\n",
       "      <td>-0.8954</td>\n",
       "      <td>6.5551</td>\n",
       "      <td>444432</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>88.7</td>\n",
       "      <td>-0.6651</td>\n",
       "      <td>6.4976</td>\n",
       "      <td>448801</td>\n",
       "      <td>462136</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.147</td>\n",
       "      <td>0.138</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>91.0</td>\n",
       "      <td>-0.7504</td>\n",
       "      <td>6.6007</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>walk</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>77.4</td>\n",
       "      <td>-0.9287</td>\n",
       "      <td>6.4746</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CU</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>78.3</td>\n",
       "      <td>-0.9583</td>\n",
       "      <td>6.4747</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>78.6</td>\n",
       "      <td>-0.9511</td>\n",
       "      <td>6.4900</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.3</td>\n",
       "      <td>-0.8602</td>\n",
       "      <td>6.5610</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.9</td>\n",
       "      <td>-0.8697</td>\n",
       "      <td>6.4867</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FC</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>87.8</td>\n",
       "      <td>-0.9888</td>\n",
       "      <td>6.5732</td>\n",
       "      <td>592518</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>blocked_ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>77.9</td>\n",
       "      <td>-1.1337</td>\n",
       "      <td>6.5538</td>\n",
       "      <td>430945</td>\n",
       "      <td>462136</td>\n",
       "      <td>double</td>\n",
       "      <td>hit_into_play_no_out</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.557</td>\n",
       "      <td>0.520</td>\n",
       "      <td>1.25</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.8</td>\n",
       "      <td>-0.8281</td>\n",
       "      <td>6.5899</td>\n",
       "      <td>430945</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>foul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.4</td>\n",
       "      <td>-0.9230</td>\n",
       "      <td>6.5858</td>\n",
       "      <td>430945</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>90.1</td>\n",
       "      <td>-0.9671</td>\n",
       "      <td>6.5634</td>\n",
       "      <td>430945</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>89.9</td>\n",
       "      <td>-1.0119</td>\n",
       "      <td>6.5440</td>\n",
       "      <td>430945</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>77.4</td>\n",
       "      <td>-0.9610</td>\n",
       "      <td>6.6073</td>\n",
       "      <td>452234</td>\n",
       "      <td>462136</td>\n",
       "      <td>field_out</td>\n",
       "      <td>hit_into_play</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.068</td>\n",
       "      <td>0.095</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>77.7</td>\n",
       "      <td>-1.1735</td>\n",
       "      <td>6.5632</td>\n",
       "      <td>452234</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Marco Estrada</th>\n",
       "      <td>FF</td>\n",
       "      <td>2017-04-03</td>\n",
       "      <td>88.8</td>\n",
       "      <td>-1.0504</td>\n",
       "      <td>6.5878</td>\n",
       "      <td>452234</td>\n",
       "      <td>462136</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>false</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>18049 rows × 78 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              pitch_type   game_date release_speed release_pos_x  \\\n",
       "player_name                                                        \n",
       "Roberto Osuna         FC  2017-10-01          91.9       -1.1948   \n",
       "Roberto Osuna         FC  2017-10-01          91.8       -1.0777   \n",
       "Roberto Osuna         FF  2017-10-01          94.7       -0.6208   \n",
       "Roberto Osuna         CH  2017-10-01          82.8       -0.9901   \n",
       "Roberto Osuna         FT  2017-10-01          95.9       -0.8903   \n",
       "Roberto Osuna         FF  2017-10-01          96.0       -0.9614   \n",
       "Roberto Osuna         FC  2017-10-01          91.3       -0.8868   \n",
       "Roberto Osuna         FC  2017-10-01          91.0       -0.7881   \n",
       "Roberto Osuna         FF  2017-10-01          96.7       -0.6371   \n",
       "Roberto Osuna         FT  2017-10-01          95.6       -0.8683   \n",
       "Roberto Osuna         FF  2017-10-01          95.4       -1.0644   \n",
       "Roberto Osuna         FC  2017-10-01          91.7       -1.0474   \n",
       "Roberto Osuna         FC  2017-10-01          91.0       -1.0100   \n",
       "Roberto Osuna         FF  2017-10-01          94.9       -0.6287   \n",
       "Roberto Osuna         FF  2017-10-01          96.1       -0.6729   \n",
       "Roberto Osuna         FT  2017-10-01          96.1       -0.6091   \n",
       "Roberto Osuna         FT  2017-10-01          94.9       -0.8613   \n",
       "Roberto Osuna         FT  2017-10-01          93.3       -1.0989   \n",
       "Ryan Tepera           CU  2017-10-01          90.5       -2.3781   \n",
       "Ryan Tepera           FC  2017-10-01          90.5       -2.2690   \n",
       "Ryan Tepera           FT  2017-10-01          94.8       -2.3612   \n",
       "Ryan Tepera           FC  2017-10-01          89.6       -2.3024   \n",
       "Ryan Tepera           FC  2017-10-01          89.9       -2.2782   \n",
       "Ryan Tepera           FC  2017-10-01          89.5       -2.2880   \n",
       "Ryan Tepera           FC  2017-10-01          89.5       -2.1581   \n",
       "Ryan Tepera           FC  2017-10-01          88.9       -2.4131   \n",
       "Ryan Tepera           FT  2017-10-01          96.5       -2.3154   \n",
       "Ryan Tepera           FT  2017-10-01          92.6       -2.4485   \n",
       "Ryan Tepera           FT  2017-10-01          95.7       -2.2898   \n",
       "Ryan Tepera           FT  2017-10-01          97.2       -2.4609   \n",
       "...                  ...         ...           ...           ...   \n",
       "Marco Estrada         FF  2017-04-03          91.0       -0.7024   \n",
       "Marco Estrada         FF  2017-04-03          91.3       -0.6613   \n",
       "Marco Estrada         FF  2017-04-03          90.5       -0.9684   \n",
       "Marco Estrada         FF  2017-04-03          90.7       -0.8998   \n",
       "Marco Estrada         CH  2017-04-03          78.3       -0.8658   \n",
       "Marco Estrada         CH  2017-04-03          78.0       -0.9207   \n",
       "Marco Estrada         CH  2017-04-03          78.5       -0.8698   \n",
       "Marco Estrada         FF  2017-04-03          90.0       -0.7888   \n",
       "Marco Estrada         FF  2017-04-03          89.6       -0.8460   \n",
       "Marco Estrada         CH  2017-04-03          78.0       -1.1338   \n",
       "Marco Estrada         CU  2017-04-03          76.8       -1.0750   \n",
       "Marco Estrada         CH  2017-04-03          79.4       -0.9571   \n",
       "Marco Estrada         CH  2017-04-03          80.5       -0.9905   \n",
       "Marco Estrada         FF  2017-04-03          90.7       -0.8954   \n",
       "Marco Estrada         FC  2017-04-03          88.7       -0.6651   \n",
       "Marco Estrada         FF  2017-04-03          91.0       -0.7504   \n",
       "Marco Estrada         CH  2017-04-03          77.4       -0.9287   \n",
       "Marco Estrada         CU  2017-04-03          78.3       -0.9583   \n",
       "Marco Estrada         CH  2017-04-03          78.6       -0.9511   \n",
       "Marco Estrada         FF  2017-04-03          89.3       -0.8602   \n",
       "Marco Estrada         FF  2017-04-03          89.9       -0.8697   \n",
       "Marco Estrada         FC  2017-04-03          87.8       -0.9888   \n",
       "Marco Estrada         CH  2017-04-03          77.9       -1.1337   \n",
       "Marco Estrada         FF  2017-04-03          89.8       -0.8281   \n",
       "Marco Estrada         FF  2017-04-03          89.4       -0.9230   \n",
       "Marco Estrada         FF  2017-04-03          90.1       -0.9671   \n",
       "Marco Estrada         FF  2017-04-03          89.9       -1.0119   \n",
       "Marco Estrada         CH  2017-04-03          77.4       -0.9610   \n",
       "Marco Estrada         CH  2017-04-03          77.7       -1.1735   \n",
       "Marco Estrada         FF  2017-04-03          88.8       -1.0504   \n",
       "\n",
       "              release_pos_z  batter  pitcher     events           description  \\\n",
       "player_name                                                                     \n",
       "Roberto Osuna        5.9921  595885   532077  field_out         hit_into_play   \n",
       "Roberto Osuna        6.1772  595885   532077       null                  foul   \n",
       "Roberto Osuna        6.3387  595885   532077       null                  ball   \n",
       "Roberto Osuna        6.0626  595885   532077       null                  ball   \n",
       "Roberto Osuna        6.1341  595885   532077       null                  ball   \n",
       "Roberto Osuna        6.2128  595885   532077       null         called_strike   \n",
       "Roberto Osuna        6.1033  407812   532077  field_out         hit_into_play   \n",
       "Roberto Osuna        6.3811  407812   532077       null                  foul   \n",
       "Roberto Osuna        6.2552  407812   532077       null                  foul   \n",
       "Roberto Osuna        6.1643  407812   532077       null         called_strike   \n",
       "Roberto Osuna        6.1319  407812   532077       null       swinging_strike   \n",
       "Roberto Osuna        6.1683  407812   532077       null                  ball   \n",
       "Roberto Osuna        6.1779  642180   532077  strikeout       swinging_strike   \n",
       "Roberto Osuna        6.3425  642180   532077       null                  ball   \n",
       "Roberto Osuna        6.3046  642180   532077       null                  ball   \n",
       "Roberto Osuna        6.4217  642180   532077       null                  ball   \n",
       "Roberto Osuna        6.2766  642180   532077       null       swinging_strike   \n",
       "Roberto Osuna        6.1944  642180   532077       null         called_strike   \n",
       "Ryan Tepera          5.7035  591720   572193  field_out         hit_into_play   \n",
       "Ryan Tepera          5.7834  591720   572193       null                  foul   \n",
       "Ryan Tepera          5.7516  591720   572193       null                  foul   \n",
       "Ryan Tepera          5.7175  591720   572193       null                  ball   \n",
       "Ryan Tepera          5.7070  591720   572193       null                  ball   \n",
       "Ryan Tepera          5.7583  591720   572193       null       swinging_strike   \n",
       "Ryan Tepera          5.7269  543305   572193  strikeout       swinging_strike   \n",
       "Ryan Tepera          5.6191  543305   572193       null                  ball   \n",
       "Ryan Tepera          5.6546  543305   572193       null                  ball   \n",
       "Ryan Tepera          5.8427  543305   572193       null                  ball   \n",
       "Ryan Tepera          5.7926  543305   572193       null         called_strike   \n",
       "Ryan Tepera          5.7325  543305   572193       null         called_strike   \n",
       "...                     ...     ...      ...        ...                   ...   \n",
       "Marco Estrada        6.5160  570731   462136       null                  foul   \n",
       "Marco Estrada        6.5098  570731   462136       null                  foul   \n",
       "Marco Estrada        6.5639  570731   462136       null                  ball   \n",
       "Marco Estrada        6.5059  570731   462136       null         called_strike   \n",
       "Marco Estrada        6.5026  547957   462136  field_out         hit_into_play   \n",
       "Marco Estrada        6.5664  547957   462136       null                  foul   \n",
       "Marco Estrada        6.5585  547957   462136       null                  foul   \n",
       "Marco Estrada        6.5382  547957   462136       null                  ball   \n",
       "Marco Estrada        6.6060  547957   462136       null                  ball   \n",
       "Marco Estrada        6.6017  456078   462136     double  hit_into_play_no_out   \n",
       "Marco Estrada        6.5755  456078   462136       null         called_strike   \n",
       "Marco Estrada        6.5295  444432   462136  field_out         hit_into_play   \n",
       "Marco Estrada        6.4881  444432   462136       null       swinging_strike   \n",
       "Marco Estrada        6.5551  444432   462136       null                  foul   \n",
       "Marco Estrada        6.4976  448801   462136  field_out         hit_into_play   \n",
       "Marco Estrada        6.6007  592518   462136       walk                  ball   \n",
       "Marco Estrada        6.4746  592518   462136       null                  foul   \n",
       "Marco Estrada        6.4747  592518   462136       null         called_strike   \n",
       "Marco Estrada        6.4900  592518   462136       null          blocked_ball   \n",
       "Marco Estrada        6.5610  592518   462136       null                  ball   \n",
       "Marco Estrada        6.4867  592518   462136       null         called_strike   \n",
       "Marco Estrada        6.5732  592518   462136       null          blocked_ball   \n",
       "Marco Estrada        6.5538  430945   462136     double  hit_into_play_no_out   \n",
       "Marco Estrada        6.5899  430945   462136       null                  foul   \n",
       "Marco Estrada        6.5858  430945   462136       null                  ball   \n",
       "Marco Estrada        6.5634  430945   462136       null       swinging_strike   \n",
       "Marco Estrada        6.5440  430945   462136       null                  ball   \n",
       "Marco Estrada        6.6073  452234   462136  field_out         hit_into_play   \n",
       "Marco Estrada        6.5632  452234   462136       null                  ball   \n",
       "Marco Estrada        6.5878  452234   462136       null         called_strike   \n",
       "\n",
       "               spin_dir  ...    estimated_ba_using_speedangle  \\\n",
       "player_name              ...                                    \n",
       "Roberto Osuna       NaN  ...                            0.020   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.187   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Roberto Osuna       NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.750   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "Ryan Tepera         NaN  ...                            0.000   \n",
       "...                 ...  ...                              ...   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.528   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.047   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.012   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.147   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.557   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.068   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "Marco Estrada       NaN  ...                            0.000   \n",
       "\n",
       "               estimated_woba_using_speedangle  woba_value woba_denom  \\\n",
       "player_name                                                             \n",
       "Roberto Osuna                            0.022        0.00          1   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.175        0.00          1   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        0.00          1   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Roberto Osuna                            0.000        null       null   \n",
       "Ryan Tepera                              0.698        0.00          1   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        0.00          1   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "Ryan Tepera                              0.000        null       null   \n",
       "...                                        ...         ...        ...   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.494        0.00          1   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.086        1.25          1   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.014        0.00          1   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.138        0.00          1   \n",
       "Marco Estrada                            0.000        0.70          1   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.520        1.25          1   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.095        0.00          1   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "Marco Estrada                            0.000        null       null   \n",
       "\n",
       "              babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "player_name                                                            \n",
       "Roberto Osuna           0         0                  3            63   \n",
       "Roberto Osuna        null      null               null            63   \n",
       "Roberto Osuna        null      null                  2            63   \n",
       "Roberto Osuna        null      null               null            63   \n",
       "Roberto Osuna        null      null               null            63   \n",
       "Roberto Osuna        null      null               null            63   \n",
       "Roberto Osuna           0         0                  2            62   \n",
       "Roberto Osuna        null      null                  3            62   \n",
       "Roberto Osuna        null      null                  1            62   \n",
       "Roberto Osuna        null      null               null            62   \n",
       "Roberto Osuna        null      null               null            62   \n",
       "Roberto Osuna        null      null               null            62   \n",
       "Roberto Osuna           0         0               null            61   \n",
       "Roberto Osuna        null      null               null            61   \n",
       "Roberto Osuna        null      null               null            61   \n",
       "Roberto Osuna        null      null               null            61   \n",
       "Roberto Osuna        null      null               null            61   \n",
       "Roberto Osuna        null      null               null            61   \n",
       "Ryan Tepera             0         0                  4            57   \n",
       "Ryan Tepera          null      null                  1            57   \n",
       "Ryan Tepera          null      null                  4            57   \n",
       "Ryan Tepera          null      null               null            57   \n",
       "Ryan Tepera          null      null               null            57   \n",
       "Ryan Tepera          null      null               null            57   \n",
       "Ryan Tepera             0         0               null            56   \n",
       "Ryan Tepera          null      null               null            56   \n",
       "Ryan Tepera          null      null               null            56   \n",
       "Ryan Tepera          null      null               null            56   \n",
       "Ryan Tepera          null      null               null            56   \n",
       "Ryan Tepera          null      null               null            56   \n",
       "...                   ...       ...                ...           ...   \n",
       "Marco Estrada        null      null                  3            17   \n",
       "Marco Estrada        null      null               null            17   \n",
       "Marco Estrada        null      null               null            17   \n",
       "Marco Estrada        null      null               null            17   \n",
       "Marco Estrada           0         0                  4            16   \n",
       "Marco Estrada        null      null               null            16   \n",
       "Marco Estrada        null      null               null            16   \n",
       "Marco Estrada        null      null               null            16   \n",
       "Marco Estrada        null      null               null            16   \n",
       "Marco Estrada           1         1                  3            15   \n",
       "Marco Estrada        null      null               null            15   \n",
       "Marco Estrada           0         0                  3             9   \n",
       "Marco Estrada        null      null               null             9   \n",
       "Marco Estrada        null      null                  4             9   \n",
       "Marco Estrada           0         0                  2             8   \n",
       "Marco Estrada           0         0               null             7   \n",
       "Marco Estrada        null      null                  1             7   \n",
       "Marco Estrada        null      null               null             7   \n",
       "Marco Estrada        null      null               null             7   \n",
       "Marco Estrada        null      null               null             7   \n",
       "Marco Estrada        null      null               null             7   \n",
       "Marco Estrada        null      null               null             7   \n",
       "Marco Estrada           1         1                  4             6   \n",
       "Marco Estrada        null      null                  4             6   \n",
       "Marco Estrada        null      null               null             6   \n",
       "Marco Estrada        null      null               null             6   \n",
       "Marco Estrada        null      null               null             6   \n",
       "Marco Estrada           0         0                  3             5   \n",
       "Marco Estrada        null      null               null             5   \n",
       "Marco Estrada        null      null               null             5   \n",
       "\n",
       "              pitch_number   home  \n",
       "player_name                        \n",
       "Roberto Osuna            6  false  \n",
       "Roberto Osuna            5  false  \n",
       "Roberto Osuna            4  false  \n",
       "Roberto Osuna            3  false  \n",
       "Roberto Osuna            2  false  \n",
       "Roberto Osuna            1  false  \n",
       "Roberto Osuna            6  false  \n",
       "Roberto Osuna            5  false  \n",
       "Roberto Osuna            4  false  \n",
       "Roberto Osuna            3  false  \n",
       "Roberto Osuna            2  false  \n",
       "Roberto Osuna            1  false  \n",
       "Roberto Osuna            6  false  \n",
       "Roberto Osuna            5  false  \n",
       "Roberto Osuna            4  false  \n",
       "Roberto Osuna            3  false  \n",
       "Roberto Osuna            2  false  \n",
       "Roberto Osuna            1  false  \n",
       "Ryan Tepera              6  false  \n",
       "Ryan Tepera              5  false  \n",
       "Ryan Tepera              4  false  \n",
       "Ryan Tepera              3  false  \n",
       "Ryan Tepera              2  false  \n",
       "Ryan Tepera              1  false  \n",
       "Ryan Tepera              6  false  \n",
       "Ryan Tepera              5  false  \n",
       "Ryan Tepera              4  false  \n",
       "Ryan Tepera              3  false  \n",
       "Ryan Tepera              2  false  \n",
       "Ryan Tepera              1  false  \n",
       "...                    ...    ...  \n",
       "Marco Estrada            4  false  \n",
       "Marco Estrada            3  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            5  false  \n",
       "Marco Estrada            4  false  \n",
       "Marco Estrada            3  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            3  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            7  false  \n",
       "Marco Estrada            6  false  \n",
       "Marco Estrada            5  false  \n",
       "Marco Estrada            4  false  \n",
       "Marco Estrada            3  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            5  false  \n",
       "Marco Estrada            4  false  \n",
       "Marco Estrada            3  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "Marco Estrada            3  false  \n",
       "Marco Estrada            2  false  \n",
       "Marco Estrada            1  false  \n",
       "\n",
       "[18049 rows x 78 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add home column to 2017 test data\n",
    "jays_df2['home'] = jays_df2['home_team'].apply(lambda x: 'true' if x == 'TOR' else 'false')\n",
    "\n",
    "# drop players that are in test data but not training data\n",
    "jays_df2.set_index('player_name', inplace=True)\n",
    "jays_df2.drop(jays_2017_discrepancies, inplace=True)\n",
    "jays_df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true     11999\n",
       "false    11245\n",
       "Name: home, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add the home column to unmodified training and test files\n",
    "jays_df['home'] = jays_df['home_team'].apply(lambda x: 'true' if x == 'TOR' else 'false')\n",
    "jays_df['home'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Drop players that retired or unsigned in 2017\n",
    "jays_df.set_index('player_name', inplace=True)\n",
    "jays_df.drop(labels=pd.Index(['Arnold Leon', 'Bo Schultz', 'Chad Girodo',\n",
    "                             'Darwin Barney', 'Drew Hutchison', 'Dustin Antolin',\n",
    "                             'Franklin Morales', 'Gavin Floyd', 'Pat Venditte',\n",
    "                             'Ryan Goins', 'Scott Diamond']), inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pitch_type</th>\n",
       "      <th>game_date</th>\n",
       "      <th>release_speed</th>\n",
       "      <th>release_pos_x</th>\n",
       "      <th>release_pos_z</th>\n",
       "      <th>player_name</th>\n",
       "      <th>batter</th>\n",
       "      <th>pitcher</th>\n",
       "      <th>events</th>\n",
       "      <th>description</th>\n",
       "      <th>...</th>\n",
       "      <th>estimated_ba_using_speedangle</th>\n",
       "      <th>estimated_woba_using_speedangle</th>\n",
       "      <th>woba_value</th>\n",
       "      <th>woba_denom</th>\n",
       "      <th>babip_value</th>\n",
       "      <th>iso_value</th>\n",
       "      <th>launch_speed_angle</th>\n",
       "      <th>at_bat_number</th>\n",
       "      <th>pitch_number</th>\n",
       "      <th>home</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>KC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>82.3</td>\n",
       "      <td>0.6420</td>\n",
       "      <td>6.5191</td>\n",
       "      <td>Brett Cecil</td>\n",
       "      <td>542979</td>\n",
       "      <td>446399</td>\n",
       "      <td>strikeout</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>null</td>\n",
       "      <td>40</td>\n",
       "      <td>6</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>KC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>83.8</td>\n",
       "      <td>0.4277</td>\n",
       "      <td>6.4528</td>\n",
       "      <td>Brett Cecil</td>\n",
       "      <td>542979</td>\n",
       "      <td>446399</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>40</td>\n",
       "      <td>5</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>KC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>74.8</td>\n",
       "      <td>1.1078</td>\n",
       "      <td>6.3852</td>\n",
       "      <td>Brett Cecil</td>\n",
       "      <td>542979</td>\n",
       "      <td>446399</td>\n",
       "      <td>null</td>\n",
       "      <td>ball</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>40</td>\n",
       "      <td>4</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CH</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>81.5</td>\n",
       "      <td>0.5627</td>\n",
       "      <td>6.5849</td>\n",
       "      <td>Brett Cecil</td>\n",
       "      <td>542979</td>\n",
       "      <td>446399</td>\n",
       "      <td>null</td>\n",
       "      <td>swinging_strike</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>40</td>\n",
       "      <td>3</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>KC</td>\n",
       "      <td>2017-10-01</td>\n",
       "      <td>81.3</td>\n",
       "      <td>0.5002</td>\n",
       "      <td>6.5679</td>\n",
       "      <td>Brett Cecil</td>\n",
       "      <td>542979</td>\n",
       "      <td>446399</td>\n",
       "      <td>null</td>\n",
       "      <td>called_strike</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>null</td>\n",
       "      <td>40</td>\n",
       "      <td>2</td>\n",
       "      <td>true</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 79 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  pitch_type   game_date release_speed release_pos_x release_pos_z  \\\n",
       "0         KC  2017-10-01          82.3        0.6420        6.5191   \n",
       "1         KC  2017-10-01          83.8        0.4277        6.4528   \n",
       "2         KC  2017-10-01          74.8        1.1078        6.3852   \n",
       "3         CH  2017-10-01          81.5        0.5627        6.5849   \n",
       "4         KC  2017-10-01          81.3        0.5002        6.5679   \n",
       "\n",
       "   player_name  batter  pitcher     events      description  ...   \\\n",
       "0  Brett Cecil  542979   446399  strikeout  swinging_strike  ...    \n",
       "1  Brett Cecil  542979   446399       null             ball  ...    \n",
       "2  Brett Cecil  542979   446399       null             ball  ...    \n",
       "3  Brett Cecil  542979   446399       null  swinging_strike  ...    \n",
       "4  Brett Cecil  542979   446399       null    called_strike  ...    \n",
       "\n",
       "   estimated_ba_using_speedangle  estimated_woba_using_speedangle  woba_value  \\\n",
       "0                            0.0                              0.0        0.00   \n",
       "1                            0.0                              0.0        null   \n",
       "2                            0.0                              0.0        null   \n",
       "3                            0.0                              0.0        null   \n",
       "4                            0.0                              0.0        null   \n",
       "\n",
       "   woba_denom babip_value iso_value launch_speed_angle at_bat_number  \\\n",
       "0           1           0         0               null            40   \n",
       "1        null        null      null               null            40   \n",
       "2        null        null      null               null            40   \n",
       "3        null        null      null               null            40   \n",
       "4        null        null      null               null            40   \n",
       "\n",
       "  pitch_number  home  \n",
       "0            6  true  \n",
       "1            5  true  \n",
       "2            4  true  \n",
       "3            3  true  \n",
       "4            2  true  \n",
       "\n",
       "[5 rows x 79 columns]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# here add home column to new pitchers\n",
    "jays_df_add = pd.read_csv('2017_BlueJays_ADD.csv')\n",
    "\n",
    "jays_dict = {'Brett Cecil': ['STL'], 'Drew Storen': ['CIN'], 'Jesse Chavez': ['LAA'],\n",
    "            'Joaquin Benoit': ['PIT', 'PHI'], 'R.A. Dickey': ['ATL'], 'Scott Feldman': ['CIN']}\n",
    "columnToAdd = []\n",
    "for index, row in jays_df_add.iterrows():\n",
    "    dictVal = jays_dict.get(jays_df_add.at[index, 'player_name'])\n",
    "    if (dictVal is not None) and (jays_df_add.at[index, 'home_team'] in dictVal):\n",
    "        columnToAdd.append('true')\n",
    "    else:\n",
    "        columnToAdd.append('false')\n",
    "\n",
    "jays_df_add['home'] = pd.Series(columnToAdd)\n",
    "jays_df_add.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Combine the test dataframes into one and write to csv\n",
    "jays_df_add.set_index('player_name', inplace=True)\n",
    "jays_test_combined = pd.concat([jays_df2, jays_df_add])\n",
    "jays_test_combined.to_csv('2017_BlueJays_COMBINED.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Finished Cleaning BlueJays!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "test_combined = pd.concat([jays_test_combined, reds_test_combined,\n",
    "                              yanks_test_combined, mets_test_combined])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "training_combined = pd.concat([jays_df, reds_df, yanks_df, mets_df])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#training_combined.to_csv('2016_Training_COMBINED.csv')\n",
    "#test_combined.to_csv('2017_Test_COMBINED.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Everything has been combined into the CSVs\n",
    "Now we just need to engineer the features and load them into the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#training_combined = pd.read_csv('2016_Training_COMBINED.csv')\n",
    "#test_combined = pd.read_csv('2017_Test_COMBINED.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# create a dictionary to code the pitch_type column\n",
    "fastball_dict = {'CH': 'false', 'CU': 'false', 'EP': 'false', 'FC': 'true', 'FF': 'true', 'FO': 'false', 'FS': 'true', 'FT': 'true',\n",
    "                'GY': 'false', 'IN': 'false', 'KC': 'false', 'KN': 'false', 'PO': 'false', 'SC': 'false', 'SI': 'true', 'SL': 'false',\n",
    "                'UN': 'false'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# add boolean pitch type column to 2016 Training data\n",
    "training_combined['pitch_type'] = training_combined['pitch_type'].map(fastball_dict)\n",
    "#training_combined.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# add boolean pitch type column to 2017 Test data\n",
    "test_combined['pitch_type'] = test_combined['pitch_type'].map(fastball_dict)\n",
    "#test_combined.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{('Aaron Loup', 'false'): 33.333333333333336,\n",
       " ('Aaron Loup', 'true'): 66.666666666666671,\n",
       " ('Aaron Sanchez', 'false'): 25.179856115107913,\n",
       " ('Aaron Sanchez', 'true'): 74.82014388489209,\n",
       " ('Abel De Los Santos', 'false'): 36.697247706422019,\n",
       " ('Abel De Los Santos', 'true'): 63.302752293577981,\n",
       " ('Adam Warren', 'false'): 58.653846153846153,\n",
       " ('Adam Warren', 'true'): 41.346153846153847,\n",
       " ('Addison Reed', 'false'): 28.331936295054483,\n",
       " ('Addison Reed', 'true'): 71.66806370494551,\n",
       " ('Andrew Miller', 'false'): 60.623229461756374,\n",
       " ('Andrew Miller', 'true'): 39.376770538243626,\n",
       " ('Anthony Swarzak', 'false'): 51.434426229508198,\n",
       " ('Anthony Swarzak', 'true'): 48.565573770491802,\n",
       " ('Antonio Bastardo', 'false'): 35.945273631840799,\n",
       " ('Antonio Bastardo', 'true'): 64.054726368159209,\n",
       " ('Aroldis Chapman', 'false'): 19.696969696969695,\n",
       " ('Aroldis Chapman', 'true'): 80.303030303030297,\n",
       " ('Bartolo Colon', 'false'): 11.189056471413538,\n",
       " ('Bartolo Colon', 'true'): 88.810943528586463,\n",
       " ('Ben Heller', 'false'): 45.562130177514796,\n",
       " ('Ben Heller', 'true'): 54.437869822485204,\n",
       " ('Blake Parker', 'false'): 24.104234527687296,\n",
       " ('Blake Parker', 'true'): 75.895765472312704,\n",
       " ('Blake Wood', 'false'): 45.620715917745621,\n",
       " ('Blake Wood', 'true'): 54.379284082254379,\n",
       " ('Brandon Finnegan', 'false'): 35.124826629680996,\n",
       " ('Brandon Finnegan', 'true'): 64.875173370319004,\n",
       " ('Brett Cecil', 'false'): 51.590106007067135,\n",
       " ('Brett Cecil', 'true'): 48.409893992932865,\n",
       " ('Bryan Mitchell', 'false'): 24.742268041237114,\n",
       " ('Bryan Mitchell', 'true'): 75.257731958762889,\n",
       " ('CC Sabathia', 'false'): 34.329896907216494,\n",
       " ('CC Sabathia', 'true'): 65.670103092783506,\n",
       " ('Chad Green', 'false'): 32.177033492822964,\n",
       " ('Chad Green', 'true'): 67.822966507177028,\n",
       " ('Chasen Shreve', 'false'): 50.175438596491226,\n",
       " ('Chasen Shreve', 'true'): 49.824561403508774,\n",
       " ('Cody Reed', 'false'): 48.755656108597286,\n",
       " ('Cody Reed', 'true'): 51.244343891402714,\n",
       " ('Dan Straily', 'false'): 49.115913555992144,\n",
       " ('Dan Straily', 'true'): 50.884086444007856,\n",
       " ('Daniel Wright', 'false'): 38.260869565217391,\n",
       " ('Daniel Wright', 'true'): 61.739130434782609,\n",
       " ('Danny Barnes', 'false'): 32.905982905982903,\n",
       " ('Danny Barnes', 'true'): 67.09401709401709,\n",
       " ('Dayan Diaz', 'false'): 26.206896551724139,\n",
       " ('Dayan Diaz', 'true'): 73.793103448275858,\n",
       " ('Dellin Betances', 'false'): 56.741573033707866,\n",
       " ('Dellin Betances', 'true'): 43.258426966292134,\n",
       " ('Drew Storen', 'false'): 51.374570446735397,\n",
       " ('Drew Storen', 'true'): 48.625429553264603,\n",
       " ('Erik Goeddel', 'false'): 47.142857142857146,\n",
       " ('Erik Goeddel', 'true'): 52.857142857142854,\n",
       " ('Fernando Salas', 'false'): 38.211382113821138,\n",
       " ('Fernando Salas', 'true'): 61.788617886178862,\n",
       " ('Francisco Liriano', 'false'): 48.423707440100884,\n",
       " ('Francisco Liriano', 'true'): 51.576292559899116,\n",
       " ('Gabriel Ynoa', 'false'): 42.10526315789474,\n",
       " ('Gabriel Ynoa', 'true'): 57.89473684210526,\n",
       " ('Hansel Robles', 'false'): 33.866279069767444,\n",
       " ('Hansel Robles', 'true'): 66.133720930232556,\n",
       " ('Homer Bailey', 'false'): 47.379912663755455,\n",
       " ('Homer Bailey', 'true'): 52.620087336244545,\n",
       " ('Ivan Nova', 'false'): 34.123222748815166,\n",
       " ('Ivan Nova', 'true'): 65.876777251184834,\n",
       " ('J.A. Happ', 'false'): 26.517150395778366,\n",
       " ('J.A. Happ', 'true'): 73.482849604221641,\n",
       " ('J.J. Hoover', 'false'): 35.507246376811594,\n",
       " ('J.J. Hoover', 'true'): 64.492753623188406,\n",
       " ('JC Ramirez', 'false'): 32.45967741935484,\n",
       " ('JC Ramirez', 'true'): 67.540322580645167,\n",
       " ('Jacob deGrom', 'false'): 40.076498087547812,\n",
       " ('Jacob deGrom', 'true'): 59.923501912452188,\n",
       " ('James Pazos', 'false'): 34.482758620689658,\n",
       " ('James Pazos', 'true'): 65.517241379310349,\n",
       " ('Jason Grilli', 'false'): 39.837398373983739,\n",
       " ('Jason Grilli', 'true'): 60.162601626016261,\n",
       " ('Jerry Blevins', 'false'): 49.862637362637365,\n",
       " ('Jerry Blevins', 'true'): 50.137362637362635,\n",
       " ('Jesse Chavez', 'false'): 19.823788546255507,\n",
       " ('Jesse Chavez', 'true'): 80.1762114537445,\n",
       " ('Jeurys Familia', 'false'): 21.473851030110936,\n",
       " ('Jeurys Familia', 'true'): 78.526148969889064,\n",
       " ('Joaquin Benoit', 'false'): 42.359249329758711,\n",
       " ('Joaquin Benoit', 'true'): 57.640750670241289,\n",
       " ('Joe Biagini', 'false'): 40.286481647269468,\n",
       " ('Joe Biagini', 'true'): 59.713518352730532,\n",
       " ('Johnny Barbato', 'false'): 50.638297872340424,\n",
       " ('Johnny Barbato', 'true'): 49.361702127659576,\n",
       " ('Jonathan Holder', 'false'): 56.25,\n",
       " ('Jonathan Holder', 'true'): 43.75,\n",
       " ('Jonathon Niese', 'false'): 24.444444444444443,\n",
       " ('Jonathon Niese', 'true'): 75.555555555555557,\n",
       " ('Josh Edgin', 'false'): 48.795180722891565,\n",
       " ('Josh Edgin', 'true'): 51.204819277108435,\n",
       " ('Josh Smith', 'false'): 59.846301633045151,\n",
       " ('Josh Smith', 'true'): 40.153698366954849,\n",
       " ('Josh Smoker', 'false'): 24.513618677042803,\n",
       " ('Josh Smoker', 'true'): 75.4863813229572,\n",
       " ('Jumbo Diaz', 'false'): 31.421121251629724,\n",
       " ('Jumbo Diaz', 'true'): 68.578878748370272,\n",
       " ('Keyvius Sampson', 'false'): 42.191435768261968,\n",
       " ('Keyvius Sampson', 'true'): 57.808564231738032,\n",
       " ('Kirby Yates', 'false'): 40.375,\n",
       " ('Kirby Yates', 'true'): 59.625,\n",
       " ('Logan Verrett', 'false'): 43.256997455470739,\n",
       " ('Logan Verrett', 'true'): 56.743002544529261,\n",
       " ('Luis Cessa', 'false'): 49.80952380952381,\n",
       " ('Luis Cessa', 'true'): 50.19047619047619,\n",
       " ('Luis Severino', 'false'): 42.902208201892748,\n",
       " ('Luis Severino', 'true'): 57.097791798107252,\n",
       " ('Marco Estrada', 'false'): 40.45774647887324,\n",
       " ('Marco Estrada', 'true'): 59.54225352112676,\n",
       " ('Marcus Stroman', 'false'): 23.855577047066408,\n",
       " ('Marcus Stroman', 'true'): 76.144422952933596,\n",
       " ('Masahiro Tanaka', 'false'): 33.185689948892673,\n",
       " ('Masahiro Tanaka', 'true'): 66.814310051107327,\n",
       " ('Matt Dermody', 'false'): 45.0,\n",
       " ('Matt Dermody', 'true'): 55.0,\n",
       " ('Matt Harvey', 'false'): 40.903054448871181,\n",
       " ('Matt Harvey', 'true'): 59.096945551128819,\n",
       " ('Michael Lorenzen', 'false'): 46.225165562913908,\n",
       " ('Michael Lorenzen', 'true'): 53.774834437086092,\n",
       " ('Michael Pineda', 'false'): 48.823334438183629,\n",
       " ('Michael Pineda', 'true'): 51.176665561816371,\n",
       " ('Nathan Eovaldi', 'false'): 24.720738222438076,\n",
       " ('Nathan Eovaldi', 'true'): 75.279261777561928,\n",
       " ('Nick Goody', 'false'): 48.106060606060609,\n",
       " ('Nick Goody', 'true'): 51.893939393939391,\n",
       " ('Noah Syndergaard', 'false'): 41.056218057921633,\n",
       " ('Noah Syndergaard', 'true'): 58.943781942078367,\n",
       " ('R.A. Dickey', 'false'): 87.280701754385959,\n",
       " ('R.A. Dickey', 'true'): 12.719298245614034,\n",
       " ('Rafael Montero', 'false'): 43.556701030927833,\n",
       " ('Rafael Montero', 'true'): 56.443298969072167,\n",
       " ('Raisel Iglesias', 'false'): 38.344051446945336,\n",
       " ('Raisel Iglesias', 'true'): 61.655948553054664,\n",
       " ('Richard Bleier', 'false'): 38.681948424068771,\n",
       " ('Richard Bleier', 'true'): 61.318051575931229,\n",
       " ('Robert Gsellman', 'false'): 37.026647966339411,\n",
       " ('Robert Gsellman', 'true'): 62.973352033660589,\n",
       " ('Robert Stephenson', 'false'): 36.856745479833101,\n",
       " ('Robert Stephenson', 'true'): 63.143254520166899,\n",
       " ('Roberto Osuna', 'false'): 27.601410934744269,\n",
       " ('Roberto Osuna', 'true'): 72.398589065255734,\n",
       " ('Ryan Tepera', 'false'): 6.2283737024221457,\n",
       " ('Ryan Tepera', 'true'): 93.771626297577853,\n",
       " ('Scott Feldman', 'false'): 19.23076923076923,\n",
       " ('Scott Feldman', 'true'): 80.769230769230774,\n",
       " ('Sean Gilmartin', 'false'): 49.350649350649348,\n",
       " ('Sean Gilmartin', 'true'): 50.649350649350652,\n",
       " ('Seth Lugo', 'false'): 44.536940686784597,\n",
       " ('Seth Lugo', 'true'): 55.463059313215403,\n",
       " ('Steven Matz', 'false'): 38.483015355979525,\n",
       " ('Steven Matz', 'true'): 61.516984644020475,\n",
       " ('Tim Adleman', 'false'): 39.330922242314649,\n",
       " ('Tim Adleman', 'true'): 60.669077757685351,\n",
       " ('Tim Melville', 'false'): 43.349753694581281,\n",
       " ('Tim Melville', 'true'): 56.650246305418719,\n",
       " ('Tommy Layne', 'false'): 68.273092369477908,\n",
       " ('Tommy Layne', 'true'): 31.726907630522089,\n",
       " ('Tony Cingrani', 'false'): 11.232876712328768,\n",
       " ('Tony Cingrani', 'true'): 88.767123287671239,\n",
       " ('Tyler Clippard', 'false'): 31.494252873563219,\n",
       " ('Tyler Clippard', 'true'): 68.505747126436788,\n",
       " ('Tyler Olson', 'false'): 29.787234042553191,\n",
       " ('Tyler Olson', 'true'): 70.212765957446805,\n",
       " ('Wandy Peralta', 'false'): 37.593984962406012,\n",
       " ('Wandy Peralta', 'true'): 62.406015037593988}"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create PriorDict based on 2016 training data\n",
    "priorDict = training_combined.groupby(['player_name', 'pitch_type'])['pitcher'].count().groupby(level=0).apply(lambda x: 100 * x / float(x.sum())).to_dict()\n",
    "priorDict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# create numPitchesDict based on 2016 training data \n",
    "numPitchesDict2016 = training_combined.groupby(['player_name'])['pitch_type'].count().to_dict()\n",
    "\n",
    "# create numPitchesDict based on 2017 test data \n",
    "numPitchesDict2017 = test_combined.groupby(['player_name'])['pitch_type'].count().to_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{('Aaron Loup', 'false'): 75,\n",
       " ('Aaron Loup', 'true'): 186,\n",
       " ('Aaron Sanchez', 'false'): 1672,\n",
       " ('Aaron Sanchez', 'true'): 1247,\n",
       " ('Abel De Los Santos', 'false'): 47,\n",
       " ('Abel De Los Santos', 'true'): 62,\n",
       " ('Adam Warren', 'false'): 271,\n",
       " ('Adam Warren', 'true'): 249,\n",
       " ('Addison Reed', 'false'): 567,\n",
       " ('Addison Reed', 'true'): 626,\n",
       " ('Andrew Miller', 'false'): 352,\n",
       " ('Andrew Miller', 'true'): 354,\n",
       " ('Anthony Swarzak', 'false'): 222,\n",
       " ('Anthony Swarzak', 'true'): 266,\n",
       " ('Antonio Bastardo', 'false'): 374,\n",
       " ('Antonio Bastardo', 'true'): 430,\n",
       " ('Aroldis Chapman', 'false'): 239,\n",
       " ('Aroldis Chapman', 'true'): 289,\n",
       " ('Bartolo Colon', 'false'): 1428,\n",
       " ('Bartolo Colon', 'true'): 1423,\n",
       " ('Ben Heller', 'false'): 68,\n",
       " ('Ben Heller', 'true'): 101,\n",
       " ('Blake Parker', 'false'): 146,\n",
       " ('Blake Parker', 'true'): 161,\n",
       " ('Blake Wood', 'false'): 679,\n",
       " ('Blake Wood', 'true'): 634,\n",
       " ('Brandon Finnegan', 'false'): 1478,\n",
       " ('Brandon Finnegan', 'true'): 1406,\n",
       " ('Brett Cecil', 'false'): 297,\n",
       " ('Brett Cecil', 'true'): 269,\n",
       " ('Bryan Mitchell', 'false'): 167,\n",
       " ('Bryan Mitchell', 'true'): 221,\n",
       " ('CC Sabathia', 'false'): 1483,\n",
       " ('CC Sabathia', 'true'): 1427,\n",
       " ('Chad Green', 'false'): 460,\n",
       " ('Chad Green', 'true'): 376,\n",
       " ('Chasen Shreve', 'false'): 207,\n",
       " ('Chasen Shreve', 'true'): 363,\n",
       " ('Cody Reed', 'false'): 517,\n",
       " ('Cody Reed', 'true'): 367,\n",
       " ('Dan Straily', 'false'): 1483,\n",
       " ('Dan Straily', 'true'): 1571,\n",
       " ('Daniel Wright', 'false'): 203,\n",
       " ('Daniel Wright', 'true'): 27,\n",
       " ('Danny Barnes', 'false'): 110,\n",
       " ('Danny Barnes', 'true'): 124,\n",
       " ('Dayan Diaz', 'false'): 131,\n",
       " ('Dayan Diaz', 'true'): 14,\n",
       " ('Dellin Betances', 'false'): 668,\n",
       " ('Dellin Betances', 'true'): 578,\n",
       " ('Drew Storen', 'false'): 295,\n",
       " ('Drew Storen', 'true'): 287,\n",
       " ('Erik Goeddel', 'false'): 309,\n",
       " ('Erik Goeddel', 'true'): 321,\n",
       " ('Fernando Salas', 'false'): 125,\n",
       " ('Fernando Salas', 'true'): 121,\n",
       " ('Francisco Liriano', 'false'): 320,\n",
       " ('Francisco Liriano', 'true'): 473,\n",
       " ('Gabriel Ynoa', 'false'): 173,\n",
       " ('Gabriel Ynoa', 'true'): 150,\n",
       " ('Hansel Robles', 'false'): 667,\n",
       " ('Hansel Robles', 'true'): 709,\n",
       " ('Homer Bailey', 'false'): 303,\n",
       " ('Homer Bailey', 'true'): 155,\n",
       " ('Ivan Nova', 'false'): 676,\n",
       " ('Ivan Nova', 'true'): 801,\n",
       " ('J.A. Happ', 'false'): 1622,\n",
       " ('J.A. Happ', 'true'): 1410,\n",
       " ('J.J. Hoover', 'false'): 164,\n",
       " ('J.J. Hoover', 'true'): 250,\n",
       " ('JC Ramirez', 'false'): 261,\n",
       " ('JC Ramirez', 'true'): 235,\n",
       " ('Jacob deGrom', 'false'): 1068,\n",
       " ('Jacob deGrom', 'true'): 1285,\n",
       " ('James Pazos', 'false'): 18,\n",
       " ('James Pazos', 'true'): 40,\n",
       " ('Jason Grilli', 'false'): 326,\n",
       " ('Jason Grilli', 'true'): 412,\n",
       " ('Jerry Blevins', 'false'): 295,\n",
       " ('Jerry Blevins', 'true'): 433,\n",
       " ('Jesse Chavez', 'false'): 265,\n",
       " ('Jesse Chavez', 'true'): 416,\n",
       " ('Jeurys Familia', 'false'): 525,\n",
       " ('Jeurys Familia', 'true'): 737,\n",
       " ('Joaquin Benoit', 'false'): 192,\n",
       " ('Joaquin Benoit', 'true'): 181,\n",
       " ('Joe Biagini', 'false'): 503,\n",
       " ('Joe Biagini', 'true'): 614,\n",
       " ('Johnny Barbato', 'false'): 131,\n",
       " ('Johnny Barbato', 'true'): 104,\n",
       " ('Jonathan Holder', 'false'): 71,\n",
       " ('Jonathan Holder', 'true'): 73,\n",
       " ('Jonathon Niese', 'false'): 154,\n",
       " ('Jonathon Niese', 'true'): 71,\n",
       " ('Josh Edgin', 'false'): 55,\n",
       " ('Josh Edgin', 'true'): 111,\n",
       " ('Josh Smith', 'false'): 556,\n",
       " ('Josh Smith', 'true'): 485,\n",
       " ('Josh Smoker', 'false'): 103,\n",
       " ('Josh Smoker', 'true'): 154,\n",
       " ('Jumbo Diaz', 'false'): 318,\n",
       " ('Jumbo Diaz', 'true'): 449,\n",
       " ('Keyvius Sampson', 'false'): 279,\n",
       " ('Keyvius Sampson', 'true'): 515,\n",
       " ('Kirby Yates', 'false'): 396,\n",
       " ('Kirby Yates', 'true'): 404,\n",
       " ('Logan Verrett', 'false'): 759,\n",
       " ('Logan Verrett', 'true'): 813,\n",
       " ('Luis Cessa', 'false'): 497,\n",
       " ('Luis Cessa', 'true'): 553,\n",
       " ('Luis Severino', 'false'): 575,\n",
       " ('Luis Severino', 'true'): 693,\n",
       " ('Marco Estrada', 'false'): 1358,\n",
       " ('Marco Estrada', 'true'): 1482,\n",
       " ('Marcus Stroman', 'false'): 1551,\n",
       " ('Marcus Stroman', 'true'): 1551,\n",
       " ('Masahiro Tanaka', 'false'): 1532,\n",
       " ('Masahiro Tanaka', 'true'): 1403,\n",
       " ('Matt Dermody', 'false'): 15,\n",
       " ('Matt Dermody', 'true'): 45,\n",
       " ('Matt Harvey', 'false'): 912,\n",
       " ('Matt Harvey', 'true'): 594,\n",
       " ('Michael Lorenzen', 'false'): 399,\n",
       " ('Michael Lorenzen', 'true'): 356,\n",
       " ('Michael Pineda', 'false'): 1504,\n",
       " ('Michael Pineda', 'true'): 1513,\n",
       " ('Nathan Eovaldi', 'false'): 1040,\n",
       " ('Nathan Eovaldi', 'true'): 1019,\n",
       " ('Nick Goody', 'false'): 240,\n",
       " ('Nick Goody', 'true'): 288,\n",
       " ('Noah Syndergaard', 'false'): 1365,\n",
       " ('Noah Syndergaard', 'true'): 1570,\n",
       " ('R.A. Dickey', 'false'): 1297,\n",
       " ('R.A. Dickey', 'true'): 1439,\n",
       " ('Rafael Montero', 'false'): 201,\n",
       " ('Rafael Montero', 'true'): 187,\n",
       " ('Raisel Iglesias', 'false'): 589,\n",
       " ('Raisel Iglesias', 'true'): 655,\n",
       " ('Richard Bleier', 'false'): 159,\n",
       " ('Richard Bleier', 'true'): 190,\n",
       " ('Robert Gsellman', 'false'): 325,\n",
       " ('Robert Gsellman', 'true'): 388,\n",
       " ('Robert Stephenson', 'false'): 241,\n",
       " ('Robert Stephenson', 'true'): 478,\n",
       " ('Roberto Osuna', 'false'): 632,\n",
       " ('Roberto Osuna', 'true'): 502,\n",
       " ('Ryan Tepera', 'false'): 129,\n",
       " ('Ryan Tepera', 'true'): 160,\n",
       " ('Scott Feldman', 'false'): 148,\n",
       " ('Scott Feldman', 'true'): 164,\n",
       " ('Sean Gilmartin', 'false'): 194,\n",
       " ('Sean Gilmartin', 'true'): 114,\n",
       " ('Seth Lugo', 'false'): 429,\n",
       " ('Seth Lugo', 'true'): 532,\n",
       " ('Steven Matz', 'false'): 970,\n",
       " ('Steven Matz', 'true'): 1179,\n",
       " ('Tim Adleman', 'false'): 514,\n",
       " ('Tim Adleman', 'true'): 592,\n",
       " ('Tim Melville', 'false'): 62,\n",
       " ('Tim Melville', 'true'): 141,\n",
       " ('Tommy Layne', 'false'): 128,\n",
       " ('Tommy Layne', 'true'): 121,\n",
       " ('Tony Cingrani', 'false'): 531,\n",
       " ('Tony Cingrani', 'true'): 564,\n",
       " ('Tyler Clippard', 'false'): 226,\n",
       " ('Tyler Clippard', 'true'): 209,\n",
       " ('Tyler Olson', 'true'): 47,\n",
       " ('Wandy Peralta', 'false'): 51,\n",
       " ('Wandy Peralta', 'true'): 82}"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create homePriorDict based on 2016 training data\n",
    "homePriorDict = training_combined.groupby(['player_name', 'home', 'pitch_type'])['pitcher'].count().groupby(['player_name', 'home']).apply(lambda x: 100 * x / float(x.sum())).to_dict()\n",
    "\n",
    "# create homePriorDictSupport based on 2016 training data\n",
    "homePriorDictSupport = training_combined.groupby(['player_name', 'home'])['pitch_type'].count().to_dict()\n",
    "homePriorDictSupport"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{('Aaron Loup', 0, 0): 63,\n",
       " ('Aaron Loup', 0, 1): 25,\n",
       " ('Aaron Loup', 0, 2): 5,\n",
       " ('Aaron Loup', 0, 3): 2,\n",
       " ('Aaron Loup', 1, 0): 33,\n",
       " ('Aaron Loup', 1, 1): 25,\n",
       " ('Aaron Loup', 1, 2): 10,\n",
       " ('Aaron Loup', 1, 3): 4,\n",
       " ('Aaron Loup', 2, 0): 26,\n",
       " ('Aaron Loup', 2, 1): 32,\n",
       " ('Aaron Loup', 2, 2): 25,\n",
       " ('Aaron Loup', 2, 3): 11,\n",
       " ('Aaron Sanchez', 0, 0): 791,\n",
       " ('Aaron Sanchez', 0, 1): 309,\n",
       " ('Aaron Sanchez', 0, 2): 127,\n",
       " ('Aaron Sanchez', 0, 3): 42,\n",
       " ('Aaron Sanchez', 1, 0): 392,\n",
       " ('Aaron Sanchez', 1, 1): 274,\n",
       " ('Aaron Sanchez', 1, 2): 145,\n",
       " ('Aaron Sanchez', 1, 3): 66,\n",
       " ('Aaron Sanchez', 2, 0): 184,\n",
       " ('Aaron Sanchez', 2, 1): 251,\n",
       " ('Aaron Sanchez', 2, 2): 207,\n",
       " ('Aaron Sanchez', 2, 3): 131,\n",
       " ('Abel De Los Santos', 0, 0): 28,\n",
       " ('Abel De Los Santos', 0, 1): 13,\n",
       " ('Abel De Los Santos', 0, 2): 4,\n",
       " ('Abel De Los Santos', 0, 3): 2,\n",
       " ('Abel De Los Santos', 1, 0): 12,\n",
       " ('Abel De Los Santos', 1, 1): 12,\n",
       " ('Abel De Los Santos', 1, 2): 7,\n",
       " ('Abel De Los Santos', 1, 3): 2,\n",
       " ('Abel De Los Santos', 2, 0): 3,\n",
       " ('Abel De Los Santos', 2, 1): 10,\n",
       " ('Abel De Los Santos', 2, 2): 13,\n",
       " ('Abel De Los Santos', 2, 3): 4,\n",
       " ('Adam Warren', 0, 0): 126,\n",
       " ('Adam Warren', 0, 1): 44,\n",
       " ('Adam Warren', 0, 2): 17,\n",
       " ('Adam Warren', 0, 3): 7,\n",
       " ('Adam Warren', 1, 0): 66,\n",
       " ('Adam Warren', 1, 1): 45,\n",
       " ('Adam Warren', 1, 2): 25,\n",
       " ('Adam Warren', 1, 3): 13,\n",
       " ('Adam Warren', 2, 0): 39,\n",
       " ('Adam Warren', 2, 1): 49,\n",
       " ('Adam Warren', 2, 2): 57,\n",
       " ('Adam Warren', 2, 3): 32,\n",
       " ('Addison Reed', 0, 0): 305,\n",
       " ('Addison Reed', 0, 1): 92,\n",
       " ('Addison Reed', 0, 2): 19,\n",
       " ('Addison Reed', 0, 3): 7,\n",
       " ('Addison Reed', 1, 0): 178,\n",
       " ('Addison Reed', 1, 1): 115,\n",
       " ('Addison Reed', 1, 2): 48,\n",
       " ('Addison Reed', 1, 3): 11,\n",
       " ('Addison Reed', 2, 0): 124,\n",
       " ('Addison Reed', 2, 1): 130,\n",
       " ('Addison Reed', 2, 2): 108,\n",
       " ('Addison Reed', 2, 3): 56,\n",
       " ('Andrew Miller', 0, 0): 172,\n",
       " ('Andrew Miller', 0, 1): 65,\n",
       " ('Andrew Miller', 0, 2): 18,\n",
       " ('Andrew Miller', 0, 3): 6,\n",
       " ('Andrew Miller', 1, 0): 100,\n",
       " ('Andrew Miller', 1, 1): 74,\n",
       " ('Andrew Miller', 1, 2): 37,\n",
       " ('Andrew Miller', 1, 3): 17,\n",
       " ('Andrew Miller', 2, 0): 71,\n",
       " ('Andrew Miller', 2, 1): 68,\n",
       " ('Andrew Miller', 2, 2): 56,\n",
       " ('Andrew Miller', 2, 3): 23,\n",
       " ('Anthony Swarzak', 0, 0): 124,\n",
       " ('Anthony Swarzak', 0, 1): 40,\n",
       " ('Anthony Swarzak', 0, 2): 12,\n",
       " ('Anthony Swarzak', 0, 3): 4,\n",
       " ('Anthony Swarzak', 1, 0): 76,\n",
       " ('Anthony Swarzak', 1, 1): 52,\n",
       " ('Anthony Swarzak', 1, 2): 19,\n",
       " ('Anthony Swarzak', 1, 3): 10,\n",
       " ('Anthony Swarzak', 2, 0): 30,\n",
       " ('Anthony Swarzak', 2, 1): 56,\n",
       " ('Anthony Swarzak', 2, 2): 41,\n",
       " ('Anthony Swarzak', 2, 3): 24,\n",
       " ('Antonio Bastardo', 0, 0): 195,\n",
       " ('Antonio Bastardo', 0, 1): 76,\n",
       " ('Antonio Bastardo', 0, 2): 33,\n",
       " ('Antonio Bastardo', 0, 3): 15,\n",
       " ('Antonio Bastardo', 1, 0): 98,\n",
       " ('Antonio Bastardo', 1, 1): 68,\n",
       " ('Antonio Bastardo', 1, 2): 33,\n",
       " ('Antonio Bastardo', 1, 3): 16,\n",
       " ('Antonio Bastardo', 2, 0): 68,\n",
       " ('Antonio Bastardo', 2, 1): 78,\n",
       " ('Antonio Bastardo', 2, 2): 73,\n",
       " ('Antonio Bastardo', 2, 3): 51,\n",
       " ('Aroldis Chapman', 0, 0): 121,\n",
       " ('Aroldis Chapman', 0, 1): 52,\n",
       " ('Aroldis Chapman', 0, 2): 16,\n",
       " ('Aroldis Chapman', 0, 3): 6,\n",
       " ('Aroldis Chapman', 1, 0): 61,\n",
       " ('Aroldis Chapman', 1, 1): 51,\n",
       " ('Aroldis Chapman', 1, 2): 23,\n",
       " ('Aroldis Chapman', 1, 3): 11,\n",
       " ('Aroldis Chapman', 2, 0): 54,\n",
       " ('Aroldis Chapman', 2, 1): 59,\n",
       " ('Aroldis Chapman', 2, 2): 46,\n",
       " ('Aroldis Chapman', 2, 3): 28,\n",
       " ('Bartolo Colon', 0, 0): 793,\n",
       " ('Bartolo Colon', 0, 1): 293,\n",
       " ('Bartolo Colon', 0, 2): 79,\n",
       " ('Bartolo Colon', 0, 3): 12,\n",
       " ('Bartolo Colon', 1, 0): 397,\n",
       " ('Bartolo Colon', 1, 1): 279,\n",
       " ('Bartolo Colon', 1, 2): 123,\n",
       " ('Bartolo Colon', 1, 3): 43,\n",
       " ('Bartolo Colon', 2, 0): 252,\n",
       " ('Bartolo Colon', 2, 1): 290,\n",
       " ('Bartolo Colon', 2, 2): 196,\n",
       " ('Bartolo Colon', 2, 3): 96,\n",
       " ('Ben Heller', 0, 0): 40,\n",
       " ('Ben Heller', 0, 1): 17,\n",
       " ('Ben Heller', 0, 2): 6,\n",
       " ('Ben Heller', 0, 3): 2,\n",
       " ('Ben Heller', 1, 0): 21,\n",
       " ('Ben Heller', 1, 1): 20,\n",
       " ('Ben Heller', 1, 2): 13,\n",
       " ('Ben Heller', 1, 3): 7,\n",
       " ('Ben Heller', 2, 0): 9,\n",
       " ('Ben Heller', 2, 1): 13,\n",
       " ('Ben Heller', 2, 2): 13,\n",
       " ('Ben Heller', 2, 3): 9,\n",
       " ('Blake Parker', 0, 0): 75,\n",
       " ('Blake Parker', 0, 1): 29,\n",
       " ('Blake Parker', 0, 2): 10,\n",
       " ('Blake Parker', 0, 3): 4,\n",
       " ('Blake Parker', 1, 0): 36,\n",
       " ('Blake Parker', 1, 1): 33,\n",
       " ('Blake Parker', 1, 2): 20,\n",
       " ('Blake Parker', 1, 3): 11,\n",
       " ('Blake Parker', 2, 0): 21,\n",
       " ('Blake Parker', 2, 1): 29,\n",
       " ('Blake Parker', 2, 2): 24,\n",
       " ('Blake Parker', 2, 3): 16,\n",
       " ('Blake Wood', 0, 0): 332,\n",
       " ('Blake Wood', 0, 1): 144,\n",
       " ('Blake Wood', 0, 2): 67,\n",
       " ('Blake Wood', 0, 3): 20,\n",
       " ('Blake Wood', 1, 0): 152,\n",
       " ('Blake Wood', 1, 1): 113,\n",
       " ('Blake Wood', 1, 2): 69,\n",
       " ('Blake Wood', 1, 3): 31,\n",
       " ('Blake Wood', 2, 0): 83,\n",
       " ('Blake Wood', 2, 1): 123,\n",
       " ('Blake Wood', 2, 2): 111,\n",
       " ('Blake Wood', 2, 3): 68,\n",
       " ('Brandon Finnegan', 0, 0): 738,\n",
       " ('Brandon Finnegan', 0, 1): 335,\n",
       " ('Brandon Finnegan', 0, 2): 129,\n",
       " ('Brandon Finnegan', 0, 3): 50,\n",
       " ('Brandon Finnegan', 1, 0): 330,\n",
       " ('Brandon Finnegan', 1, 1): 299,\n",
       " ('Brandon Finnegan', 1, 2): 162,\n",
       " ('Brandon Finnegan', 1, 3): 84,\n",
       " ('Brandon Finnegan', 2, 0): 168,\n",
       " ('Brandon Finnegan', 2, 1): 248,\n",
       " ('Brandon Finnegan', 2, 2): 204,\n",
       " ('Brandon Finnegan', 2, 3): 137,\n",
       " ('Brett Cecil', 0, 0): 157,\n",
       " ('Brett Cecil', 0, 1): 53,\n",
       " ('Brett Cecil', 0, 2): 15,\n",
       " ('Brett Cecil', 0, 3): 6,\n",
       " ('Brett Cecil', 1, 0): 80,\n",
       " ('Brett Cecil', 1, 1): 59,\n",
       " ('Brett Cecil', 1, 2): 25,\n",
       " ('Brett Cecil', 1, 3): 9,\n",
       " ('Brett Cecil', 2, 0): 46,\n",
       " ('Brett Cecil', 2, 1): 63,\n",
       " ('Brett Cecil', 2, 2): 33,\n",
       " ('Brett Cecil', 2, 3): 20,\n",
       " ('Bryan Mitchell', 0, 0): 107,\n",
       " ('Bryan Mitchell', 0, 1): 50,\n",
       " ('Bryan Mitchell', 0, 2): 17,\n",
       " ('Bryan Mitchell', 0, 3): 6,\n",
       " ('Bryan Mitchell', 1, 0): 44,\n",
       " ('Bryan Mitchell', 1, 1): 38,\n",
       " ('Bryan Mitchell', 1, 2): 26,\n",
       " ('Bryan Mitchell', 1, 3): 10,\n",
       " ('Bryan Mitchell', 2, 0): 19,\n",
       " ('Bryan Mitchell', 2, 1): 23,\n",
       " ('Bryan Mitchell', 2, 2): 22,\n",
       " ('Bryan Mitchell', 2, 3): 26,\n",
       " ('CC Sabathia', 0, 0): 768,\n",
       " ('CC Sabathia', 0, 1): 297,\n",
       " ('CC Sabathia', 0, 2): 100,\n",
       " ('CC Sabathia', 0, 3): 37,\n",
       " ('CC Sabathia', 1, 0): 367,\n",
       " ('CC Sabathia', 1, 1): 301,\n",
       " ('CC Sabathia', 1, 2): 142,\n",
       " ('CC Sabathia', 1, 3): 73,\n",
       " ('CC Sabathia', 2, 0): 194,\n",
       " ('CC Sabathia', 2, 1): 255,\n",
       " ('CC Sabathia', 2, 2): 238,\n",
       " ('CC Sabathia', 2, 3): 138,\n",
       " ('Chad Green', 0, 0): 199,\n",
       " ('Chad Green', 0, 1): 79,\n",
       " ('Chad Green', 0, 2): 29,\n",
       " ('Chad Green', 0, 3): 10,\n",
       " ('Chad Green', 1, 0): 105,\n",
       " ('Chad Green', 1, 1): 101,\n",
       " ('Chad Green', 1, 2): 47,\n",
       " ('Chad Green', 1, 3): 21,\n",
       " ('Chad Green', 2, 0): 31,\n",
       " ('Chad Green', 2, 1): 85,\n",
       " ('Chad Green', 2, 2): 69,\n",
       " ('Chad Green', 2, 3): 60,\n",
       " ('Chasen Shreve', 0, 0): 143,\n",
       " ('Chasen Shreve', 0, 1): 55,\n",
       " ('Chasen Shreve', 0, 2): 18,\n",
       " ('Chasen Shreve', 0, 3): 3,\n",
       " ('Chasen Shreve', 1, 0): 68,\n",
       " ('Chasen Shreve', 1, 1): 60,\n",
       " ('Chasen Shreve', 1, 2): 31,\n",
       " ('Chasen Shreve', 1, 3): 7,\n",
       " ('Chasen Shreve', 2, 0): 34,\n",
       " ('Chasen Shreve', 2, 1): 60,\n",
       " ('Chasen Shreve', 2, 2): 59,\n",
       " ('Chasen Shreve', 2, 3): 32,\n",
       " ('Cody Reed', 0, 0): 230,\n",
       " ('Cody Reed', 0, 1): 94,\n",
       " ('Cody Reed', 0, 2): 34,\n",
       " ('Cody Reed', 0, 3): 12,\n",
       " ('Cody Reed', 1, 0): 104,\n",
       " ('Cody Reed', 1, 1): 89,\n",
       " ('Cody Reed', 1, 2): 51,\n",
       " ('Cody Reed', 1, 3): 20,\n",
       " ('Cody Reed', 2, 0): 52,\n",
       " ('Cody Reed', 2, 1): 67,\n",
       " ('Cody Reed', 2, 2): 82,\n",
       " ('Cody Reed', 2, 3): 49,\n",
       " ('Dan Straily', 0, 0): 793,\n",
       " ('Dan Straily', 0, 1): 306,\n",
       " ('Dan Straily', 0, 2): 113,\n",
       " ('Dan Straily', 0, 3): 38,\n",
       " ('Dan Straily', 1, 0): 406,\n",
       " ('Dan Straily', 1, 1): 316,\n",
       " ('Dan Straily', 1, 2): 177,\n",
       " ('Dan Straily', 1, 3): 69,\n",
       " ('Dan Straily', 2, 0): 174,\n",
       " ('Dan Straily', 2, 1): 296,\n",
       " ('Dan Straily', 2, 2): 247,\n",
       " ('Dan Straily', 2, 3): 126,\n",
       " ('Daniel Wright', 0, 0): 64,\n",
       " ('Daniel Wright', 0, 1): 28,\n",
       " ('Daniel Wright', 0, 2): 9,\n",
       " ('Daniel Wright', 0, 3): 1,\n",
       " ('Daniel Wright', 1, 0): 27,\n",
       " ('Daniel Wright', 1, 1): 28,\n",
       " ('Daniel Wright', 1, 2): 16,\n",
       " ('Daniel Wright', 1, 3): 7,\n",
       " ('Daniel Wright', 2, 0): 8,\n",
       " ('Daniel Wright', 2, 1): 16,\n",
       " ('Daniel Wright', 2, 2): 15,\n",
       " ('Daniel Wright', 2, 3): 11,\n",
       " ('Danny Barnes', 0, 0): 58,\n",
       " ('Danny Barnes', 0, 1): 23,\n",
       " ('Danny Barnes', 0, 2): 6,\n",
       " ('Danny Barnes', 0, 3): 1,\n",
       " ('Danny Barnes', 1, 0): 30,\n",
       " ('Danny Barnes', 1, 1): 26,\n",
       " ('Danny Barnes', 1, 2): 14,\n",
       " ('Danny Barnes', 1, 3): 3,\n",
       " ('Danny Barnes', 2, 0): 16,\n",
       " ('Danny Barnes', 2, 1): 26,\n",
       " ('Danny Barnes', 2, 2): 22,\n",
       " ('Danny Barnes', 2, 3): 9,\n",
       " ('Dayan Diaz', 0, 0): 36,\n",
       " ('Dayan Diaz', 0, 1): 17,\n",
       " ('Dayan Diaz', 0, 2): 9,\n",
       " ('Dayan Diaz', 0, 3): 4,\n",
       " ('Dayan Diaz', 1, 0): 14,\n",
       " ('Dayan Diaz', 1, 1): 14,\n",
       " ('Dayan Diaz', 1, 2): 8,\n",
       " ('Dayan Diaz', 1, 3): 7,\n",
       " ('Dayan Diaz', 2, 0): 4,\n",
       " ('Dayan Diaz', 2, 1): 11,\n",
       " ('Dayan Diaz', 2, 2): 9,\n",
       " ('Dayan Diaz', 2, 3): 12,\n",
       " ('Dellin Betances', 0, 0): 299,\n",
       " ('Dellin Betances', 0, 1): 117,\n",
       " ('Dellin Betances', 0, 2): 46,\n",
       " ('Dellin Betances', 0, 3): 14,\n",
       " ('Dellin Betances', 1, 0): 165,\n",
       " ('Dellin Betances', 1, 1): 125,\n",
       " ('Dellin Betances', 1, 2): 70,\n",
       " ('Dellin Betances', 1, 3): 35,\n",
       " ('Dellin Betances', 2, 0): 94,\n",
       " ('Dellin Betances', 2, 1): 127,\n",
       " ('Dellin Betances', 2, 2): 108,\n",
       " ('Dellin Betances', 2, 3): 50,\n",
       " ('Drew Storen', 0, 0): 156,\n",
       " ('Drew Storen', 0, 1): 55,\n",
       " ('Drew Storen', 0, 2): 22,\n",
       " ('Drew Storen', 0, 3): 6,\n",
       " ('Drew Storen', 1, 0): 89,\n",
       " ('Drew Storen', 1, 1): 55,\n",
       " ('Drew Storen', 1, 2): 26,\n",
       " ('Drew Storen', 1, 3): 8,\n",
       " ('Drew Storen', 2, 0): 39,\n",
       " ('Drew Storen', 2, 1): 66,\n",
       " ('Drew Storen', 2, 2): 48,\n",
       " ('Drew Storen', 2, 3): 19,\n",
       " ('Erik Goeddel', 0, 0): 157,\n",
       " ('Erik Goeddel', 0, 1): 60,\n",
       " ('Erik Goeddel', 0, 2): 21,\n",
       " ('Erik Goeddel', 0, 3): 7,\n",
       " ('Erik Goeddel', 1, 0): 81,\n",
       " ('Erik Goeddel', 1, 1): 64,\n",
       " ('Erik Goeddel', 1, 2): 33,\n",
       " ('Erik Goeddel', 1, 3): 14,\n",
       " ('Erik Goeddel', 2, 0): 45,\n",
       " ('Erik Goeddel', 2, 1): 71,\n",
       " ('Erik Goeddel', 2, 2): 52,\n",
       " ('Erik Goeddel', 2, 3): 25,\n",
       " ('Fernando Salas', 0, 0): 62,\n",
       " ('Fernando Salas', 0, 1): 16,\n",
       " ('Fernando Salas', 0, 2): 2,\n",
       " ('Fernando Salas', 1, 0): 35,\n",
       " ('Fernando Salas', 1, 1): 27,\n",
       " ('Fernando Salas', 1, 2): 11,\n",
       " ('Fernando Salas', 1, 3): 1,\n",
       " ('Fernando Salas', 2, 0): 19,\n",
       " ('Fernando Salas', 2, 1): 37,\n",
       " ('Fernando Salas', 2, 2): 29,\n",
       " ('Fernando Salas', 2, 3): 7,\n",
       " ('Francisco Liriano', 0, 0): 208,\n",
       " ('Francisco Liriano', 0, 1): 87,\n",
       " ('Francisco Liriano', 0, 2): 28,\n",
       " ('Francisco Liriano', 0, 3): 11,\n",
       " ('Francisco Liriano', 1, 0): 99,\n",
       " ('Francisco Liriano', 1, 1): 92,\n",
       " ('Francisco Liriano', 1, 2): 43,\n",
       " ('Francisco Liriano', 1, 3): 20,\n",
       " ('Francisco Liriano', 2, 0): 46,\n",
       " ('Francisco Liriano', 2, 1): 75,\n",
       " ('Francisco Liriano', 2, 2): 52,\n",
       " ('Francisco Liriano', 2, 3): 32,\n",
       " ('Gabriel Ynoa', 0, 0): 88,\n",
       " ('Gabriel Ynoa', 0, 1): 36,\n",
       " ('Gabriel Ynoa', 0, 2): 11,\n",
       " ('Gabriel Ynoa', 0, 3): 2,\n",
       " ('Gabriel Ynoa', 1, 0): 41,\n",
       " ('Gabriel Ynoa', 1, 1): 30,\n",
       " ('Gabriel Ynoa', 1, 2): 17,\n",
       " ('Gabriel Ynoa', 1, 3): 7,\n",
       " ('Gabriel Ynoa', 2, 0): 20,\n",
       " ('Gabriel Ynoa', 2, 1): 27,\n",
       " ('Gabriel Ynoa', 2, 2): 24,\n",
       " ('Gabriel Ynoa', 2, 3): 20,\n",
       " ('Hansel Robles', 0, 0): 333,\n",
       " ('Hansel Robles', 0, 1): 135,\n",
       " ('Hansel Robles', 0, 2): 43,\n",
       " ('Hansel Robles', 0, 3): 10,\n",
       " ('Hansel Robles', 1, 0): 165,\n",
       " ('Hansel Robles', 1, 1): 142,\n",
       " ('Hansel Robles', 1, 2): 79,\n",
       " ('Hansel Robles', 1, 3): 37,\n",
       " ('Hansel Robles', 2, 0): 82,\n",
       " ('Hansel Robles', 2, 1): 150,\n",
       " ('Hansel Robles', 2, 2): 119,\n",
       " ('Hansel Robles', 2, 3): 81,\n",
       " ('Homer Bailey', 0, 0): 111,\n",
       " ('Homer Bailey', 0, 1): 51,\n",
       " ('Homer Bailey', 0, 2): 22,\n",
       " ('Homer Bailey', 0, 3): 3,\n",
       " ('Homer Bailey', 1, 0): 48,\n",
       " ('Homer Bailey', 1, 1): 42,\n",
       " ('Homer Bailey', 1, 2): 34,\n",
       " ('Homer Bailey', 1, 3): 12,\n",
       " ('Homer Bailey', 2, 0): 21,\n",
       " ('Homer Bailey', 2, 1): 42,\n",
       " ('Homer Bailey', 2, 2): 48,\n",
       " ('Homer Bailey', 2, 3): 24,\n",
       " ('Ivan Nova', 0, 0): 421,\n",
       " ('Ivan Nova', 0, 1): 172,\n",
       " ('Ivan Nova', 0, 2): 57,\n",
       " ('Ivan Nova', 0, 3): 17,\n",
       " ('Ivan Nova', 1, 0): 193,\n",
       " ('Ivan Nova', 1, 1): 156,\n",
       " ('Ivan Nova', 1, 2): 76,\n",
       " ('Ivan Nova', 1, 3): 27,\n",
       " ('Ivan Nova', 2, 0): 75,\n",
       " ('Ivan Nova', 2, 1): 125,\n",
       " ('Ivan Nova', 2, 2): 103,\n",
       " ('Ivan Nova', 2, 3): 57,\n",
       " ('J.A. Happ', 0, 0): 796,\n",
       " ('J.A. Happ', 0, 1): 318,\n",
       " ('J.A. Happ', 0, 2): 116,\n",
       " ('J.A. Happ', 0, 3): 25,\n",
       " ('J.A. Happ', 1, 0): 385,\n",
       " ('J.A. Happ', 1, 1): 303,\n",
       " ('J.A. Happ', 1, 2): 168,\n",
       " ('J.A. Happ', 1, 3): 63,\n",
       " ('J.A. Happ', 2, 0): 192,\n",
       " ('J.A. Happ', 2, 1): 282,\n",
       " ('J.A. Happ', 2, 2): 251,\n",
       " ('J.A. Happ', 2, 3): 134,\n",
       " ('J.J. Hoover', 0, 0): 97,\n",
       " ('J.J. Hoover', 0, 1): 42,\n",
       " ('J.J. Hoover', 0, 2): 14,\n",
       " ('J.J. Hoover', 0, 3): 6,\n",
       " ('J.J. Hoover', 1, 0): 47,\n",
       " ('J.J. Hoover', 1, 1): 41,\n",
       " ('J.J. Hoover', 1, 2): 24,\n",
       " ('J.J. Hoover', 1, 3): 9,\n",
       " ('J.J. Hoover', 2, 0): 20,\n",
       " ('J.J. Hoover', 2, 1): 43,\n",
       " ('J.J. Hoover', 2, 2): 47,\n",
       " ('J.J. Hoover', 2, 3): 24,\n",
       " ('JC Ramirez', 0, 0): 140,\n",
       " ('JC Ramirez', 0, 1): 55,\n",
       " ('JC Ramirez', 0, 2): 24,\n",
       " ('JC Ramirez', 0, 3): 10,\n",
       " ('JC Ramirez', 1, 0): 66,\n",
       " ('JC Ramirez', 1, 1): 45,\n",
       " ('JC Ramirez', 1, 2): 25,\n",
       " ('JC Ramirez', 1, 3): 15,\n",
       " ('JC Ramirez', 2, 0): 36,\n",
       " ('JC Ramirez', 2, 1): 37,\n",
       " ('JC Ramirez', 2, 2): 25,\n",
       " ('JC Ramirez', 2, 3): 21,\n",
       " ('Jacob deGrom', 0, 0): 604,\n",
       " ('Jacob deGrom', 0, 1): 218,\n",
       " ('Jacob deGrom', 0, 2): 74,\n",
       " ('Jacob deGrom', 0, 3): 16,\n",
       " ('Jacob deGrom', 1, 0): 312,\n",
       " ('Jacob deGrom', 1, 1): 247,\n",
       " ('Jacob deGrom', 1, 2): 118,\n",
       " ('Jacob deGrom', 1, 3): 48,\n",
       " ('Jacob deGrom', 2, 0): 149,\n",
       " ('Jacob deGrom', 2, 1): 256,\n",
       " ('Jacob deGrom', 2, 2): 193,\n",
       " ('Jacob deGrom', 2, 3): 119,\n",
       " ('James Pazos', 0, 0): 17,\n",
       " ('James Pazos', 0, 1): 8,\n",
       " ('James Pazos', 0, 2): 3,\n",
       " ('James Pazos', 1, 0): 8,\n",
       " ('James Pazos', 1, 1): 6,\n",
       " ('James Pazos', 1, 2): 2,\n",
       " ('James Pazos', 1, 3): 2,\n",
       " ('James Pazos', 2, 0): 4,\n",
       " ('James Pazos', 2, 1): 4,\n",
       " ('James Pazos', 2, 2): 2,\n",
       " ('James Pazos', 2, 3): 2,\n",
       " ('Jason Grilli', 0, 0): 170,\n",
       " ('Jason Grilli', 0, 1): 69,\n",
       " ('Jason Grilli', 0, 2): 25,\n",
       " ('Jason Grilli', 0, 3): 8,\n",
       " ('Jason Grilli', 1, 0): 86,\n",
       " ('Jason Grilli', 1, 1): 78,\n",
       " ('Jason Grilli', 1, 2): 47,\n",
       " ('Jason Grilli', 1, 3): 16,\n",
       " ('Jason Grilli', 2, 0): 43,\n",
       " ('Jason Grilli', 2, 1): 77,\n",
       " ('Jason Grilli', 2, 2): 75,\n",
       " ('Jason Grilli', 2, 3): 44,\n",
       " ('Jerry Blevins', 0, 0): 177,\n",
       " ('Jerry Blevins', 0, 1): 70,\n",
       " ('Jerry Blevins', 0, 2): 25,\n",
       " ('Jerry Blevins', 0, 3): 12,\n",
       " ('Jerry Blevins', 1, 0): 94,\n",
       " ('Jerry Blevins', 1, 1): 65,\n",
       " ('Jerry Blevins', 1, 2): 40,\n",
       " ('Jerry Blevins', 1, 3): 22,\n",
       " ('Jerry Blevins', 2, 0): 58,\n",
       " ('Jerry Blevins', 2, 1): 57,\n",
       " ('Jerry Blevins', 2, 2): 59,\n",
       " ('Jerry Blevins', 2, 3): 49,\n",
       " ('Jesse Chavez', 0, 0): 173,\n",
       " ('Jesse Chavez', 0, 1): 54,\n",
       " ('Jesse Chavez', 0, 2): 18,\n",
       " ('Jesse Chavez', 0, 3): 5,\n",
       " ('Jesse Chavez', 1, 0): 97,\n",
       " ('Jesse Chavez', 1, 1): 65,\n",
       " ('Jesse Chavez', 1, 2): 34,\n",
       " ('Jesse Chavez', 1, 3): 14,\n",
       " ('Jesse Chavez', 2, 0): 56,\n",
       " ('Jesse Chavez', 2, 1): 71,\n",
       " ('Jesse Chavez', 2, 2): 55,\n",
       " ('Jesse Chavez', 2, 3): 39,\n",
       " ('Jeurys Familia', 0, 0): 321,\n",
       " ('Jeurys Familia', 0, 1): 139,\n",
       " ('Jeurys Familia', 0, 2): 50,\n",
       " ('Jeurys Familia', 0, 3): 21,\n",
       " ('Jeurys Familia', 1, 0): 154,\n",
       " ('Jeurys Familia', 1, 1): 124,\n",
       " ('Jeurys Familia', 1, 2): 51,\n",
       " ('Jeurys Familia', 1, 3): 16,\n",
       " ('Jeurys Familia', 2, 0): 85,\n",
       " ('Jeurys Familia', 2, 1): 143,\n",
       " ('Jeurys Familia', 2, 2): 108,\n",
       " ('Jeurys Familia', 2, 3): 50,\n",
       " ('Joaquin Benoit', 0, 0): 93,\n",
       " ('Joaquin Benoit', 0, 1): 33,\n",
       " ('Joaquin Benoit', 0, 2): 11,\n",
       " ('Joaquin Benoit', 0, 3): 4,\n",
       " ('Joaquin Benoit', 1, 0): 51,\n",
       " ('Joaquin Benoit', 1, 1): 32,\n",
       " ('Joaquin Benoit', 1, 2): 17,\n",
       " ('Joaquin Benoit', 1, 3): 10,\n",
       " ('Joaquin Benoit', 2, 0): 33,\n",
       " ('Joaquin Benoit', 2, 1): 39,\n",
       " ('Joaquin Benoit', 2, 2): 29,\n",
       " ('Joaquin Benoit', 2, 3): 21,\n",
       " ('Joe Biagini', 0, 0): 296,\n",
       " ('Joe Biagini', 0, 1): 91,\n",
       " ('Joe Biagini', 0, 2): 32,\n",
       " ('Joe Biagini', 0, 3): 8,\n",
       " ('Joe Biagini', 1, 0): 165,\n",
       " ('Joe Biagini', 1, 1): 116,\n",
       " ('Joe Biagini', 1, 2): 62,\n",
       " ('Joe Biagini', 1, 3): 19,\n",
       " ('Joe Biagini', 2, 0): 73,\n",
       " ('Joe Biagini', 2, 1): 99,\n",
       " ('Joe Biagini', 2, 2): 98,\n",
       " ('Joe Biagini', 2, 3): 58,\n",
       " ('Johnny Barbato', 0, 0): 58,\n",
       " ('Johnny Barbato', 0, 1): 20,\n",
       " ('Johnny Barbato', 0, 2): 9,\n",
       " ('Johnny Barbato', 0, 3): 3,\n",
       " ('Johnny Barbato', 1, 0): 32,\n",
       " ('Johnny Barbato', 1, 1): 22,\n",
       " ('Johnny Barbato', 1, 2): 17,\n",
       " ('Johnny Barbato', 1, 3): 3,\n",
       " ('Johnny Barbato', 2, 0): 16,\n",
       " ('Johnny Barbato', 2, 1): 21,\n",
       " ('Johnny Barbato', 2, 2): 20,\n",
       " ('Johnny Barbato', 2, 3): 14,\n",
       " ('Jonathan Holder', 0, 0): 36,\n",
       " ('Jonathan Holder', 0, 1): 13,\n",
       " ('Jonathan Holder', 0, 2): 4,\n",
       " ('Jonathan Holder', 0, 3): 4,\n",
       " ('Jonathan Holder', 1, 0): 20,\n",
       " ('Jonathan Holder', 1, 1): 12,\n",
       " ('Jonathan Holder', 1, 2): 3,\n",
       " ('Jonathan Holder', 1, 3): 3,\n",
       " ('Jonathan Holder', 2, 0): 11,\n",
       " ('Jonathan Holder', 2, 1): 17,\n",
       " ('Jonathan Holder', 2, 2): 10,\n",
       " ('Jonathan Holder', 2, 3): 11,\n",
       " ('Jonathon Niese', 0, 0): 55,\n",
       " ('Jonathon Niese', 0, 1): 18,\n",
       " ('Jonathon Niese', 0, 2): 7,\n",
       " ('Jonathon Niese', 0, 3): 4,\n",
       " ('Jonathon Niese', 1, 0): 29,\n",
       " ('Jonathon Niese', 1, 1): 24,\n",
       " ('Jonathon Niese', 1, 2): 11,\n",
       " ('Jonathon Niese', 1, 3): 6,\n",
       " ('Jonathon Niese', 2, 0): 10,\n",
       " ('Jonathon Niese', 2, 1): 21,\n",
       " ('Jonathon Niese', 2, 2): 24,\n",
       " ('Jonathon Niese', 2, 3): 16,\n",
       " ('Josh Edgin', 0, 0): 45,\n",
       " ('Josh Edgin', 0, 1): 21,\n",
       " ('Josh Edgin', 0, 2): 10,\n",
       " ('Josh Edgin', 0, 3): 5,\n",
       " ('Josh Edgin', 1, 0): 21,\n",
       " ('Josh Edgin', 1, 1): 14,\n",
       " ('Josh Edgin', 1, 2): 9,\n",
       " ('Josh Edgin', 1, 3): 4,\n",
       " ('Josh Edgin', 2, 0): 12,\n",
       " ('Josh Edgin', 2, 1): 12,\n",
       " ('Josh Edgin', 2, 2): 8,\n",
       " ('Josh Edgin', 2, 3): 5,\n",
       " ('Josh Smith', 0, 0): 260,\n",
       " ('Josh Smith', 0, 1): 92,\n",
       " ('Josh Smith', 0, 2): 43,\n",
       " ('Josh Smith', 0, 3): 13,\n",
       " ('Josh Smith', 1, 0): 146,\n",
       " ('Josh Smith', 1, 1): 106,\n",
       " ('Josh Smith', 1, 2): 59,\n",
       " ('Josh Smith', 1, 3): 25,\n",
       " ('Josh Smith', 2, 0): 65,\n",
       " ('Josh Smith', 2, 1): 101,\n",
       " ('Josh Smith', 2, 2): 78,\n",
       " ('Josh Smith', 2, 3): 54,\n",
       " ('Josh Smoker', 0, 0): 65,\n",
       " ('Josh Smoker', 0, 1): 16,\n",
       " ('Josh Smoker', 0, 2): 6,\n",
       " ('Josh Smoker', 0, 3): 3,\n",
       " ('Josh Smoker', 1, 0): 45,\n",
       " ('Josh Smoker', 1, 1): 18,\n",
       " ('Josh Smoker', 1, 2): 5,\n",
       " ('Josh Smoker', 1, 3): 5,\n",
       " ('Josh Smoker', 2, 0): 31,\n",
       " ('Josh Smoker', 2, 1): 32,\n",
       " ('Josh Smoker', 2, 2): 18,\n",
       " ('Josh Smoker', 2, 3): 14,\n",
       " ('Jumbo Diaz', 0, 0): 184,\n",
       " ('Jumbo Diaz', 0, 1): 77,\n",
       " ('Jumbo Diaz', 0, 2): 31,\n",
       " ('Jumbo Diaz', 0, 3): 11,\n",
       " ('Jumbo Diaz', 1, 0): 87,\n",
       " ('Jumbo Diaz', 1, 1): 68,\n",
       " ('Jumbo Diaz', 1, 2): 46,\n",
       " ('Jumbo Diaz', 1, 3): 24,\n",
       " ('Jumbo Diaz', 2, 0): 43,\n",
       " ('Jumbo Diaz', 2, 1): 69,\n",
       " ('Jumbo Diaz', 2, 2): 74,\n",
       " ('Jumbo Diaz', 2, 3): 53,\n",
       " ('Keyvius Sampson', 0, 0): 190,\n",
       " ('Keyvius Sampson', 0, 1): 88,\n",
       " ('Keyvius Sampson', 0, 2): 36,\n",
       " ('Keyvius Sampson', 0, 3): 18,\n",
       " ('Keyvius Sampson', 1, 0): 86,\n",
       " ('Keyvius Sampson', 1, 1): 83,\n",
       " ('Keyvius Sampson', 1, 2): 44,\n",
       " ('Keyvius Sampson', 1, 3): 23,\n",
       " ('Keyvius Sampson', 2, 0): 34,\n",
       " ('Keyvius Sampson', 2, 1): 74,\n",
       " ('Keyvius Sampson', 2, 2): 76,\n",
       " ('Keyvius Sampson', 2, 3): 44,\n",
       " ('Kirby Yates', 0, 0): 184,\n",
       " ('Kirby Yates', 0, 1): 67,\n",
       " ('Kirby Yates', 0, 2): 19,\n",
       " ('Kirby Yates', 0, 3): 4,\n",
       " ('Kirby Yates', 1, 0): 103,\n",
       " ('Kirby Yates', 1, 1): 85,\n",
       " ('Kirby Yates', 1, 2): 46,\n",
       " ('Kirby Yates', 1, 3): 14,\n",
       " ('Kirby Yates', 2, 0): 54,\n",
       " ('Kirby Yates', 2, 1): 93,\n",
       " ('Kirby Yates', 2, 2): 86,\n",
       " ('Kirby Yates', 2, 3): 45,\n",
       " ('Logan Verrett', 0, 0): 406,\n",
       " ('Logan Verrett', 0, 1): 153,\n",
       " ('Logan Verrett', 0, 2): 55,\n",
       " ('Logan Verrett', 0, 3): 22,\n",
       " ('Logan Verrett', 1, 0): 211,\n",
       " ('Logan Verrett', 1, 1): 150,\n",
       " ('Logan Verrett', 1, 2): 83,\n",
       " ('Logan Verrett', 1, 3): 39,\n",
       " ('Logan Verrett', 2, 0): 125,\n",
       " ('Logan Verrett', 2, 1): 138,\n",
       " ('Logan Verrett', 2, 2): 111,\n",
       " ('Logan Verrett', 2, 3): 79,\n",
       " ('Luis Cessa', 0, 0): 285,\n",
       " ('Luis Cessa', 0, 1): 119,\n",
       " ('Luis Cessa', 0, 2): 35,\n",
       " ('Luis Cessa', 0, 3): 12,\n",
       " ('Luis Cessa', 1, 0): 136,\n",
       " ('Luis Cessa', 1, 1): 128,\n",
       " ('Luis Cessa', 1, 2): 50,\n",
       " ('Luis Cessa', 1, 3): 20,\n",
       " ('Luis Cessa', 2, 0): 57,\n",
       " ('Luis Cessa', 2, 1): 95,\n",
       " ('Luis Cessa', 2, 2): 77,\n",
       " ('Luis Cessa', 2, 3): 38,\n",
       " ('Luis Severino', 0, 0): 313,\n",
       " ('Luis Severino', 0, 1): 127,\n",
       " ('Luis Severino', 0, 2): 42,\n",
       " ('Luis Severino', 0, 3): 13,\n",
       " ('Luis Severino', 1, 0): 156,\n",
       " ('Luis Severino', 1, 1): 139,\n",
       " ('Luis Severino', 1, 2): 76,\n",
       " ('Luis Severino', 1, 3): 30,\n",
       " ('Luis Severino', 2, 0): 69,\n",
       " ('Luis Severino', 2, 1): 121,\n",
       " ('Luis Severino', 2, 2): 121,\n",
       " ('Luis Severino', 2, 3): 62,\n",
       " ('Marco Estrada', 0, 0): 724,\n",
       " ('Marco Estrada', 0, 1): 297,\n",
       " ('Marco Estrada', 0, 2): 115,\n",
       " ('Marco Estrada', 0, 3): 42,\n",
       " ('Marco Estrada', 1, 0): 342,\n",
       " ('Marco Estrada', 1, 1): 270,\n",
       " ('Marco Estrada', 1, 2): 169,\n",
       " ('Marco Estrada', 1, 3): 70,\n",
       " ('Marco Estrada', 2, 0): 180,\n",
       " ('Marco Estrada', 2, 1): 252,\n",
       " ('Marco Estrada', 2, 2): 234,\n",
       " ('Marco Estrada', 2, 3): 148,\n",
       " ('Marcus Stroman', 0, 0): 857,\n",
       " ('Marcus Stroman', 0, 1): 336,\n",
       " ('Marcus Stroman', 0, 2): 94,\n",
       " ('Marcus Stroman', 0, 3): 25,\n",
       " ('Marcus Stroman', 1, 0): 419,\n",
       " ('Marcus Stroman', 1, 1): 343,\n",
       " ('Marcus Stroman', 1, 2): 157,\n",
       " ('Marcus Stroman', 1, 3): 56,\n",
       " ('Marcus Stroman', 2, 0): 172,\n",
       " ('Marcus Stroman', 2, 1): 274,\n",
       " ('Marcus Stroman', 2, 2): 243,\n",
       " ('Marcus Stroman', 2, 3): 126,\n",
       " ('Masahiro Tanaka', 0, 0): 805,\n",
       " ('Masahiro Tanaka', 0, 1): 286,\n",
       " ('Masahiro Tanaka', 0, 2): 95,\n",
       " ('Masahiro Tanaka', 0, 3): 23,\n",
       " ('Masahiro Tanaka', 1, 0): 402,\n",
       " ('Masahiro Tanaka', 1, 1): 288,\n",
       " ('Masahiro Tanaka', 1, 2): 140,\n",
       " ('Masahiro Tanaka', 1, 3): 54,\n",
       " ('Masahiro Tanaka', 2, 0): 224,\n",
       " ('Masahiro Tanaka', 2, 1): 279,\n",
       " ('Masahiro Tanaka', 2, 2): 221,\n",
       " ('Masahiro Tanaka', 2, 3): 118,\n",
       " ('Matt Dermody', 0, 0): 16,\n",
       " ('Matt Dermody', 0, 1): 6,\n",
       " ('Matt Dermody', 0, 2): 1,\n",
       " ('Matt Dermody', 0, 3): 1,\n",
       " ('Matt Dermody', 1, 0): 10,\n",
       " ('Matt Dermody', 1, 1): 10,\n",
       " ('Matt Dermody', 1, 2): 3,\n",
       " ('Matt Dermody', 1, 3): 1,\n",
       " ('Matt Dermody', 2, 0): 1,\n",
       " ('Matt Dermody', 2, 1): 4,\n",
       " ('Matt Dermody', 2, 2): 5,\n",
       " ('Matt Dermody', 2, 3): 2,\n",
       " ('Matt Harvey', 0, 0): 405,\n",
       " ('Matt Harvey', 0, 1): 138,\n",
       " ('Matt Harvey', 0, 2): 38,\n",
       " ('Matt Harvey', 0, 3): 10,\n",
       " ('Matt Harvey', 1, 0): 218,\n",
       " ('Matt Harvey', 1, 1): 170,\n",
       " ('Matt Harvey', 1, 2): 68,\n",
       " ('Matt Harvey', 1, 3): 28,\n",
       " ('Matt Harvey', 2, 0): 109,\n",
       " ('Matt Harvey', 2, 1): 159,\n",
       " ('Matt Harvey', 2, 2): 108,\n",
       " ('Matt Harvey', 2, 3): 64,\n",
       " ('Michael Lorenzen', 0, 0): 200,\n",
       " ('Michael Lorenzen', 0, 1): 74,\n",
       " ('Michael Lorenzen', 0, 2): 32,\n",
       " ('Michael Lorenzen', 0, 3): 13,\n",
       " ('Michael Lorenzen', 1, 0): 96,\n",
       " ('Michael Lorenzen', 1, 1): 67,\n",
       " ('Michael Lorenzen', 1, 2): 35,\n",
       " ('Michael Lorenzen', 1, 3): 24,\n",
       " ('Michael Lorenzen', 2, 0): 47,\n",
       " ('Michael Lorenzen', 2, 1): 79,\n",
       " ('Michael Lorenzen', 2, 2): 50,\n",
       " ('Michael Lorenzen', 2, 3): 38,\n",
       " ('Michael Pineda', 0, 0): 758,\n",
       " ('Michael Pineda', 0, 1): 247,\n",
       " ('Michael Pineda', 0, 2): 67,\n",
       " ('Michael Pineda', 0, 3): 19,\n",
       " ('Michael Pineda', 1, 0): 434,\n",
       " ('Michael Pineda', 1, 1): 337,\n",
       " ('Michael Pineda', 1, 2): 140,\n",
       " ('Michael Pineda', 1, 3): 44,\n",
       " ('Michael Pineda', 2, 0): 234,\n",
       " ('Michael Pineda', 2, 1): 327,\n",
       " ('Michael Pineda', 2, 2): 275,\n",
       " ('Michael Pineda', 2, 3): 135,\n",
       " ('Nathan Eovaldi', 0, 0): 527,\n",
       " ('Nathan Eovaldi', 0, 1): 186,\n",
       " ('Nathan Eovaldi', 0, 2): 69,\n",
       " ('Nathan Eovaldi', 0, 3): 23,\n",
       " ('Nathan Eovaldi', 1, 0): 294,\n",
       " ('Nathan Eovaldi', 1, 1): 208,\n",
       " ('Nathan Eovaldi', 1, 2): 111,\n",
       " ('Nathan Eovaldi', 1, 3): 50,\n",
       " ('Nathan Eovaldi', 2, 0): 143,\n",
       " ('Nathan Eovaldi', 2, 1): 194,\n",
       " ('Nathan Eovaldi', 2, 2): 144,\n",
       " ('Nathan Eovaldi', 2, 3): 115,\n",
       " ('Nick Goody', 0, 0): 128,\n",
       " ('Nick Goody', 0, 1): 53,\n",
       " ('Nick Goody', 0, 2): 21,\n",
       " ('Nick Goody', 0, 3): 5,\n",
       " ('Nick Goody', 1, 0): 67,\n",
       " ('Nick Goody', 1, 1): 52,\n",
       " ('Nick Goody', 1, 2): 29,\n",
       " ('Nick Goody', 1, 3): 8,\n",
       " ('Nick Goody', 2, 0): 36,\n",
       " ('Nick Goody', 2, 1): 48,\n",
       " ('Nick Goody', 2, 2): 62,\n",
       " ('Nick Goody', 2, 3): 19,\n",
       " ('Noah Syndergaard', 0, 0): 747,\n",
       " ('Noah Syndergaard', 0, 1): 271,\n",
       " ('Noah Syndergaard', 0, 2): 89,\n",
       " ('Noah Syndergaard', 0, 3): 20,\n",
       " ('Noah Syndergaard', 1, 0): 407,\n",
       " ('Noah Syndergaard', 1, 1): 285,\n",
       " ('Noah Syndergaard', 1, 2): 146,\n",
       " ('Noah Syndergaard', 1, 3): 50,\n",
       " ('Noah Syndergaard', 2, 0): 256,\n",
       " ('Noah Syndergaard', 2, 1): 301,\n",
       " ('Noah Syndergaard', 2, 2): 233,\n",
       " ('Noah Syndergaard', 2, 3): 130,\n",
       " ('R.A. Dickey', 0, 0): 729,\n",
       " ('R.A. Dickey', 0, 1): 276,\n",
       " ('R.A. Dickey', 0, 2): 107,\n",
       " ('R.A. Dickey', 0, 3): 34,\n",
       " ('R.A. Dickey', 1, 0): 378,\n",
       " ('R.A. Dickey', 1, 1): 262,\n",
       " ('R.A. Dickey', 1, 2): 140,\n",
       " ('R.A. Dickey', 1, 3): 58,\n",
       " ('R.A. Dickey', 2, 0): 208,\n",
       " ('R.A. Dickey', 2, 1): 255,\n",
       " ('R.A. Dickey', 2, 2): 182,\n",
       " ('R.A. Dickey', 2, 3): 113,\n",
       " ('Rafael Montero', 0, 0): 93,\n",
       " ('Rafael Montero', 0, 1): 37,\n",
       " ('Rafael Montero', 0, 2): 20,\n",
       " ('Rafael Montero', 0, 3): 8,\n",
       " ('Rafael Montero', 1, 0): 50,\n",
       " ('Rafael Montero', 1, 1): 36,\n",
       " ('Rafael Montero', 1, 2): 23,\n",
       " ('Rafael Montero', 1, 3): 13,\n",
       " ('Rafael Montero', 2, 0): 23,\n",
       " ('Rafael Montero', 2, 1): 30,\n",
       " ('Rafael Montero', 2, 2): 37,\n",
       " ('Rafael Montero', 2, 3): 18,\n",
       " ('Raisel Iglesias', 0, 0): 325,\n",
       " ('Raisel Iglesias', 0, 1): 150,\n",
       " ('Raisel Iglesias', 0, 2): 58,\n",
       " ('Raisel Iglesias', 0, 3): 16,\n",
       " ('Raisel Iglesias', 1, 0): 141,\n",
       " ('Raisel Iglesias', 1, 1): 123,\n",
       " ('Raisel Iglesias', 1, 2): 64,\n",
       " ('Raisel Iglesias', 1, 3): 29,\n",
       " ('Raisel Iglesias', 2, 0): 76,\n",
       " ('Raisel Iglesias', 2, 1): 120,\n",
       " ('Raisel Iglesias', 2, 2): 90,\n",
       " ('Raisel Iglesias', 2, 3): 53,\n",
       " ('Richard Bleier', 0, 0): 92,\n",
       " ('Richard Bleier', 0, 1): 37,\n",
       " ('Richard Bleier', 0, 2): 13,\n",
       " ('Richard Bleier', 0, 3): 2,\n",
       " ('Richard Bleier', 1, 0): 43,\n",
       " ('Richard Bleier', 1, 1): 31,\n",
       " ('Richard Bleier', 1, 2): 19,\n",
       " ('Richard Bleier', 1, 3): 6,\n",
       " ('Richard Bleier', 2, 0): 23,\n",
       " ('Richard Bleier', 2, 1): 44,\n",
       " ('Richard Bleier', 2, 2): 31,\n",
       " ('Richard Bleier', 2, 3): 8,\n",
       " ('Robert Gsellman', 0, 0): 186,\n",
       " ('Robert Gsellman', 0, 1): 72,\n",
       " ('Robert Gsellman', 0, 2): 23,\n",
       " ('Robert Gsellman', 0, 3): 8,\n",
       " ('Robert Gsellman', 1, 0): 94,\n",
       " ('Robert Gsellman', 1, 1): 73,\n",
       " ('Robert Gsellman', 1, 2): 35,\n",
       " ('Robert Gsellman', 1, 3): 16,\n",
       " ('Robert Gsellman', 2, 0): 38,\n",
       " ('Robert Gsellman', 2, 1): 76,\n",
       " ('Robert Gsellman', 2, 2): 57,\n",
       " ('Robert Gsellman', 2, 3): 35,\n",
       " ('Robert Stephenson', 0, 0): 170,\n",
       " ('Robert Stephenson', 0, 1): 79,\n",
       " ('Robert Stephenson', 0, 2): 29,\n",
       " ('Robert Stephenson', 0, 3): 7,\n",
       " ('Robert Stephenson', 1, 0): 79,\n",
       " ('Robert Stephenson', 1, 1): 71,\n",
       " ('Robert Stephenson', 1, 2): 51,\n",
       " ('Robert Stephenson', 1, 3): 20,\n",
       " ('Robert Stephenson', 2, 0): 45,\n",
       " ('Robert Stephenson', 2, 1): 74,\n",
       " ('Robert Stephenson', 2, 2): 59,\n",
       " ('Robert Stephenson', 2, 3): 37,\n",
       " ('Roberto Osuna', 0, 0): 288,\n",
       " ('Roberto Osuna', 0, 1): 86,\n",
       " ('Roberto Osuna', 0, 2): 27,\n",
       " ('Roberto Osuna', 0, 3): 10,\n",
       " ('Roberto Osuna', 1, 0): 172,\n",
       " ('Roberto Osuna', 1, 1): 109,\n",
       " ('Roberto Osuna', 1, 2): 50,\n",
       " ('Roberto Osuna', 1, 3): 15,\n",
       " ('Roberto Osuna', 2, 0): 112,\n",
       " ('Roberto Osuna', 2, 1): 116,\n",
       " ('Roberto Osuna', 2, 2): 100,\n",
       " ('Roberto Osuna', 2, 3): 49,\n",
       " ('Ryan Tepera', 0, 0): 85,\n",
       " ('Ryan Tepera', 0, 1): 45,\n",
       " ('Ryan Tepera', 0, 2): 10,\n",
       " ('Ryan Tepera', 0, 3): 5,\n",
       " ('Ryan Tepera', 1, 0): 24,\n",
       " ('Ryan Tepera', 1, 1): 31,\n",
       " ('Ryan Tepera', 1, 2): 10,\n",
       " ('Ryan Tepera', 1, 3): 4,\n",
       " ('Ryan Tepera', 2, 0): 18,\n",
       " ('Ryan Tepera', 2, 1): 25,\n",
       " ('Ryan Tepera', 2, 2): 20,\n",
       " ('Ryan Tepera', 2, 3): 13,\n",
       " ('Scott Feldman', 0, 0): 73,\n",
       " ('Scott Feldman', 0, 1): 31,\n",
       " ('Scott Feldman', 0, 2): 8,\n",
       " ('Scott Feldman', 1, 0): 36,\n",
       " ('Scott Feldman', 1, 1): 39,\n",
       " ('Scott Feldman', 1, 2): 23,\n",
       " ('Scott Feldman', 1, 3): 7,\n",
       " ('Scott Feldman', 2, 0): 14,\n",
       " ('Scott Feldman', 2, 1): 28,\n",
       " ('Scott Feldman', 2, 2): 34,\n",
       " ('Scott Feldman', 2, 3): 19,\n",
       " ('Sean Gilmartin', 0, 0): 79,\n",
       " ('Sean Gilmartin', 0, 1): 33,\n",
       " ('Sean Gilmartin', 0, 2): 9,\n",
       " ('Sean Gilmartin', 0, 3): 2,\n",
       " ('Sean Gilmartin', 1, 0): 40,\n",
       " ('Sean Gilmartin', 1, 1): 32,\n",
       " ('Sean Gilmartin', 1, 2): 19,\n",
       " ('Sean Gilmartin', 1, 3): 5,\n",
       " ('Sean Gilmartin', 2, 0): 15,\n",
       " ('Sean Gilmartin', 2, 1): 35,\n",
       " ('Sean Gilmartin', 2, 2): 27,\n",
       " ('Sean Gilmartin', 2, 3): 13,\n",
       " ('Seth Lugo', 0, 0): 259,\n",
       " ('Seth Lugo', 0, 1): 92,\n",
       " ('Seth Lugo', 0, 2): 23,\n",
       " ('Seth Lugo', 0, 3): 9,\n",
       " ('Seth Lugo', 1, 0): 123,\n",
       " ('Seth Lugo', 1, 1): 108,\n",
       " ('Seth Lugo', 1, 2): 43,\n",
       " ('Seth Lugo', 1, 3): 19,\n",
       " ('Seth Lugo', 2, 0): 71,\n",
       " ('Seth Lugo', 2, 1): 93,\n",
       " ('Seth Lugo', 2, 2): 75,\n",
       " ('Seth Lugo', 2, 3): 46,\n",
       " ('Steven Matz', 0, 0): 549,\n",
       " ('Steven Matz', 0, 1): 191,\n",
       " ('Steven Matz', 0, 2): 60,\n",
       " ('Steven Matz', 0, 3): 13,\n",
       " ('Steven Matz', 1, 0): 309,\n",
       " ('Steven Matz', 1, 1): 216,\n",
       " ('Steven Matz', 1, 2): 112,\n",
       " ('Steven Matz', 1, 3): 25,\n",
       " ('Steven Matz', 2, 0): 179,\n",
       " ('Steven Matz', 2, 1): 222,\n",
       " ('Steven Matz', 2, 2): 199,\n",
       " ('Steven Matz', 2, 3): 78,\n",
       " ('Tim Adleman', 0, 0): 289,\n",
       " ('Tim Adleman', 0, 1): 100,\n",
       " ('Tim Adleman', 0, 2): 36,\n",
       " ('Tim Adleman', 0, 3): 11,\n",
       " ('Tim Adleman', 1, 0): 156,\n",
       " ('Tim Adleman', 1, 1): 115,\n",
       " ('Tim Adleman', 1, 2): 60,\n",
       " ('Tim Adleman', 1, 3): 23,\n",
       " ('Tim Adleman', 2, 0): 74,\n",
       " ('Tim Adleman', 2, 1): 100,\n",
       " ('Tim Adleman', 2, 2): 93,\n",
       " ('Tim Adleman', 2, 3): 50,\n",
       " ('Tim Melville', 0, 0): 54,\n",
       " ('Tim Melville', 0, 1): 21,\n",
       " ('Tim Melville', 0, 2): 8,\n",
       " ('Tim Melville', 0, 3): 5,\n",
       " ('Tim Melville', 1, 0): 26,\n",
       " ('Tim Melville', 1, 1): 25,\n",
       " ('Tim Melville', 1, 2): 12,\n",
       " ('Tim Melville', 1, 3): 3,\n",
       " ('Tim Melville', 2, 0): 8,\n",
       " ('Tim Melville', 2, 1): 19,\n",
       " ('Tim Melville', 2, 2): 14,\n",
       " ('Tim Melville', 2, 3): 8,\n",
       " ('Tommy Layne', 0, 0): 67,\n",
       " ('Tommy Layne', 0, 1): 26,\n",
       " ('Tommy Layne', 0, 2): 10,\n",
       " ('Tommy Layne', 0, 3): 1,\n",
       " ('Tommy Layne', 1, 0): 35,\n",
       " ('Tommy Layne', 1, 1): 28,\n",
       " ('Tommy Layne', 1, 2): 17,\n",
       " ('Tommy Layne', 1, 3): 6,\n",
       " ('Tommy Layne', 2, 0): 12,\n",
       " ('Tommy Layne', 2, 1): 19,\n",
       " ('Tommy Layne', 2, 2): 18,\n",
       " ('Tommy Layne', 2, 3): 10,\n",
       " ('Tony Cingrani', 0, 0): 274,\n",
       " ('Tony Cingrani', 0, 1): 120,\n",
       " ('Tony Cingrani', 0, 2): 46,\n",
       " ('Tony Cingrani', 0, 3): 21,\n",
       " ('Tony Cingrani', 1, 0): 125,\n",
       " ('Tony Cingrani', 1, 1): 100,\n",
       " ('Tony Cingrani', 1, 2): 61,\n",
       " ('Tony Cingrani', 1, 3): 29,\n",
       " ('Tony Cingrani', 2, 0): 73,\n",
       " ('Tony Cingrani', 2, 1): 95,\n",
       " ('Tony Cingrani', 2, 2): 99,\n",
       " ('Tony Cingrani', 2, 3): 52,\n",
       " ('Tyler Clippard', 0, 0): 107,\n",
       " ('Tyler Clippard', 0, 1): 36,\n",
       " ('Tyler Clippard', 0, 2): 13,\n",
       " ('Tyler Clippard', 0, 3): 4,\n",
       " ('Tyler Clippard', 1, 0): 58,\n",
       " ('Tyler Clippard', 1, 1): 41,\n",
       " ('Tyler Clippard', 1, 2): 25,\n",
       " ('Tyler Clippard', 1, 3): 14,\n",
       " ('Tyler Clippard', 2, 0): 33,\n",
       " ('Tyler Clippard', 2, 1): 39,\n",
       " ('Tyler Clippard', 2, 2): 35,\n",
       " ('Tyler Clippard', 2, 3): 30,\n",
       " ('Tyler Olson', 0, 0): 13,\n",
       " ('Tyler Olson', 0, 1): 7,\n",
       " ('Tyler Olson', 0, 2): 3,\n",
       " ('Tyler Olson', 0, 3): 1,\n",
       " ('Tyler Olson', 1, 0): 3,\n",
       " ('Tyler Olson', 1, 1): 4,\n",
       " ('Tyler Olson', 1, 2): 4,\n",
       " ...}"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create countPriorDict based on 2016 training data\n",
    "countPriorDict = training_combined.groupby(['player_name', 'strikes', 'balls', 'pitch_type'])['pitcher'].count().groupby(['player_name', 'strikes', 'balls']).apply(lambda x: 100 * x / float(x.sum())).to_dict()\n",
    "\n",
    "# create countPriorDictSupport based on 2016 training data\n",
    "countPriorDictSupport = training_combined.groupby(['player_name', 'strikes', 'balls'])['pitcher'].count().to_dict()\n",
    "countPriorDictSupport"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# create batTeamPriorDicts for both home and away based on 2016 training data\n",
    "batTeamPriorDict1 = training_combined.groupby(['player_name', 'home', 'home_team', 'pitch_type'])['pitcher'].count().groupby(['player_name', 'home', 'home_team']).apply(lambda x: 100 * x / float(x.sum())).to_dict()\n",
    "batTeamPriorDict2 = training_combined.groupby(['player_name', 'home', 'away_team', 'pitch_type'])['pitcher'].count().groupby(['player_name', 'home', 'away_team']).apply(lambda x: 100 * x / float(x.sum())).to_dict()\n",
    "\n",
    "# create batTeamPriorDictSupports based on 2016 training data\n",
    "batTeamPriorDictSupport1 = training_combined.groupby(['player_name', 'home', 'home_team'])['pitcher'].count().to_dict()\n",
    "\n",
    "batTeamPriorDictSupport2 = training_combined.groupby(['player_name', 'home', 'away_team'])['pitcher'].count().to_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# create batterPriorDict based on 2016 training data\n",
    "batterPriorDict = training_combined.groupby(['player_name', 'batter', 'pitch_type'])['pitcher'].count().groupby(['player_name', 'batter']).apply(lambda x: 100 * x / float(x.sum())).to_dict()\n",
    "\n",
    "# create batterPriorDictSupport based on 2016 training data\n",
    "batterPriorDictSupport = training_combined.groupby(['player_name', 'batter'])['pitcher'].count().to_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "training_combined.reset_index(inplace=True)\n",
    "test_combined.reset_index(inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate homePrior column based on earlier dictionary for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    player = training_combined.at[index, 'player_name']\n",
    "    home = training_combined.at[index, 'home']\n",
    "    training_combined.at[index, 'homePrior'] = homePriorDict.get((player, home, 'true'))\n",
    "    training_combined.at[index, 'homePriorSupport'] = homePriorDictSupport.get((player, home))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate homePrior column for 2017 Test data based on 2016 Training data\n",
    "for index, row in test_combined.iterrows():\n",
    "    player = test_combined.at[index, 'player_name']\n",
    "    home = test_combined.at[index, 'home']\n",
    "    test_combined.at[index, 'homePrior'] = homePriorDict.get((player, home, 'true'))\n",
    "    test_combined.at[index, 'homePriorSupport'] = homePriorDictSupport.get((player, home)) if homePriorDictSupport.get((player, home)) is not None else 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate countPrior column based on earlier dictionary for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    player = training_combined.at[index, 'player_name']\n",
    "    strikes = training_combined.at[index, 'strikes']\n",
    "    balls = training_combined.at[index, 'balls']\n",
    "    training_combined.at[index, 'countPrior'] = countPriorDict.get((player, strikes, balls, 'true'))\n",
    "    training_combined.at[index, 'countPriorSupport'] = countPriorDictSupport.get((player, strikes, balls))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate countPrior column for 2017 test data based on 2016 Training data\n",
    "for index, row in test_combined.iterrows():\n",
    "    player = test_combined.at[index, 'player_name']\n",
    "    strikes = test_combined.at[index, 'strikes']\n",
    "    balls = test_combined.at[index, 'balls']\n",
    "    test_combined.at[index, 'countPrior'] = countPriorDict.get((player, strikes, balls, 'true')) if countPriorDict.get((player, strikes, balls, 'true')) is not None else 50.0\n",
    "    test_combined.at[index, 'countPriorSupport'] = countPriorDictSupport.get((player, strikes, balls)) if countPriorDictSupport.get((player, strikes, balls)) is not None else 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate battingTeamPrior column based on earlier dictionary for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    player = training_combined.at[index, 'player_name']\n",
    "    home = training_combined.at[index, 'home']\n",
    "    team = training_combined.at[index, 'home_team'] if home == 'false' else training_combined.at[index, 'away_team']\n",
    "    training_combined.at[index, 'battingTeamPrior'] = batTeamPriorDict1.get((player, home, team, 'true')) if home == 'false' else batTeamPriorDict2.get((player, home, team, 'true'))\n",
    "    \n",
    "    if batTeamPriorDictSupport1.get((player, home, team)) is not None:\n",
    "        training_combined.at[index, 'batTeamPriorSupport'] = batTeamPriorDictSupport1.get((player, home, team))\n",
    "    elif batTeamPriorDictSupport2.get((player, home, team)) is not None:\n",
    "        training_combined.at[index, 'batTeamPriorSupport'] = batTeamPriorDictSupport2.get((player, home, team))\n",
    "    else:\n",
    "        training_combined.at[index, 'batTeamPriorSupport'] = 0\n",
    "    \n",
    "training_combined['battingTeamPrior'].fillna(50.0, inplace=True)   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate battingTeamPrior column based on earlier dictionary for 2016 Training data\n",
    "for index, row in test_combined.iterrows():\n",
    "    player = test_combined.at[index, 'player_name']\n",
    "    home = test_combined.at[index, 'home']\n",
    "    team = test_combined.at[index, 'home_team'] if home == 'false' else test_combined.at[index, 'away_team']\n",
    "    test_combined.at[index, 'battingTeamPrior'] = batTeamPriorDict1.get((player, home, team, 'true')) if home == 'false' else batTeamPriorDict2.get((player, home, team, 'true'))\n",
    "    \n",
    "    if batTeamPriorDictSupport1.get((player, home, team)) is not None:\n",
    "        test_combined.at[index, 'batTeamPriorSupport'] = batTeamPriorDictSupport1.get((player, home, team))\n",
    "    elif batTeamPriorDictSupport2.get((player, home, team)) is not None:\n",
    "        test_combined.at[index, 'batTeamPriorSupport'] = batTeamPriorDictSupport2.get((player, home, team))\n",
    "    else:\n",
    "        test_combined.at[index, 'batTeamPriorSupport'] = 0\n",
    "                \n",
    "test_combined['battingTeamPrior'].fillna(50.0, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate batterPrior column based on earlier dictionary for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    player = training_combined.at[index, 'player_name']\n",
    "    batter = training_combined.at[index, 'batter']\n",
    "    training_combined.at[index, 'batterPrior'] = batterPriorDict.get((player, batter, 'true'))\n",
    "    training_combined.at[index, 'batterPriorSupport'] = batterPriorDictSupport.get((player, batter)) if batterPriorDictSupport.get((player, batter)) is not None else 0 \n",
    "    \n",
    "training_combined['batterPrior'].fillna(50.0, inplace=True)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate batterPrior column for 2017 Test data based on 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    player = test_combined.at[index, 'player_name']\n",
    "    batter = test_combined.at[index, 'batter']\n",
    "    test_combined.at[index, 'batterPrior'] = batterPriorDict.get((player, batter, 'true'))\n",
    "    test_combined.at[index, 'batterPriorSupport'] = batterPriorDictSupport.get((player, batter)) if batterPriorDictSupport.get((player, batter)) is not None else 0 \n",
    "    \n",
    "test_combined['batterPrior'].fillna(50.0, inplace=True)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate handedness column for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    training_combined.at[index, 'handedness'] = 'true' if training_combined.at[index, 'stand'] == training_combined.at[index, 'p_throws'] else 'false'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate handedness column for 2017 Test data\n",
    "for index, row in test_combined.iterrows():\n",
    "    test_combined.at[index, 'handedness'] = 'true' if test_combined.at[index, 'stand'] == test_combined.at[index, 'p_throws'] else 'false'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate numPitches column for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    training_combined.at[index, 'numPitches'] = numPitchesDict2016.get(training_combined.at[index, 'player_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate numPitches column for 2017 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    test_combined.at[index, 'numPitches'] = numPitchesDict2017.get(training_combined.at[index, 'player_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate basesLoaded for 2016 training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    training_combined.at[index, 'basesLoaded'] = 'true' if (training_combined.at[index, 'on_3b'] != 'null' and training_combined.at[index, 'on_2b'] != 'null' and training_combined.at[index, 'on_1b'] != 'null') else 'false'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate basesLoaded for 2017 test data\n",
    "for index, row in test_combined.iterrows():\n",
    "    test_combined.at[index, 'basesLoaded'] = 'true' if (test_combined.at[index, 'on_3b'] != 'null' and test_combined.at[index, 'on_2b'] != 'null' and test_combined.at[index, 'on_1b'] != 'null') else 'false'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "true     51200\n",
      "false    34681\n",
      "Name: previousPitch, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# calculate previous pitch type for 2016 training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    if index != training_combined.shape[0] - 1:\n",
    "        pitcher = training_combined.at[index, 'pitcher']\n",
    "        pitcherAhead = training_combined.at[index + 1, 'pitcher']\n",
    "        training_combined.at[index, 'previousPitch'] = training_combined.at[index + 1, 'pitch_type'] if (training_combined.at[index + 1, 'pitch_type'] is not None) and (pitcher == pitcherAhead) else 'false'\n",
    "    else:\n",
    "        training_combined.at[index, 'previousPitch'] = 'false'\n",
    "\n",
    "print(training_combined['previousPitch'].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "true     54208\n",
      "false    41760\n",
      "Name: previousPitch, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# calculate previous pitch type for 2017 test data\n",
    "for index, row in test_combined.iterrows():\n",
    "    if index != test_combined.shape[0] - 1:\n",
    "        pitcher = test_combined.at[index, 'pitcher']\n",
    "        pitcherAhead = test_combined.at[index + 1, 'pitcher']\n",
    "        test_combined.at[index, 'previousPitch'] = test_combined.at[index + 1, 'pitch_type'] if (test_combined.at[index + 1, 'pitch_type'] is not None) and (pitcher == pitcherAhead) else 'false'\n",
    "    else:\n",
    "        test_combined.at[index, 'previousPitch'] = 'false'\n",
    "\n",
    "print(test_combined['previousPitch'].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# encode the description column as int\n",
    "from sklearn import preprocessing\n",
    "le = preprocessing.LabelEncoder()\n",
    "le.fit(training_combined['description'])\n",
    "training_combined['description'] = le.transform(training_combined['description'])\n",
    "le.fit(test_combined['description'])\n",
    "test_combined['description'] = le.transform(test_combined['description'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0     30774\n",
      "3.0     14999\n",
      "2.0     14348\n",
      "7.0      8717\n",
      "13.0     8086\n",
      "8.0      3372\n",
      "1.0      1853\n",
      "9.0      1671\n",
      "5.0       704\n",
      "14.0      547\n",
      "4.0       321\n",
      "10.0      299\n",
      "6.0       175\n",
      "11.0       53\n",
      "12.0       30\n",
      "Name: previousPitchResult, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# calculate previousPitchResult for 2016 training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    if index != training_combined.shape[0] - 1:\n",
    "        pitcher = training_combined.at[index, 'pitcher']\n",
    "        pitcherAhead = training_combined.at[index + 1, 'pitcher']\n",
    "        training_combined.at[index, 'previousPitchResult'] = training_combined.at[index + 1, 'description'] if (training_combined.at[index + 1, 'description'] is not None) and (pitcher == pitcherAhead) else 0\n",
    "    else:\n",
    "        training_combined.at[index, 'previousPitchResult'] = 0\n",
    "\n",
    "print(training_combined['previousPitchResult'].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate previousPitchResult for 2017 test data\n",
    "for index, row in test_combined.iterrows():\n",
    "    if index != test_combined.shape[0] - 1:\n",
    "        pitcher = test_combined.at[index, 'pitcher']\n",
    "        pitcherAhead = test_combined.at[index + 1, 'pitcher']\n",
    "        test_combined.at[index, 'previousPitchResult'] = test_combined.at[index + 1, 'description'] if (test_combined.at[index + 1, 'description'] is not None) and (pitcher == pitcherAhead) else 1\n",
    "    else:\n",
    "        test_combined.at[index, 'previousPitchResult'] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "# calculate previousPitchVelocity for 2016 training data\n",
    "training_combined['effective_speed'] = training_combined['effective_speed'].replace('null', '0').astype(float)\n",
    "for index, row in training_combined.iterrows():\n",
    "    if index != training_combined.shape[0] - 1:\n",
    "        pitcher = training_combined.at[index, 'pitcher']\n",
    "        pitcherAhead = training_combined.at[index + 1, 'pitcher']\n",
    "        training_combined.at[index, 'previousPitchVelocity'] = training_combined.at[index + 1, 'effective_speed'] if (training_combined.at[index + 1, 'effective_speed'] >= 0) and (pitcher == pitcherAhead) else 0\n",
    "    else:\n",
    "        training_combined.at[index, 'previousPitchVelocity'] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate previousPitchVelocity for 2017 test data\n",
    "test_combined['effective_speed'] = test_combined['effective_speed'].replace('null', '0').astype(float)\n",
    "for index, row in test_combined.iterrows():\n",
    "    if index != test_combined.shape[0] - 1:\n",
    "        pitcher = test_combined.at[index, 'pitcher']\n",
    "        pitcherAhead = test_combined.at[index + 1, 'pitcher']\n",
    "        test_combined.at[index, 'previousPitchVelocity'] = test_combined.at[index + 1, 'effective_speed'] if (test_combined.at[index + 1, 'effective_speed'] >= 0) and (pitcher == pitcherAhead) else 0\n",
    "    else:\n",
    "        test_combined.at[index, 'previousPitchVelocity'] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate prior column based on earlier dictionary for 2016 Training data\n",
    "for index, row in training_combined.iterrows():\n",
    "    player = training_combined.at[index, 'player_name']\n",
    "    training_combined.at[index, 'prior'] = priorDict.get((player, 'true'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# calculate prior column for 2017 Test data based on 2016 Training data\n",
    "for index, row in test_combined.iterrows():\n",
    "    player = test_combined.at[index, 'player_name']\n",
    "    test_combined.at[index, 'prior'] = priorDict.get((player, 'true'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# make predictions based on a Naive classifier of the priors\n",
    "for index, row in test_combined.iterrows():\n",
    "    test_combined.at[index, 'priorPreds'] = 'true' if float(test_combined.at[index, 'prior']) >= 50.0 else 'false' "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import classification_report, accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(accuracy_score(test_combined['pitch_type'].fillna('false'), test_combined['priorPreds']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [],
   "source": [
    "def to_string(series):\n",
    "    string = '{'\n",
    "    for index, item in series.iteritems():\n",
    "        if index == series.shape[0] - 1:\n",
    "            string+= str(item) + '}'\n",
    "        else:\n",
    "            string+= str(item) + ','\n",
    "\n",
    "    return string\n",
    "\n",
    "def to_string_float(series):\n",
    "    string = '{'\n",
    "    for index, item in series.iteritems():\n",
    "        item = round(item, 2)\n",
    "        if index == series.shape[0] - 1:\n",
    "            string+= str(item) + '}'\n",
    "        else:\n",
    "            string+= str(item) + ','\n",
    "\n",
    "    return string"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,false,false,false,false,false,false,false,true,true,false,true,false,false,true,true,false,false,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,false,false,false,true,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,false,false,true,false,true,false,false,false,false,false,false,true,true,false,false,false,true,false,true,false,false,false,true,false,true,false,true,false,false,false,true,true,false,true,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,false,true,true,false,true,false,false,true,true,false,false,false,false,false,true,false,false,false,false,true,true,false,false,false,true,true,true,false,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,false,true,false,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,false,true,false,true,true,false,false,true,true,true,true,false,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,false,true,false,true,false,true,true,true,true,true,false,true,false,false,false,true,false,true,false,false,false,false,false,true,true,true,false,false,false,false,false,true,true,false,false,false,false,false,true,false,true,false,true,true,false,false,true,false,true,true,true,true,true,true,false,false,false,true,true,false,false,false,false,true,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,false,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,false,false,true,true,false,false,true,true,true,false,false,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,false,true,true,true,false,false,true,true,false,false,false,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,true,true,false,false,false,true,true,false,false,true,false,false,false,false,false,true,true,false,false,true,true,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,false,true,false,false,true,true,false,true,true,false,false,false,true,false,true,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,false,false,true,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,false,false,true,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,true,true,false,false,false,false,true,false,false,false,true,false,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,false,false,false,true,true,false,false,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,false,false,false,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,false,false,false,true,false,true,false,false,true,true,true,true,false,false,true,false,false,true,true,true,false,true,false,true,false,true,false,false,true,true,true,true,true,true,false,true,true,false,false,true,false,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,false,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,false,true,false,false,true,false,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,false,true,false,false,true,true,true,false,true,false,false,true,true,false,true,false,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,true,false,true,false,true,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,false,false,false,true,false,true,true,false,false,false,true,false,false,true,false,true,true,true,false,false,true,false,false,false,true,true,true,false,true,false,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,true,false,false,false,false,true,true,true,false,true,false,false,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,true,false,true,true,true,false,false,true,false,false,false,false,false,false,true,true,true,true,false,false,true,false,true,false,true,false,false,false,true,true,false,true,false,false,false,false,false,false,true,true,false,false,true,false,false,false,false,true,false,true,false,false,false,false,false,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,true,true,true,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,true,false,false,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,true,true,false,true,true,false,false,true,true,false,false,true,true,false,false,false,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,false,false,false,false,true,false,false,true,false,true,false,false,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,true,false,true,true,false,true,true,true,false,false,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,false,false,false,true,true,true,false,true,false,false,true,true,false,false,true,false,false,false,false,true,true,false,false,false,true,false,true,true,false,false,false,false,false,true,true,true,false,true,false,true,false,true,true,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,false,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,true,false,true,false,true,false,false,false,false,false,true,false,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,false,true,true,true,false,false,true,false,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,false,false,true,false,false,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,true,true,false,true,true,false,false,true,true,true,true,false,false,true,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,false,false,true,true,false,true,false,false,true,false,false,true,true,false,false,true,true,false,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,false,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,false,false,true,false,true,true,true,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,false,false,false,false,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,false,false,true,false,true,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,false,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,false,false,false,false,true,false,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,false,true,true,false,true,false,false,true,true,false,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,false,false,false,true,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,true,false,false,false,false,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,false,false,true,false,false,true,true,true,true,false,true,true,true,false,false,true,false,false,true,true,false,true,false,false,false,true,true,true,false,true,true,true,true,false,false,true,false,false,false,false,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,false,false,false,true,false,false,true,false,false,false,true,true,true,true,false,false,true,true,false,true,false,false,true,true,true,false,false,true,false,false,true,true,true,true,true,true,false,false,false,true,true,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,false,false,false,true,false,false,true,true,true,true,false,false,true,true,false,false,false,false,true,true,false,true,false,false,true,true,true,true,false,false,true,true,false,false,false,true,false,true,false,true,true,true,true,true,false,false,false,true,false,false,true,false,false,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,false,true,true,false,true,true,false,true,false,false,false,false,false,false,true,false,false,true,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,false,true,false,false,false,true,false,true,false,false,false,true,true,true,false,true,false,false,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,false,false,true,false,false,false,false,true,false,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,false,true,true,false,false,true,false,true,false,true,false,false,true,true,false,true,false,true,true,true,false,true,false,true,true,false,true,false,false,true,true,false,true,false,false,true,false,false,true,false,true,false,false,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,false,false,false,true,false,true,true,true,true,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,false,false,false,true,false,false,true,false,false,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,false,false,true,true,true,false,true,false,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,true,false,true,true,false,false,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,false,false,false,false,true,false,false,true,true,true,false,false,true,false,true,false,true,true,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,false,true,true,false,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,false,true,false,false,true,false,true,true,true,false,true,true,false,false,false,false,false,false,true,false,true,false,true,true,true,true,true,false,false,false,false,true,false,false,true,false,true,true,true,false,true,true,false,true,false,false,true,true,false,true,true,false,false,false,true,false,false,true,false,false,false,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,true,true,true,false,false,false,false,true,true,true,true,true,false,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,false,false,false,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,false,false,false,true,false,false,false,true,true,false,true,true,true,true,false,false,true,true,false,false,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,false,true,false,false,true,true,false,true,true,false,false,false,false,false,true,false,false,false,true,false,true,false,true,true,true,false,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,true,false,true,false,true,false,false,true,true,true,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,false,true,false,false,true,true,true,false,true,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,true,false,false,true,true,true,false,true,false,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,false,false,false,true,false,true,true,false,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,false,false,false,true,false,true,true,true,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,false,true,false,true,false,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,false,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,true,false,false,false,true,false,false,false,false,true,false,true,false,true,true,false,false,false,true,true,true,false,false,true,true,true,false,false,false,false,true,false,false,false,false,true,false,false,true,true,false,false,false,true,false,false,true,false,true,true,true,false,true,false,false,true,true,false,true,false,false,false,false,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,false,true,false,false,true,false,true,false,false,true,false,true,false,false,true,true,true,false,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,false,false,true,true,false,false,false,true,true,false,false,true,true,false,false,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,true,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,false,false,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,false,true,false,true,true,false,false,true,false,true,false,true,true,true,false,false,false,true,false,false,true,true,false,true,false,false,false,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,true,true,false,true,true,true,false,false,true,true,false,true,true,false,false,true,false,true,false,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,true,false,true,false,false,false,false,true,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,true,true,false,true,true,false,false,false,true,true,false,true,false,false,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,true,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,true,true,false,false,true,false,false,true,true,false,false,true,false,false,false,true,false,true,false,false,false,true,true,true,false,false,true,true,false,false,false,true,true,false,true,true,true,false,true,false,false,true,false,true,false,false,false,true,false,true,false,false,false,true,true,true,true,false,false,false,false,true,false,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,false,true,false,true,true,false,false,false,false,false,false,false,false,true,false,true,true,false,true,false,false,true,true,false,false,false,true,true,false,true,false,false,false,false,false,true,false,false,true,true,true,true,true,false,false,true,true,true,true,false,false,true,true,false,true,true,false,true,false,false,true,true,true,false,true,true,false,true,true,true,false,true,false,false,false,true,false,true,false,false,true,false,true,false,true,false,true,true,true,false,true,true,false,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,true,false,false,false,true,false,true,true,true,true,true,false,false,false,false,false,false,false,false,true,false,true,true,true,true,true,false,true,false,false,true,false,false,false,false,false,true,false,false,true,true,true,false,false,true,true,true,true,false,false,true,false,true,false,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,false,false,false,false,false,true,false,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,false,true,true,false,false,false,false,true,false,true,true,false,false,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,true,true,false,true,false,true,true,false,false,true,true,false,true,false,false,false,false,false,false,true,true,false,false,true,true,true,false,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,false,true,true,true,false,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,false,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,false,false,false,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,false,false,true,true,true,true,false,false,true,true,false,false,false,true,false,true,true,false,true,true,true,false,true,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,true,false,false,false,true,false,false,true,false,true,true,false,false,true,true,true,false,true,false,false,true,true,true,false,false,false,true,false,false,false,true,false,true,false,false,true,true,true,true,false,false,false,true,true,false,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,true,false,false,false,true,false,false,false,false,false,true,false,true,true,true,true,false,true,false,true,true,false,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,false,true,false,false,true,false,false,true,true,false,true,true,false,false,false,false,false,false,false,true,false,false,true,false,false,false,true,false,false,true,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,false,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,true,true,true,true,false,true,true,true,true,false,false,true,false,true,false,false,false,true,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,false,false,false,true,true,false,false,true,false,true,true,true,false,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,true,false,true,false,false,false,false,true,true,true,false,false,false,true,true,false,true,true,false,false,true,false,false,true,false,true,true,true,true,false,false,true,false,false,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,false,true,false,false,false,false,false,false,false,false,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,false,true,true,false,false,true,false,true,true,true,false,true,false,true,false,false,true,true,false,false,false,true,false,true,false,true,false,false,false,false,false,false,true,false,false,false,true,false,false,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,false,false,true,false,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,true,true,false,true,true,true,false,false,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,false,true,true,true,true,false,false,false,true,false,false,true,true,true,false,true,false,true,false,false,false,false,false,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,false,false,false,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,false,false,true,true,false,false,false,false,false,true,true,true,true,false,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,false,true,true,false,true,true,false,false,true,false,true,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,false,false,true,true,true,false,true,true,false,true,false,true,true,false,true,false,true,true,true,false,true,false,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,false,false,true,false,false,true,false,false,false,false,true,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,true,true,false,true,true,false,false,true,false,true,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,false,false,true,true,false,true,false,false,true,true,true,false,false,false,false,true,false,true,true,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,false,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,true,false,false,false,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,true,false,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,true,false,true,false,true,true,true,true,false,true,true,false,true,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,false,true,false,true,false,false,true,false,true,true,false,false,true,true,true,false,false,false,true,true,true,false,true,true,true,false,false,true,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,false,false,false,false,false,true,false,false,true,false,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,false,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,false,false,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,true,false,true,false,false,false,true,true,false,true,true,false,false,false,false,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,false,true,false,false,false,false,false,false,true,true,false,true,false,true,false,true,false,false,false,false,false,true,true,false,true,true,false,true,true,true,false,true,false,false,false,true,false,false,false,true,false,true,false,true,false,true,false,false,true,true,false,false,false,false,true,false,false,true,true,true,true,false,true,true,false,false,true,false,true,true,false,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,false,true,false,false,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,false,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,false,false,false,false,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,false,true,false,true,true,false,false,true,true,false,true,true,false,false,false,true,false,false,false,true,false,true,false,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,true,true,true,false,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,false,true,false,true,true,true,true,false,true,true,true,false,false,false,false,true,false,false,true,true,false,true,true,false,true,false,false,true,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,false,false,false,false,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,false,false,false,true,true,false,true,true,true,false,false,false,true,false,true,false,true,true,true,true,false,false,false,false,true,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,false,false,true,true,false,false,false,true,true,false,true,false,false,false,false,false,false,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,true,false,false,true,false,false,false,false,false,true,false,false,false,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,true,false,false,false,true,true,false,false,true,true,false,false,false,false,false,true,false,true,false,false,false,true,false,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,false,true,false,false,true,false,true,false,false,false,true,true,false,false,true,true,false,true,false,false,false,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,false,false,false,true,false,false,false,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,false,true,false,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,false,false,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,true,false,false,false,false,true,true,false,true,false,false,true,false,true,false,false,false,false,true,true,true,false,false,true,false,true,false,true,true,true,true,false,false,true,false,false,true,false,false,false,false,false,true,true,true,true,false,true,false,false,false,true,false,false,true,false,true,false,false,false,true,true,false,true,true,false,true,true,false,false,true,false,true,false,true,false,true,false,false,true,true,false,true,false,false,true,true,false,false,true,false,false,false,true,false,false,true,true,false,true,false,true,true,false,true,false,false,true,false,false,true,true,false,true,false,true,true,true,true,false,true,false,false,false,false,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,false,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,true,true,false,false,false,true,true,true,false,false,false,false,true,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,true,false,true,false,false,true,false,false,true,false,true,false,true,true,false,false,false,true,true,false,true,true,true,true,false,false,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,true,false,true,false,false,false,false,false,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,false,false,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,true,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,false,true,false,false,false,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,true,false,false,true,false,false,false,false,true,true,false,false,true,true,true,true,false,true,true,false,true,true,false,false,true,false,true,true,false,true,false,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,false,true,false,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,false,false,false,false,true,false,false,true,true,false,true,true,true,false,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,false,false,false,false,true,false,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,true,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,true,false,true,false,false,false,false,false,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,false,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,false,false,false,true,false,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,false,false,false,true,false,true,false,true,false,true,true,false,false,true,false,false,false,true,true,true,false,true,false,false,true,true,true,false,true,false,false,true,false,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,false,true,false,false,false,false,false,false,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,false,true,false,true,false,true,true,false,false,true,true,true,true,false,false,true,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,false,false,true,true,true,true,false,false,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,false,true,false,false,true,true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,true,true,false,true,true,false,false,false,false,false,false,true,false,true,false,false,true,true,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,false,true,true,true,false,true,false,false,false,true,true,false,false,false,false,true,false,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,false,true,false,true,true,false,true,false,false,true,true,true,false,true,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,false,true,false,true,true,false,true,false,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,true,false,true,false,true,true,true,false,false,true,true,true,true,true,false,false,false,false,true,false,true,true,false,true,false,true,false,true,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,false,true,true,false,false,true,false,true,false,true,false,true,false,false,false,true,true,true,false,true,false,false,true,true,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,true,false,false,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,false,true,false,true,false,true,false,true,false,true,false,false,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,true,false,false,false,false,false,false,false,false,true,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,true,true,true,true,false,true,true,false,false,false,true,true,false,false,true,true,false,true,true,false,false,true,false,false,false,true,false,true,true,true,false,true,true,false,false,false,false,false,true,false,true,true,true,false,true,true,true,true,false,false,false,true,true,false,true,false,true,true,true,false,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,true,false,false,false,true,false,true,false,true,false,true,false,false,false,false,true,true,false,true,false,true,true,true,false,true,false,true,false,true,true,true,false,true,true,true,false,false,true,false,false,true,false,true,true,false,false,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,false,true,false,true,true,true,false,false,false,true,false,false,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,false,true,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,false,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,false,false,false,true,false,false,true,true,true,false,false,true,true,false,false,true,true,false,false,false,false,false,true,true,true,true,false,false,false,true,true,true,false,true,true,false,true,true,false,true,true,true,false,false,true,false,true,false,false,true,false,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,false,true,true,true,true,false,true,false,false,false,true,false,false,true,true,true,false,true,false,false,false,true,false,true,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,false,true,true,true,true,false,false,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,false,true,true,true,true,false,false,true,false,false,true,true,true,false,false,false,false,false,false,true,true,true,false,true,false,false,true,true,true,false,true,true,true,false,true,false,false,true,true,true,false,false,false,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,false,true,true,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,false,true,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,false,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,false,false,true,true,false,true,true,false,false,false,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,false,false,true,false,false,true,true,false,true,false,false,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,true,false,true,true,false,false,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,true,false,false,false,false,true,false,false,false,false,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,false,false,false,true,true,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,false,true,false,false,true,true,false,false,true,true,true,false,true,true,false,true,false,false,true,true,false,false,false,false,true,false,true,false,true,false,true,true,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false,true,true,false,false,true,false,false,true,false,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,true,false,false,true,false,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,true,false,false,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,true,false,true,false,true,true,true,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,false,false,true,true,false,true,false,false,false,true,false,true,true,true,true,true,false,true,false,true,false,false,false,true,true,false,true,false,true,false,true,true,true,true,false,false,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,false,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,false,false,true,false,true,true,false,true,false,false,true,false,false,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,false,true,false,true,false,false,true,false,true,true,false,false,true,true,false,false,false,true,false,true,true,true,true,true,false,false,false,true,false,false,false,false,false,true,true,false,false,false,true,true,false,true,false,true,true,false,false,false,true,false,false,false,true,true,false,false,false,false,true,true,false,true,true,true,true,false,false,true,false,false,true,false,true,true,false,false,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,false,true,false,false,true,false,false,true,false,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,false,false,false,true,true,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,false,true,true,false,true,false,false,true,true,false,false,true,true,false,true,true,true,true,false,false,true,false,true,false,true,false,false,false,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,false,true,false,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,false,true,true,true,true,false,false,false,false,true,false,true,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,false,false,true,false,true,false,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,false,true,false,false,false,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,false,false,false,false,false,true,true,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,true,false,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,false,true,true,false,false,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,false,false,true,true,true,false,false,true,false,true,true,false,false,true,false,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,false,true,true,false,true,false,true,false,true,true,false,true,false,true,false,true,true,true,true,true,false,true,true,false,false,false,true,false,false,false,false,true,true,true,false,true,false,true,false,true,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,false,false,true,false,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,true,false,true,false,false,true,false,true,false,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,false,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,true,false,true,true,false,true,false,true,true,true,false,false,false,true,true,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,true,false,true,false,false,false,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,false,true,true,true,false,true,false,false,true,false,false,false,true,false,true,false,true,true,true,true,true,false,false,false,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,false,false,true,false,true,true,true,false,false,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,false,false,false,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,true,false,false,true,true,false,false,false,true,false,true,false,true,false,true,false,true,false,false,true,true,true,false,true,true,false,true,false,false,true,false,true,true,false,true,false,true,false,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,false,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,true,false,true,false,false,true,true,false,true,false,true,true,false,false,false,true,false,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,false,true,false,false,false,false,true,true,false,false,true,true,true,true,false,false,true,true,false,false,true,true,false,true,true,true,true,false,true,false,true,false,false,true,false,false,true,true,true,true,false,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,false,false,true,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,false,false,false,false,true,false,true,false,false,true,false,true,true,true,false,true,true,true,true,false,true,true,false,false,true,false,false,false,true,false,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,false,true,false,false,true,false,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,false,true,true,true,true,true,true,false,false,true,false,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,true,false,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,false,true,true,false,false,true,false,false,false,true,true,false,true,true,true,false,true,true,false,false,true,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,false,false,false,true,false,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,false,false,true,false,false,true,false,true,false,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,false,false,true,false,false,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,true,true,false,true,true,false,false,true,true,false,false,true,false,false,true,true,false,false,true,true,true,true,false,false,false,false,true,false,true,false,true,false,false,false,true,true,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,false,false,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,false,true,false,true,false,false,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,true,false,false,true,false,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,false,false,true,false,false,false,true,false,true,true,true,true,false,false,false,true,false,false,true,false,true,false,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,true,false,false,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,true,false,true,true,false,true,false,true,true,true,false,true,true,false,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,false,true,true,false,true,true,false,false,true,true,false,false,true,true,false,false,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,false,false,true,true,false,true,false,false,false,false,true,true,false,true,false,false,false,true,true,true,false,false,false,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,false,true,true,false,false,true,false,false,true,false,false,true,true,false,true,true,false,false,false,false,false,true,false,true,true,true,false,true,false,false,false,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,false,false,false,true,false,true,true,false,false,true,false,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,false,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,false,true,true,false,true,true,true,false,false,false,true,false,true,true,true,false,true,true,false,true,false,false,false,true,false,true,true,false,true,true,true,false,false,false,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,false,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,false,false,false,true,true,false,false,true,false,false,true,true,false,true,false,false,false,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,false,true,false,true,true,true,false,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,false,false,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,true,false,false,false,true,false,true,true,true,false,true,false,true,true,true,true,false,false,false,false,true,false,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,false,true,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,false,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,true,true,true,false,true,false,false,true,true,false,false,true,true,true,false,false,true,true,true,false,true,false,true,false,false,true,true,false,true,false,true,true,false,false,false,false,true,true,true,true,true,false,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,false,true,false,false,false,true,false,false,true,false,false,true,true,true,false,false,false,false,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,false,true,false,false,true,true,false,false,false,false,false,false,true,true,false,true,false,false,true,true,true,false,false,false,false,true,false,true,false,false,false,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,false,true,true,false,false,true,false,true,true,false,true,false,false,true,false,true,true,false,true,false,true,true,false,true,false,true,false,true,true,false,true,true,true,false,false,false,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,false,false,true,true,false,false,true,false,false,false,true,false,true,true,false,false,false,false,true,false,false,true,false,true,false,true,true,false,true,true,false,false,false,false,false,false,true,true,false,true,true,false,false,false,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,false,true,true,false,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,false,false,true,false,false,false,true,true,true,false,false,true,false,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,false,false,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,true,false,true,false,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,false,false,true,true,false,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,true,false,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,false,true,false,true,true,true,false,false,true,true,false,false,false,false,false,true,false,false,false,false,true,false,false,true,true,true,false,true,true,true,true,false,false,true,false,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,false,true,false,true,true,false,true,false,true,false,true,false,false,false,false,false,true,false,false,true,true,false,true,false,true,false,false,true,true,false,true,false,true,true,false,false,true,false,true,true,false,false,false,true,true,true,false,true,false,false,false,true,true,true,false,true,true,true,false,false,false,false,true,false,true,true,true,false,false,true,false,false,false,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,true,false,true,false,true,false,true,false,false,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,true,true,false,false,false,false,false,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,false,false,false,true,false,true,false,false,true,true,false,true,true,false,false,true,true,false,false,false,false,true,true,true,true,false,true,true,false,false,false,false,true,true,true,true,true,false,true,false,false,false,true,false,true,true,false,true,true,true,false,false,true,false,false,true,true,false,false,true,true,false,true,true,true,true,false,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,false,false,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,true,true,false,false,true,false,true,false,false,false,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,false,false,true,false,false,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,true,false,false,false,false,false,true,false,true,true,true,true,true,false,false,false,true,false,false,true,false,true,false,true,true,false,false,false,false,true,false,true,false,false,true,false,true,false,false,false,true,false,true,false,false,true,true,true,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,false,false,false,false,true,true,true,true,true,false,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,false,false,true,true,true,true,false,false,false,true,false,true,false,false,false,true,false,true,true,false,false,false,true,false,false,true,false,false,false,true,false,false,true,true,true,true,false,true,false,false,false,false,true,false,true,false,true,true,true,false,false,false,false,true,false,false,true,false,true,false,true,false,false,false,false,true,true,true,false,true,false,false,false,false,false,false,true,false,true,true,true,false,true,true,false,false,false,true,false,false,true,true,false,false,false,false,true,false,false,true,false,true,true,true,true,true,false,false,true,true,false,false,false,false,false,false,true,true,false,false,false,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,false,false,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,false,false,false,true,false,false,false,true,true,true,false,true,false,false,false,true,false,true,false,true,false,false,false,true,true,true,false,true,true,true,false,false,false,true,false,false,true,true,true,false,true,false,true,true,false,false,false,false,false,false,false,false,true,false,false,true,false,false,true,true,true,false,true,true,true,true,true,false,true,false,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,false,true,false,false,false,true,false,true,true,false,true,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,false,false,true,false,true,false,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,false,false,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,false,true,false,true,true,true,true,false,true,false,false,false,false,true,true,false,true,false,false,false,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,false,false,true,true,true,false,true,false,false,true,false,true,false,true,false,true,false,true,false,true,false,false,true,false,true,false,false,false,false,true,false,false,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,false,false,true,true,true,false,true,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,false,false,true,false,true,false,true,false,false,true,false,true,true,false,true,false,true,true,true,false,true,false,false,true,false,false,false,false,false,true,false,false,true,true,false,false,true,false,true,false,false,false,true,false,true,true,false,false,true,false,true,true,false,true,true,false,false,true,true,false,true,false,false,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,false,false,true,true,false,true,false,true,true,false,true,false,true,true,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,true,false,true,false,false,false,true,true,true,false,true,false,true,false,false,false,false,false,true,true,false,true,true,true,true,true,false,false,false,true,false,false,false,false,true,true,true,true,false,false,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,false,false,false,true,true,true,false,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,false,true,true,false,true,true,false,true,true,false,true,false,false,false,false,true,false,true,true,true,true,true,false,false,false,true,true,false,false,false,false,true,true,true,true,false,true,true,true,true,false,true,false,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,false,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,false,false,false,false,false,true,true,false,false,true,true,false,false,false,false,true,true,true,true,false,true,false,false,true,true,false,true,true,true,true,false,false,false,true,false,true,false,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,true,true,false,true,true,true,false,false,false,false,false,true,true,true,false,false,true,true,true,false,false,false,false,false,true,true,true,false,true,false,true,false,false,false,true,true,true,false,false,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,true,false,false,true,false,false,false,false,false,false,false,true,true,true,true,false,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,false,true,true,true,true,false,true,false,false,true,false,true,true,true,false,true,false,false,false,true,false,false,true,true,false,false,true,true,true,true,false,false,true,false,true,false,false,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,false,false,true,true,false,true,false,false,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,false,false,false,true,true,false,true,false,false,true,false,false,true,true,false,true,false,false,false,true,true,false,true,true,true,false,true,false,true,true,false,false,false,false,true,true,true,true,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,true,false,false,false,false,true,true,true,false,false,true,true,false,true,false,true,false,true,true,true,false,false,false,true,false,false,false,false,true,true,false,true,true,false,true,true,false,true,false,false,true,false,true,false,false,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,true,false,true,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,true,false,false,false,true,false,true,true,false,false,true,true,true,false,true,true,false,false,false,false,false,true,false,false,true,false,false,true,false,false,true,true,true,false,false,true,false,false,true,false,false,false,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,false,false,false,false,false,true,false,false,true,true,true,false,true,true,true,false,false,false,false,true,true,false,true,true,true,true,false,false,false,false,true,true,false,false,false,true,false,false,false,true,false,false,false,true,true,false,false,true,false,true,false,true,true,false,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,false,true,true,true,false,false,true,false,true,true,false,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,false,false,true,true,false,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,false,false,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,false,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true,true,true,false,true,false,false,false,false,true,true,false,true,true,true,true,true,false,false,false,true,true,true,false,true,true,false,false,true,true,false,true,false,true,false,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,true,false,true,false,false,false,true,true,false,true,false,false,true,false,false,false,true,true,true,false,false,false,false,true,false,false,false,false,true,true,true,true,true,false,true,false,true,false,true,false,false,true,true,false,false,false,false,false,false,true,true,false,false,false,false,true,true,false,false,false,true,false,true,false,false,false,false,true,true,true,false,true,true,false,false,true,false,false,false,true,false,false,false,false,false,true,true,false,true,true,false,false,true,false,true,true,false,false,false,true,false,true,false,false,false,false,true,false,false,false,false,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,false,false,true,true,false,true,true,true,false,true,false,true,false,true,false,false,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,true,true,false,true,true,true,false,false,false,false,true,false,false,false,true,false,false,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,false,false,true,false,true,false,false,false,true,true,false,true,true,false,true,false,false,true,false,false,false,false,false,true,false,false,false,false,true,false,false,true,false,false,false,true,false,false,true,false,false,false,false,true,true,true,false,false,false,true,false,false,false,true,true,false,true,true,false,true,false,false,false,true,false,true,true,true,false,false,false,true,true,true,false,true,true,false,false,true,false,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,false,true,false,false,false,true,true,true,false,false,false,true,false,false,false,false,true,false,true,true,false,false,false,false,false,false,true,false,true,false,false,false,true,false,false,true,false,true,false,true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,true,true,false,false,true,false,false,true,false,false,false,false,false,false,true,true,true,false,true,true,false,true,true,true,false,false,true,false,false,false,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,false,false,true,false,true,false,true,true,true,false,true,true,false,false,true,false,true,true,true,false,true,true,true,false,true,false,true,false,false,true,false,false,true,false,false,true,true,false,true,true,false,false,true,false,false,true,false,false,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true,false,false,false,false,true,false,false,true,false,false,true,true,true,false,true,false,true,false,false,false,false,true,false,false,true,false,true,false,true,false,false,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,false,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,false,true,false,true,true,true,true,false,false,false,false,true,false,true,false,true,false,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,false,false,true,false,false,true,false,false,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,false,true,false,false,false,false,false,false,true,false,false,false,true,true,true,true,false,false,false,false,true,false,true,true,true,true,true,false,true,false,true,true,false,false,true,false,false,true,false,true,false,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,false,true,true,true,true,false,true,false,true,false,true,false,true,false,true,true,true,false,true,false,false,false,true,true,false,true,false,false,true,true,false,false,true,false,false,true,true,false,false,false,true,true,false,false,false,false,true,false,true,true,true,false,false,true,true,false,false,true,false,true,true,false,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,false,false,true,false,false,false,false,false,false,true,false,false,false,true,true,true,false,true,false,false,false,false,false,true,true,false,false,false,true,true,true,false,false,false,true,true,false,true,true,false,false,true,true,true,true,false,false,true,false,false,false,false,false,false,false,true,false,false,true,false,false,false,true,false,false,false,false,true,false,false,true,false,false,false,false,false,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,true,false,true,true,false,false,true,false,false,true,false,false,true,false,false,true,true,true,false,true,false,true,true,true,true,true,false,false,false,false,false,true,false,true,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,false,false,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,false,false,false,true,true,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,false,false,true,false,true,true,false,true,false,false,true,false,false,true,false,false,true,false,true,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,true,false,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,true,true,false,false,true,true,true,false,true,false,false,true,true,true,false,false,true,false,false,true,true,false,true,false,true,false,false,false,true,true,true,false,true,false,false,true,true,false,false,true,false,false,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,false,true,false,false,false,true,false,false,false,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,false,false,true,true,true,false,false,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,false,false,false,false,false,true,true,false,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,true,false,false,false,false,true,false,false,true,false,false,false,true,true,false,true,false,false,true,true,false,false,false,false,true,false,false,false,false,true,false,true,false,false,true,false,false,true,true,true,true,true,false,false,false,false,false,true,false,false,true,false,false,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,true,true,false,false,false,true,true,false,true,false,false,true,false,false,true,true,true,false,false,false,false,false,false,false,true,false,true,false,false,true,false,true,true,false,true,true,false,false,false,true,false,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,false,false,true,false,false,false,false,false,true,false,true,false,false,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,false,true,true,false,false,true,false,false,true,true,true,true,true,false,false,false,false,false,true,false,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,false,false,false,true,false,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,true,true,true,true,false,true,false,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,true,false,false,false,true,false,true,true,false,false,false,false,false,true,true,false,false,false,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,false,false,false,true,false,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,false,false,true,false,true,false,true,false,true,false,false,false,true,false,true,false,false,true,true,true,false,false,true,false,true,true,false,true,false,true,false,true,false,false,false,false,true,false,false,false,true,false,true,false,false,false,false,true,false,false,true,true,true,true,false,false,false,true,true,false,false,true,false,false,false,true,false,false,true,false,true,true,false,true,true,false,true,true,false,true,false,true,false,false,true,false,false,false,true,false,false,false,false,false,false,false,true,false,true,false,false,false,false,true,false,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,false,false,false,true,false,true,false,true,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,false,true,true,true,true,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,true,true,false,true,false,true,true,false,false,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,true,false,false,true,true,false,false,false,false,false,true,true,true,false,false,true,true,false,false,false,true,true,false,false,true,false,false,false,true,false,false,true,true,true,false,false,true,true,true,false,false,true,false,true,false,false,true,true,true,false,false,false,true,false,false,false,false,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,false,false,false,false,false,true,false,true,true,true,false,false,false,false,false,true,false,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,false,false,false,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,false,true,true,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,false,true,false,true,true,true,true,false,true,true,true,false,false,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,false,false,true,true,false,true,false,false,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,false,false,false,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,false,false,true,false,false,false,false,true,true,true,false,false,true,false,false,false,true,false,false,false,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,false,true,false,true,true,true,false,false,true,true,true,true,false,true,false,true,false,false,true,false,true,false,false,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,true,true,true,false,false,true,false,false,false,true,false,true,false,false,false,false,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,false,false,true,false,false,false,false,true,false,false,false,false,true,false,false,false,true,true,true,true,false,true,true,false,false,false,true,false,true,false,true,false,false,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,false,false,false,false,true,false,true,true,false,false,false,true,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,false,true,false,false,false,false,true,false,true,true,false,true,false,false,true,true,false,true,true,true,true,true,false,false,false,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,false,true,false,false,true,false,false,false,true,true,false,false,false,false,false,false,true,false,false,true,false,true,false,false,true,true,true,true,false,true,false,true,false,false,false,true,false,false,false,false,false,true,true,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,false,false,false,true,true,true,false,true,false,false,false,true,false,true,false,true,true,false,true,true,true,false,true,false,true,false,true,false,false,false,true,true,true,true,false,false,true,false,true,true,false,false,false,true,true,false,false,false,false,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,true,true,false,false,true,false,false,true,true,true,false,true,true,true,true,false,false,false,false,true,true,true,false,true,false,true,true,true,false,true,false,true,false,false,false,false,false,false,true,false,false,true,false,true,false,true,true,false,false,false,true,false,true,true,false,false,false,true,true,false,false,true,true,false,false,true,true,false,false,true,true,true,false,false,true,false,false,false,true,true,true,false,false,false,true,false,true,true,false,false,false,false,true,true,false,false,false,true,false,false,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,false,false,true,true,true,true,false,true,true,false,false,false,true,false,true,true,false,false,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,false,false,false,false,true,false,false,true,true,true,true,true,false,true,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,false,false,false,true,false,false,true,false,false,false,true,false,false,false,false,false,false,true,false,true,false,true,true,false,true,false,true,false,false,true,false,false,false,true,true,false,true,true,false,false,false,true,false,true,false,false,true,true,false,true,true,true,false,true,true,false,false,false,true,true,true,false,true,false,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,true,false,false,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,false,false,true,false,true,true,false,false,false,false,false,true,false,false,true,true,false,false,false,false,false,true,false,false,true,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,false,false,false,true,false,true,true,false,false,false,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,false,false,false,false,true,true,true,false,false,false,true,false,true,true,true,false,false,true,true,false,false,false,false,true,true,true,true,true,false,false,true,false,true,false,true,false,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,false,false,true,false,false,false,true,false,false,false,true,true,false,true,true,false,false,false,false,true,false,false,false,false,false,true,false,true,true,false,false,false,false,true,true,false,true,true,false,false,false,false,false,true,false,true,false,false,true,true,false,false,false,true,true,true,false,true,false,false,false,true,true,false,true,false,false,false,false,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,false,false,true,true,false,false,false,false,true,true,true,false,false,false,false,false,true,false,true,true,false,false,true,false,true,false,false,false,true,false,false,true,true,true,false,false,true,false,false,true,true,false,false,true,false,true,false,false,true,true,true,false,false,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,false,false,false,false,true,false,false,true,true,false,false,true,true,true,true,false,false,true,false,true,true,true,false,false,true,false,false,false,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,true,false,false,false,false,true,false,false,true,true,true,false,false,false,true,false,false,false,true,true,false,false,true,false,true,false,true,true,true,false,true,true,true,false,false,false,true,true,false,false,false,true,false,false,false,false,true,true,true,false,false,false,false,true,false,false,true,false,true,false,true,true,true,false,false,false,false,false,true,false,true,true,false,false,true,true,true,true,false,true,true,false,true,false,false,true,false,true,true,false,true,true,false,false,false,true,false,false,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,true,false,true,false,false,false,false,true,true,false,false,false,true,false,true,false,true,false,false,false,false,false,false,true,false,false,false,true,false,false,true,false,true,true,false,true,false,false,false,false,false,false,false,false,true,true,false,false,true,false,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,true,false,true,true,true,false,false,true,false,true,true,false,false,true,false,false,false,true,true,true,false,false,false,false,true,true,false,true,true,false,false,false,true,false,false,true,true,false,false,false,false,true,false,false,true,false,false,true,true,true,false,true,false,false,false,false,true,false,false,false,false,false,true,true,true,true,false,false,false,true,true,false,false,true,false,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,false,true,false,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,false,true,false,true,true,false,true,true,false,true,false,false,true,false,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,false,true,true,false,false,false,false,true,true,false,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,false,false,false,false,true,false,false,false,false,true,true,true,false,false,true,false,true,false,false,false,true,false,false,false,true,false,true,false,true,true,true,false,true,true,true,false,false,true,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,false,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,true,true,false,false,true,false,false,false,true,true,true,true,false,false,false,false,true,false,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,true,false,true,true,false,false,false,false,true,true,false,false,false,false,false,true,false,false,false,true,true,false,true,false,false,true,false,true,true,true,true,false,true,false,true,false,false,true,true,false,false,true,true,false,false,true,false,false,true,false,true,true,false,false,true,true,true,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,false,true,true,false,true,true,false,true,true,false,false,true,false,false,false,false,false,true,false,true,true,false,true,false,true,false,true,false,true,true,true,false,true,false,false,true,true,true,false,false,false,true,false,false,false,false,false,true,true,false,false,false,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,false,false,false,false,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,false,false,true,true,true,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,false,false,true,true,false,false,false,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,false,false,false,true,true,true,false,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,true,false,true,false,true,false,true,true,true,false,false,true,true,false,false,false,false,false,false,false,false,true,false,false,true,true,true,false,false,true,true,true,false,false,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,false,false,true,true,false,false,false,true,false,true,true,false,false,false,true,true,false,false,false,true,false,false,false,false,true,true,false,false,false,true,false,false,true,false,true,false,false,true,true,false,false,true,false,false,false,true,false,true,false,false,true,true,false,true,false,false,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,false,false,false,false,false,true,false,false,true,false,false,false,false,true,true,true,true,true,true,false,true,true,false,false,false,true,false,true,true,true,false,false,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,true,false,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,false,true,false,false,true,false,true,true,true,false,false,true,false,false,true,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,false,false,true,true,true,false,true,false,true,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,true,true,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,false,true,false,true,false,false,false,false,true,true,true,true,true,false,true,true,false,false,false,false,false,true,false,false,false,false,false,false,true,true,false,false,true,false,true,false,false,true,true,false,false,false,false,true,false,false,false,true,false,false,true,true,false,true,true,true,false,true,false,false,true,true,false,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,false,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,false,false,true,false,false,false,false,true,true,true,false,false,false,false,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,true,false,false,false,true,false,true,false,true,false,false,true,false,false,false,true,false,false,true,true,false,false,true,true,true,false,false,true,false,false,true,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,true,true,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,false,false,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,false,true,false,false,false,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,false,false,false,false,true,false,true,false,false,false,true,false,true,true,false,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,false,false,true,true,false,false,true,true,true,false,false,true,true,false,false,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,true,false,true,true,true,false,false,true,false,false,false,false,true,true,false,false,false,true,false,true,false,true,true,true,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,true,true,false,true,true,true,true,true,true,false,false,false,false,false,true,true,false,true,true,false,false,true,true,false,false,false,false,true,false,true,true,true,true,true,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,false,false,true,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,false,false,true,true,false,false,false,false,false,false,false,true,false,false,true,false,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,false,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,true,true,true,false,false,true,false,true,false,true,false,false,true,true,true,true,true,false,false,true,false,false,true,false,false,false,true,true,false,true,true,false,false,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,true,false,true,false,true,false,false,true,false,false,false,false,true,true,false,false,true,false,false,true,false,false,true,true,true,true,false,false,false,true,false,true,true,true,false,false,true,false,true,true,false,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,false,true,false,false,false,false,true,true,true,false,false,true,true,false,false,true,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,false,false,false,false,false,true,true,false,false,false,false,false,true,true,false,true,true,false,false,false,false,true,true,true,true,false,true,false,false,false,false,false,true,false,true,true,false,true,true,true,true,false,true,false,false,false,true,false,true,false,false,false,false,false,false,true,false,true,true,false,false,false,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,false,false,false,true,false,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,false,true,false,false,false,false,false,true,false,false,true,false,true,true,true,false,false,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,true,false,false,false,false,false,false,true,false,false,true,true,true,false,false,false,true,true,false,true,false,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,false,true,false,true,true,false,true,false,false,false,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,false,false,false,false,true,true,false,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,false,false,false,false,false,true,false,false,true,true,true,true,false,true,true,false,true,true,true,true,false,false,false,false,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,false,true,false,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,false,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,false,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,false,false,false,false,true,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,false,false,false,true,true,false,true,false,true,false,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,true,false,true,false,true,true,true,true,false,false,true,false,true,false,false,false,false,true,false,true,false,true,false,false,true,false,false,true,true,false,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,true,false,false,false,false,true,true,true,true,false,false,false,false,true,false,false,true,false,true,false,false,false,false,false,false,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,false,false,false,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,false,false,true,false,true,true,false,false,false,true,false,false,true,false,true,false,false,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,false,false,true,true,false,false,false,false,true,false,true,true,true,false,false,false,false,false,false,false,false,true,false,false,true,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,true,false,true,true,true,false,false,true,false,false,false,false,false,true,true,true,false,false,true,false,true,true,true,false,false,true,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,false,true,true,false,false,false,false,false,false,true,false,false,false,false,false,true,true,false,false,false,false,true,false,true,true,false,false,false,false,true,false,true,false,false,true,false,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,true,false,false,true,true,false,true,false,true,false,true,false,false,false,true,false,true,false,false,true,true,true,true,true,true,false,false,true,true,false,false,false,false,false,true,true,true,true,false,false,false,false,false,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,true,true,false,true,false,false,false,false,true,true,true,true,false,false,true,true,false,false,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,true,false,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,false,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,false,false,true,false,false,false,false,true,false,false,false,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,false,true,true,false,true,false,false,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,true,true,true,false,false,false,true,true,false,true,true,false,false,true,false,false,true,false,false,true,true,true,false,false,true,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,true,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,true,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,false,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,false,false,false,true,false,false,false,true,false,false,false,true,true,false,false,true,false,true,true,false,true,false,false,true,true,true,true,false,true,false,false,false,true,true,true,false,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,false,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,false,false,true,true,false,true,false,true,false,false,false,false,false,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,true,true,true,false,false,false,true,true,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,false,false,false,true,true,false,false,true,false,false,true,true,true,false,true,false,false,false,false,true,false,false,true,false,true,true,true,true,true,true,true,false,false,false,true,false,false,true,false,false,false,true,false,false,false,true,false,true,false,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,false,false,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,false,true,false,false,true,true,true,true,true,true,false,false,true,false,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,false,false,false,false,true,false,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,false,false,false,true,true,false,false,true,true,false,false,true,true,false,false,false,true,false,false,false,true,false,true,false,false,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,true,false,true,true,false,false,false,false,true,false,true,false,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,true,false,false,false,false,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,false,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,false,false,true,false,true,true,false,false,false,true,true,false,false,true,false,false,true,false,false,true,false,true,false,false,false,false,true,false,false,true,true,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,false,false,false,true,true,true,true,true,true,false,false,true,false,false,false,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,true,false,false,false,false,true,false,false,true,false,true,true,true,true,false,true,false,false,true,false,true,true,false,false,false,true,false,false,false,false,false,false,true,true,true,true,false,false,true,false,false,true,true,true,true,false,false,true,true,true,false,true,false,false,false,true,false,false,true,true,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,false,false,false,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,false,false,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,false,false,true,true,false,true,true,true,false,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,false,false,true,false,true,false,false,false,true,false,true,true,false,true,true,false,false,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,false,false,false,false,false,true,true,false,true,false,false,false,false,true,false,false,true,true,false,false,true,false,true,true,true,true,false,true,false,true,false,false,false,false,false,true,true,true,false,true,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,false,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,false,false,false,true,false,false,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,true,true,false,false,false,false,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,false,false,true,false,false,true,true,false,false,false,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,false,false,true,false,false,false,true,false,true,true,false,false,true,true,true,true,true,true,false,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,false,false,true,false,false,false,false,true,true,false,false,false,false,true,true,false,true,false,true,false,false,false,false,false,true,true,true,true,false,false,false,true,false,false,true,true,true,false,false,false,false,false,false,true,true,true,false,false,false,true,false,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,false,true,true,false,true,false,false,true,false,false,false,true,true,true,false,true,true,true,true,false,false,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,false,true,false,true,false,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,true,false,false,true,true,true,false,false,false,true,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,false,false,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,false,false,true,true,false,true,false,false,true,true,true,false,true,false,true,false,false,true,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,true,false,true,false,true,false,true,true,false,false,false,false,false,true,true,true,true,true,false,false,true,true,false,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,false,false,false,false,false,true,false,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,false,true,true,false,false,false,true,false,true,false,true,false,true,true,true,true,false,true,false,true,true,true,true,false,false,false,false,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,false,true,false,false,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,false,true,false,true,false,false,false,true,true,false,false,true,true,true,false,true,false,false,false,false,false,false,true,true,false,false,false,false,true,true,false,true,false,false,true,true,true,false,false,true,true,true,false,true,true,true,false,false,true,true,false,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,false,false,false,false,true,false,false,false,false,true,false,false,true,true,true,true,true,true,true,true,false,false,false,true,false,false,true,true,false,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,false,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,false,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,false,true,true,false,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,false,false,true,false,false,true,true,false,false,true,false,true,true,true,false,false,false,false,false,false,false,false,false,false,true,false,false,true,true,false,false,true,false,false,true,true,true,true,false,true,false,true,true,false,false,true,false,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,false,false,true,true,true,false,false,false,true,true,false,false,false,false,true,true,true,true,true,false,true,false,true,false,false,true,false,false,false,true,true,false,false,true,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,true,false,false,true,false,false,false,false,true,false,false,false,false,false,false,true,false,true,true,false,true,false,false,true,false,true,false,false,true,true,true,false,true,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,true,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,true,false,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,false,true,false,true,false,false,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,false,false,false,false,true,true,false,true,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,false,false,false,true,true,false,false,false,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,false,true,false,false,true,false,true,false,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,true,true,true,false,false,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,false,true,false,true,false,false,true,true,false,false,true,true,true,false,false,false,false,false,true,false,false,true,true,false,false,true,true,false,false,true,false,false,false,true,false,false,true,false,false,false,false,true,false,true,true,true,false,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,true,false,true,false,false,false,true,true,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,false,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,false,true,false,true,false,false,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,true,false,true,false,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,false,true,true,false,true,false,false,false,true,true,false,true,false,false,true,false,false,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,false,false,false,false,false,true,false,false,true,false,false,false,false,true,false,false,false,false,false,true,true,true,true,false,false,false,true,false,true,true,true,false,false,true,true,false,true,false,false,false,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,true,true,true,true,false,true,false,true,false,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,false,true,false,false,true,true,false,false,true,true,true,false,true,true,true,false,false,true,false,false,true,false,false,false,true,true,true,false,false,false,true,true,true,false,true,false,false,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,true,false,false,false,false,true,true,true,false,true,true,true,false,true,false,false,false,false,false,true,false,true,true,true,false,true,false,false,true,false,false,false,false,true,false,false,true,false,true,false,true,true,false,false,true,true,true,true,false,false,false,false,false,true,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,true,false,false,false,false,false,false,true,true,false,false,true,true,true,false,false,true,true,true,true,false,true,false,false,true,false,false,true,true,true,false,true,true,true,false,false,true,false,false,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,false,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,false,false,false,true,true,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,true,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,false,false,false,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,false,true,false,false,false,false,true,false,false,true,false,false,false,false,true,false,true,true,false,false,false,false,true,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,false,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,false,false,true,false,true,false,false,true,false,false,true,true,false,true,true,false,true,false,true,false,false,false,true,true,true,false,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,false,true,false,false,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,false,false,true,false,true,false,true,false,true,false,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,false,true,false,false,false,false,false,true,true,false,false,true,false,false,true,true,false,false,false,false,true,false,true,false,true,true,false,true,true,true,false,false,false,true,false,false,true,false,true,false,true,true,false,false,true,false,true,false,true,false,false,true,false,true,true,true,false,true,true,false,false,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,false,true,false,true,false,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,true,true,false,false,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,false,true,true,false,true,false,true,false,false,false,false,false,false,true,true,false,true,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,true,false,false,true,true,false,true,true,false,false,true,false,true,true,false,true,false,false,false,false,false,true,true,false,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,false,false,false,true,true,false,true,false,false,false,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,false,true,false,false,false,false,false,false,false,true,true,false,false,true,true,true,false,true,false,false,false,true,true,false,true,true,true,false,false,false,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,false,false,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,false,false,true,false,true,false,true,false,true,true,false,false,true,false,false,true,false,false,false,true,false,false,true,false,false,true,false,false,false,true,false,true,false,true,false,true,false,true,false,false,true,false,false,true,true,false,true,false,false,true,false,true,true,true,false,false,false,false,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,false,false,false,true,false,true,true,true,true,true,false,false,false,false,false,true,false,true,true,false,false,true,true,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,false,false,true,false,true,true,true,false,false,false,false,true,true,false,true,false,true,true,false,false,true,true,false,false,true,true,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,false,false,false,false,false,false,false,true,false,true,true,false,true,false,true,false,false,false,true,true,true,true,false,false,false,true,false,false,false,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,false,true,true,false,false,false,false,false,false,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,false,false,false,true,true,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,false,false,true,true,false,true,false,true,true,true,true,false,true,true,true,false,false,false,true,false,true,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,false,true,true,false,true,true,false,false,true,false,false,true,false,false,false,false,true,false,false,true,true,false,false,false,true,false,false,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,true,false,true,true,false,false,false,true,false,false,false,true,true,false,true,true,true,false,false,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,true,false,true,true,true,false,false,false,true,false,false,false,true,false,false,false,false,false,true,false,false,false,true,true,false,true,false,false,false,false,false,true,false,false,false,true,false,false,true,false,true,false,false,true,true,false,false,false,false,true,true,false,false,false,true,true,false,true,true,true,false,false,false,false,false,false,false,true,true,false,true,true,false,true,false,true,true,false,false,true,false,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,false,false,true,false,false,true,false,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,false,true,true,false,false,true,false,true,true,true,false,false,false,true,true,true,true,false,true,true,true,true,true,false,false,true,false,false,true,false,false,true,true,true,true,false,false,true,false,false,false,false,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,false,true,false,true,false,false,false,true,true,false,false,true,false,true,true,false,false,true,true,true,false,false,false,true,true,true,false,true,false,true,true,false,false,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,false,false,false,false,true,false,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,false,false,false,false,true,true,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,false,true,false,false,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,false,true,true,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,true,false,true,false,false,true,false,true,true,true,false,false,false,false,true,false,false,false,true,false,false,true,true,true,false,false,true,true,false,true,false,true,false,false,true,false,false,false,false,false,true,false,true,true,true,true,true,false,false,true,true,true,false,true,false,false,false,true,true,true,false,false,true,false,true,false,true,false,false,true,false,false,false,true,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,false,false,true,false,false,true,true,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,false,true,true,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,false,true,true,false,false,true,false,true,true,false,true,false,true,true,true,false,false,true,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,false,false,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,true,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,false,false,true,false,false,false,false,true,false,true,false,true,false,false,false,true,false,false,false,false,true,false,false,true,false,false,false,true,false,true,true,false,true,false,false,false,true,false,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,false,true,true,true,false,true,false,false,true,true,false,false,true,true,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,true,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,true,true,false,true,false,true,true,true,false,true,false,false,true,true,false,false,false,true,false,false,true,false,true,true,true,true,true,false,true,true,true,false,true,false,false,true,false,false,false,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,true,true,false,true,false,true,true,true,false,true,false,true,false,true,false,false,false,false,true,false,true,false,false,false,false,true,true,true,false,false,true,false,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,false,false,true,true,true,false,false,false,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,false,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,false,false,true,true,true,false,false,false,true,false,false,false,false,false,true,false,true,false,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,false,false,true,true,false,true,false,true,false,false,true,true,true,false,true,true,true,true,true,false,false,false,false,true,false,false,true,true,false,false,true,true,false,true,true,false,false,true,true,true,false,false,false,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,false,true,true,false,true,true,true,false,false,true,true,false,false,true,false,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,false,false,true,false,false,true,true,true,true,false,true,false,false,false,true,true,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,false,true,false,true,false,false,true,true,false,true,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,false,true,true,false,false,false,false,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,true,false,false,true,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,false,true,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,false,false,false,true,true,false,true,false,false,true,false,false,true,false,true,true,false,true,true,false,false,true,true,true,true,false,true,true,false,false,false,false,false,true,false,true,true,false,true,true,false,true,false,true,false,false,true,false,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,false,false,false,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,false,true,false,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,false,false,false,true,true,false,true,false,false,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,false,true,false,true,false,false,false,true,false,true,true,true,false,true,false,true,false,false,false,true,true,true,false,true,false,true,true,false,false,true,false,true,true,false,false,false,true,false,true,true,false,true,false,false,true,false,false,true,false,false,true,false,false,false,true,false,false,true,false,false,false,true,true,false,true,true,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,true,true,false,false,false,true,true,true,false,false,true,false,true,true,true,false,true,true,false,false,true,true,true,false,false,true,false,true,false,false,false,true,false,false,true,true,false,false,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,false,true,true,false,false,false,true,true,false,false,true,false,false,true,true,false,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,false,false,true,true,true,true,false,true,true,true,true,false,true,false,false,false,true,false,true,false,true,false,true,false,false,false,true,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,true,true,true,true,false,true,false,false,false,true,true,false,true,false,true,false,false,true,false,true,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,true,false,false,true,false,true,true,true,true,false,false,true,false,true,false,true,false,false,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,false,false,true,false,true,true,true,true,false,false,false,false,false,false,true,false,true,true,true,true,false,false,false,true,false,true,false,false,false,true,false,false,false,true,true,false,true,false,false,false,false,true,true,false,false,false,true,false,false,true,true,true,false,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,false,false,true,false,true,true,true,true,false,true,true,false,true,false,true,true,false,false,false,true,false,false,false,true,false,false,false,true,false,true,true,true,true,false,false,false,true,false,true,false,false,false,false,false,true,false,true,false,true,true,true,true,true,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,false,false,false,false,false,true,true,false,false,true,false,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,false,false,true,true,true,false,false,false,true,false,true,true,false,true,false,true,true,false,true,false,true,true,true,false,true,false,false,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,false,false,true,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,false,false,true,false,false,false,false,false,true,false,false,false,true,false,true,false,false,true,true,false,true,false,false,false,false,true,false,false,false,false,true,false,false,true,true,false,false,false,true,false,true,true,true,false,false,false,true,false,true,true,true,false,false,true,false,true,false,true,false,true,true,false,true,true,false,false,false,true,true,true,false,true,false,false,true,false,false,false,true,true,true,false,false,true,false,true,false,false,false,true,true,true,true,false,true,false,false,true,true,false,false,false,false,true,false,false,true,false,true,false,true,true,false,true,false,true,true,true,true,false,false,false,false,false,false,false,true,false,true,false,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,false,false,true,true,true,true,false,false,true,false,true,false,false,true,true,false,true,false,true,true,false,true,true,true,false,true,true,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,false,false,true,false,true,true,false,false,false,false,true,false,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,false,true,true,false,true,true,true,true,false,false,true,true,false,false,true,true,false,false,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,false,false,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,false,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,false,false,false,false,true,false,false,true,false,false,false,true,true,true,false,false,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,false,true,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,true,true,true,false,true,false,false,true,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,true,true,false,false,false,true,false,false,false,true,false,true,true,false,false,true,false,false,true,false,false,true,true,false,true,false,false,true,false,true,true,true,false,false,false,false,false,true,false,false,true,false,false,true,false,false,false,true,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,false,false,true,false,false,true,false,true,false,true,true,false,false,true,true,true,false,true,false,true,false,true,true,false,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,false,false,true,false,true,true,true,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,true,false,false,true,true,false,false,false,false,true,false,false,true,false,false,false,true,true,false,false,true,false,false,false,true,true,false,false,false,false,false,false,true,false,false,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,false,false,true,false,true,false,false,false,true,false,false,true,false,true,false,true,true,false,false,true,false,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,false,false,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,false,true,false,false,false,false,true,true,false,true,false,false,false,true,true,false,false,false,false,false,false,false,false,true,false,true,true,false,true,true,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,true,true,false,true,true,true,false,true,true,true,false,false,false,false,true,false,false,false,true,false,true,true,false,false,true,false,true,false,false,true,true,false,false,true,true,true,true,false,false,false,false,false,false,false,false,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,false,true,false,false,false,false,true,false,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,false,false,false,false,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,true,false,true,false,false,true,false,true,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,true,true,false,true,false,false,false,false,false,false,true,false,false,true,false,true,false,false,false,false,true,false,false,false,false,true,false,true,false,false,false,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,false,false,true,false,false,false,false,true,true,false,true,true,false,true,true,false,false,true,false,false,true,false,false,true,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,false,false,false,false,true,true,false,false,false,true,false,false,false,true,false,false,false,true,false,true,false,false,false,true,false,false,false,true,false,false,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,false,false,false,true,true,false,false,false,false,false,false,false,true,true,true,false,true,false,false,true,false,true,true,true,false,false,false,true,false,false,false,true,true,false,true,false,false,false,false,false,false,false,false,false,false,true,false,true,false,true,false,true,true,false,false,true,false,true,true,true,false,false,true,true,false,false,true,true,true,false,false,true,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,false,false,true,true,false,true,false,true,true,true,false,false,true,false,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,false,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,false,true,true,false,false,false,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true,false,true,true,true,false,false,true,false,true,false,false,false,true,false,false,true,false,true,false,true,false,true,false,true,false,true,false,false,false,false,true,false,true,false,false,true,true,true,false,false,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,false,true,false,true,true,false,false,true,false,false,true,false,true,false,true,false,true,true,true,true,false,true,false,true,false,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,false,false,true,true,false,false,false,false,true,false,false,true,false,false,false,false,false,false,true,true,true,true,false,true,true,false,false,false,false,true,false,false,true,false,false,true,false,false,true,false,false,false,true,true,false,true,true,false,true,false,true,false,false,false,true,true,false,false,false,true,true,false,false,true,true,true,true,false,false,true,false,false,false,false,false,true,true,false,false,false,true,true,false,true,false,true,false,false,false,false,false,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,false,true,true,false,true,true,false,true,false,true,false,true,false,true,true,false,true,true,true,false,true,false,true,false,true,true,false,false,true,false,true,false,true,false,false,false,true,false,false,true,true,false,false,false,false,false,true,true,true,false,true,false,false,false,true,true,true,true,false,true,false,true,false,true,false,true,false,true,true,true,true,false,true,false,false,true,false,false,true,false,false,true,false,true,false,true,true,false,false,false,true,false,false,true,true,false,false,true,true,true,false,true,false,false,false,false,true,true,false,true,true,false,true,true,true,true,false,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false,true,false,false,true,true,false,true,false,false,true,true,true,true,true,false,false,false,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,true,false,true,false,true,true,true,true,true,false,false,false,false,false,true,false,false,true,false,true,false,false,false,false,true,true,false,false,false,false,false,false,false,true,false,true,false,false,true,true,false,false,false,false,true,true,false,true,false,true,true,false,false,true,false,false,false,true,false,false,false,false,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,false,true,false,true,true,false,true,true,true,false,false,true,true,false,false,false,true,true,false,true,true,true,false,true,true,false,false,false,true,true,false,false,false,false,false,true,false,false,true,false,true,true,true,false,false,false,true,false,false,false,true,false,true,false,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false,false,false,true,false,true,false,true,true,true,true,false,true,false,true,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,true,false,true,true,false,true,false,true,false,false,true,true,true,false,false,false,true,false,false,false,false,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,true,false,false,false,false,true,false,true,true,false,true,true,false,false,true,false,false,true,false,false,false,true,false,true,false,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,false,false,true,true,false,true,true,false,true,false,true,false,false,false,false,false,true,true,false,true,false,false,false,true,true,false,true,true,false,true,true,true,false,false,true,false,true,false,true,false,true,true,true,false,false,false,true,true,false,true,false,false,false,true,false,true,true,true,false,false,true,false,false,false,true,true,false,true,false,false,false,true,false,true,false,false,false,true,false,true,false,true,false,false,false,true,false,true,true,false,false,false,false,true,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,false,true,true,true,false,false,true,false,true,false,true,false,false,true,false,true,true,true,false,false,true,false,false,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,true,false,false,true,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,false,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,false,false,true,false,true,false,false,false,true,false,false,true,true,false,false,false,true,true,false,true,true,false,true,false,false,true,true,false,true,true,true,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,false,true,false,false,true,false,true,true,true,true,false,true,true,false,false,false,false,true,false,false,true,false,true,false,false,false,true,false,false,false,true,false,true,false,true,false,false,false,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,false,true,false,false,false,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,false,false,false,true,false,true,true,false,false,true,false,true,false,false,false,true,false,true,false,true,false,false,false,true,false,true,false,true,false,false,true,true,false,true,false,false,true,true,true,true,false,false,false,false,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,false,true,false,true,false,true,false,false,true,false,false,true,false,true,false,false,true,true,true,false,false,true,true,true,false,false,false,false,true,false,false,false,false,false,true,true,true,false,false,false,false,true,false,false,false,false,false,false,true,false,true,false,false,false,true,true,true,false,true,false,true,false,true,true,true,false,false,true,true,false,true,true,true,false,false,false,true,false,true,false,true,true,false,true,false,true,true,true,false,true,false,true,false,true,true,true,false,false,true,false,false,false,false,true,false,true,false,true,true,false,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,false,false,true,true,false,true,false,true,false,true,true,true,true,false,true,false,false,true,true,false,true,false,true,true,true,true,false,true,false,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,false,false,true,true,false,false,false,false,false,false,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,false,true,true,false,false,false,false,false,false,true,false,true,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,false,false,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,false,false,true,false,true,true,false,false,false,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,false,false,true,false,false,false,false,false,true,false,false,false,false,false,false,false,true,false,false,true,false,false,true,true,false,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,true,false,false,false,false,false,true,true,false,true,false,true,true,true,true,false,false,false,false,false,true,true,true,false,true,true,false,false,false,false,true,true,true,false,true,false,true,false,false,false,true,true,true,false,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,false,true,true,false,false,true,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,false,true,false,false,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,false,false,true,false,false,true,false,false,false,false,true,false,false,true,true,false,true,false,true,true,false,false,false,false,true,true,false,false,true,false,true,false,true,false,true,true,false,true,true,true,false,true,false,true,false,false,false,false,true,true,false,true,true,true,true,false,false,false,true,true,false,true,false,false,true,false,true,false,false,true,true,false,false,false,true,false,false,false,true,false,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,false,true,false,true,false,false,true,true,false,true,true,false,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,false,true,false,true,false,true,false,false,true,false,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,false,false,false,false,true,true,true,false,false,true,false,true,true,false,false,true,true,true,false,true,true,true,false,false,true,true,false,false,false,true,false,false,true,false,true,false,false,false,true,false,true,true,false,true,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,false,true,false,true,true,true,true,false,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,false,true,false,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,true,false,true,true,false,false,true,false,false,true,true,false,false,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,false,false,true,false,false,true,false,true,true,false,true,false,true,true,false,true,false,true,false,true,true,true,false,false,true,true,false,false,false,false,false,true,true,false,true,true,false,false,false,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,true,false,true,true,false,true,true,false,false,false,true,false,false,true,true,false,false,true,false,false,true,false,true,true,false,false,false,true,false,true,true,false,true,false,false,false,true,true,true,false,true,true,false,true,false,true,false,false,true,false,true,false,false,true,false,false,false,false,true,false,true,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,false,false,false,false,false,true,false,true,true,true,true,true,false,true,false,false,true,false,true,false,true,true,false,false,true,false,true,false,true,false,false,true,true,true,false,false,false,true,true,false,true,false,true,true,true,false,false,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,false,false,false,false,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,false,false,true,true,false,false,false,false,false,false,false,true,false,true,true,true,false,false,true,false,true,false,true,true,true,true,false,true,true,false,true,false,true,false,true,false,true,false,false,false,false,false,false,false,true,false,false,true,false,false,true,true,true,false,true,true,false,true,false,false,false,true,false,false,false,true,false,false,true,false,true,false,false,true,true,false,false,false,false,false,true,true,false,true,true,false,true,false,true,false,false,true,true,true,false,false,false,false,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,false,false,true,false,true,false,true,false,true,false,false,false,false,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,false,true,true,false,true,false,false,true,true,false,true,true,true,true,false,false,true,false,false,true,true,false,false,true,true,false,true,true,false,false,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,false,false,true,true,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,false,false,true,true,false,true,false,false,true,true,false,true,false,true,true,true,false,false,true,true,false,true,true,false,true,true,true,false,false,true,true,false,false,false,false,false,false,true,false,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,true,false,false,false,false,true,false,false,true,false,false,false,true,false,true,false,true,true,false,true,false,false,false,false,true,true,false,true,true,true,false,false,true,false,true,true,false,false,false,false,true,false,false,false,false,true,false,false,true,true,false,false,true,false,true,false,false,false,false,true,false,true,true,true,true,false,true,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,false,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,true,true,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,false,true,false,false,false,true,false,true,false,true,true,false,false,false,false,false,false,true,true,true,true,true,false,false,false,true,false,false,true,false,true,true,false,true,true,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,false,true,false,false,true,false,false,true,true,true,true,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,false,true,true,false,false,false,true,false,false,true,false,true,true,false,false,true,false,true,false,true,true,false,false,true,true,false,false,false,true,false,true,false,true,false,false,true,false,false,false,true,false,false,false,true,false,false,true,false,false,false,true,false,false,false,false,true,true,false,false,false,false,true,false,false,false,false,false,true,false,false,false,true,true,true,false,false,true,true,false,true,true,false,false,false,true,true,false,true,true,false,false,false,false,true,true,false,true,true,false,false,true,false,true,false,true,true,true,false,false,false,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,true,false,false,false,true,false,true,true,true,false,true,false,true,false,false,true,false,false,false,true,false,true,true,true,true,false,false,true,false,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,false,true,false,false,true,false,false,false,true,false,true,true,true,false,false,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,false,false,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,false,true,false,true,false,false,true,true,true,true,false,false,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,false,true,true,false,true,false,true,true,false,false,true,false,false,true,true,false,false,true,false,true,false,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,false,true,false,true,false,true,false,true,true,true,true,true,false,false,true,false,true,true,false,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,false,true,false,true,false,false,false,true,true,false,true,true,false,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,false,true,false,true,false,false,false,false,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,false,false,true,false,false,false,true,true,false,true,true,false,true,false,false,true,false,false,true,false,true,true,false,false,false,true,true,false,false,true,false,true,true,true,true,false,true,true,false,false,false,true,false,false,false,true,true,false,false,false,true,false,true,true,false,false,true,false,false,false,true,false,true,false,true,false,false,false,true,false,false,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,false,true,true,true,false,false,false,true,false,true,true,true,true,false,false,true,true,false,false,true,true,false,true,false,true,false,true,false,true,false,false,true,true,false,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,false,false,true,false,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,true,false,true,false,true,false,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,false,true,false,true,true,false,false,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,true,false,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,true,true,true,true,true,false,false,true,false,false,false,true,false,false,false,true,true,true,false,true,false,true,false,false,true,true,true,false,false,false,true,false,false,true,false,true,false,true,true,false,true,false,false,true,false,true,true,false,false,true,false,false,true,true,true,false,true,true,false,true,false,false,true,false,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,true,true,false,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,false,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,false,false,true,false,false,false,false,false,true,true,false,false,false,true,true,true,true,true,false,false,false,false,false,false,true,true,false,false,false,true,true,true,false,false,false,true,false,true,true,false,true,false,false,false,false,false,true,true,false,false,true,true,false,true,false,false,false,false,true,false,true,false,false,true,true,false,true,false,false,true,false,true,true,false,false,false,true,true,true,true,true,false,false,false,true,true,false,true,true,true,false,true,true,false,false,true,true,false,true,false,true,false,true,false,true,true,true,true,true,false,false,false,true,false,true,false,false,false,true,true,false,true,false,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,false,true,false,false,false,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,true,true,false,true,false,false,false,true,true,true,false,true,false,true,false,false,false,true,false,false,false,false,false,false,true,true,true,false,true,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,false,false,false,false,true,true,false,false,true,true,false,false,true,true,false,false,false,false,false,true,true,false,true,false,true,false,true,true,false,false,true,false,false,false,true,false,true,false,false,true,false,false,true,false,true,false,true,true,true,false,false,true,false,true,false,false,true,false,false,false,true,true,false,false,false,false,true,false,false,false,false,false,false,false,true,false,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,true,false,false,false,true,true,false,true,false,false,true,true,true,false,true,true,false,false,false,false,false,true,false,false,true,false,true,false,false,false,false,true,false,false,false,false,true,true,false,false,true,false,false,true,false,true,false,true,false,false,true,false,true,false,true,true,true,false,false,true,true,true,false,false,true,true,true,true,false,false,true,false,true,true,true,false,true,false,false,false,true,false,false,true,false,false,false,true,false,false,true,true,false,false,true,true,false,true,true,false,false,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,false,true,false,true,true,true,true,false,true,false,false,true,false,true,true,false,true,false,false,true,false,false,false,false,true,false,false,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,false,false,false,true,false,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,true,false,false,true,true,true,true,true,true,false,true,true,false,false,false,false,false,false,true,false,true,true,false,false,true,true,false,false,false,false,true,true,true,false,false,false,false,true,true,false,false,false,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,false,true,true,true,false,true,false,true,false,false,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,false,false,true,true,false,false,false,true,true,false,false,false,true,false,false,false,true,false,false,true,false,false,false,false,true,false,true,true,true,false,false,true,true,true,false,false,false,false,true,true,false,true,true,true,false,true,false,false,true,false,true,false,true,false,false,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,false,false,true,true,false,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,true,true,false,false,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,false,false,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,false,true,false,false,true,true,false,false,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,false,false,false,false,false,true,true,true,false,false,true,false,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,true,false,true,false,true,false,false,false,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,false,true,true,false,false,true,false,false,true,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,false,true,true,true,false,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,false,true,false,true,false,true,true,true,false,false,false,false,true,true,false,true,true,true,true,false,true,false,true,false,false,true,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,false,true,false,false,false,true,false,false,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,false,false,true,false,false,false,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,false,true,false,false,true,false,true,true,false,false,true,false,false,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,false,true,false,true,true,true,true,false,false,true,false,false,false,true,false,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,false,true,false,false,true,false,true,false,true,false,false,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,true,false,true,false,false,true,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,false,true,false,false,false,true,true,true,false,false,true,true,false,false,true,true,false,false,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,false,false,false,true,false,false,false,true,false,true,false,true,false,true,true,false,false,true,false,false,true,true,false,true,true,false,false,false,false,true,true,true,false,true,true,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,false,true,false,false,false,false,false,true,false,false,true,true,false,false,false,true,false,false,true,true,true,true,false,false,true,true,false,false,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,false,false,false,false,true,true,true,false,false,false,true,false,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,true,true,false,true,false,true,true,false,false,false,false,false,false,true,false,false,false,false,false,true,true,true,false,false,false,false,true,false,false,false,false,true,false,false,true,true,false,false,false,false,true,true,false,false,false,false,true,false,true,false,false,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,false,true,false,true,true,true,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,false,false,true,false,true,true,true,true,false,false,false,true,false,false,true,false,true,false,false,true,false,true,true,false,true,false,true,false,true,true,true,true,false,true,false,true,true,true,false,false,true,false,false,false,false,true,true,false,true,true,false,false,false,true,false,false,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,false,false,false,true,false,true,false,true,false,true,false,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,false,true,false,false,true,false,false,false,false,true,false,false,false,true,true,true,false,false,true,false,true,false,false,false,true,true,false,false,false,false,false,true,false,false,true,true,true,false,true,false,true,false,true,true,true,true,true,false,true,false,true,true,false,false,false,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,false,true,true,false,true,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,false,false,true,false,true,true,true,true,true,true,false,false,true,false,false,false,true,false,true,false,false,false,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,false,true,false,true,false,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,false,false,false,true,false,true,false,true,true,true,true,false,false,true,false,true,false,false,true,true,true,false,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,false,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,false,true,false,false,false,false,false,true,false,true,false,true,false,true,true,true,false,true,true,true,false,true,false,false,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,false,false,true,false,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,true,false,false,false,false,true,false,true,false,true,true,false,false,false,true,false,true,false,false,true,false,true,true,true,true,true,false,false,true,false,false,false,false,false,true,false,false,false,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,true,true,false,true,true,false,false,true,false,true,true,false,true,false,false,true,true,true,true,true,true,false,true,false,false,false,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,false,true,false,false,true,false,false,true,false,true,false,false,false,false,false,false,false,true,false,false,false,false,true,true,false,false,false,true,false,false,true,true,false,false,false,true,false,false,true,false,false,true,true,false,true,false,true,true,false,true,true,false,false,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,false,true,false,false,true,true,true,false,true,false,true,false,true,false,false,true,false,true,true,false,false,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,false,true,true,true,false,false,false,true,false,true,true,false,false,true,false,false,true,true,true,true,false,true,false,false,true,false,false,true,false,true,true,false,true,false,false,false,true,false,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,false,false,true,false,true,false,true,false,true,true,true,true,false,true,false,true,false,true,false,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,false,true,false,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,true,false,false,false,false,false,false,false,false,true,false,true,true,false,false,false,false,false,false,true,false,true,true,true,false,false,true,true,false,true,false,false,true,false,false,true,false,false,true,false,false,false,false,false,true,false,true,true,false,false,false,false,true,true,true,true,false,false,true,true,true,false,false,true,false,false,false,true,false,false,true,true,true,true,true,false,true,false,false,false,false,true,false,true,false,true,true,true,false,true,false,false,false,false,true,false,false,false,false,true,true,true,false,true,true,false,true,true,false,false,true,true,true,true,true,false,false,true,false,false,false,true,true,false,false,true,false,true,false,false,true,true,true,false,false,false,false,true,false,false,false,false,true,false,true,true,true,true,false,false,true,true,false,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,false,false,true,true,false,true,true,false,true,true,true,true,false,false,true,false,false,false,true,true,false,false,true,false,true,true,false,true,false,true,true,false,true,false,false,true,false,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,false,true,false,true,true,false,true,true,false,false,false,true,true,false,true,false,true,false,false,true,false,false,true,false,false,false,true,true,true,false,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,true,false,true,false,true,false,false,true,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,false,true,true,true,false,true,false,false,true,false,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,false,true,false,false,false,true,false,true,true,false,true,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,false,false,true,false,true,false,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,false,false,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,false,false,false,true,false,false,true,false,false,false,false,false,true,false,true,false,true,true,false,false,true,false,false,true,false,true,false,true,false,false,false,true,false,false,true,false,true,false,false,true,true,false,false,true,false,false,false,false,true,false,true,false,true,true,true,false,false,false,false,false,true,true,true,false,true,true,false,true,false,false,true,true,false,false,true,true,true,false,false,true,false,false,false,true,false,true,true,false,true,false,false,false,true,true,true,true,true,false,true,true,true,false,true,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,false,false,true,false,false,false,false,false,false,true,true,false,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,false,true,false,false,true,false,false,false,true,false,false,true,true,false,true,true,true,false,true,true,true,false,false,true,false,false,true,false,true,false,true,true,false,true,false,false,true,false,true,false,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,false,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,false,false,true,true,false,false,false,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,false,true,false,false,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,false,false,true,true,false,false,true,true,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,true,false,true,false,true,false,true,true,true,false,true,true,true,true,false,true,true,true,false,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,false,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,false,false,false,true,false,true,true,true,true,false,true,false,false,false,false,true,false,true,false,true,false,false,true,false,false,true,false,true,false,false,false,false,true,true,true,false,true,true,false,false,true,true,false,false,true,false,false,false,true,false,false,false,true,false,true,false,true,false,false,false,false,true,true,false,true,true,false,true,true,false,true,false,true,false,true,false,true,true,true,true,false,false,false,false,true,true,false,true,false,true,true,false,true,true,true,false,false,false,false,true,true,false,false,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,true,false,false,true,false,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,true,false,true,true,true,false,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,false,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,false,true,false,false,true,false,true,false,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,true,false,false,true,false,true,true,false,true,false,true,true,false,true,false,false,false,true,false,false,true,true,false,false,true,false,false,true,false,true,true,false,false,false,false,true,true,false,true,false,true,true,true,true,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,false,false,true,true,false,false,true,false,true,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,false,true,false,true,false,true,false,false,false,true,true,true,false,true,true,false,true,false,false,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,false,true,false,false,false,false,false,false,false,true,false,false,false,false,true,false,true,true,false,false,false,true,true,false,false,false,true,false,true,false,true,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,true,true,true,true,false,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,false,true,true,false,false,true,false,true,false,true,false,false,false,true,true,false,true,false,false,true,true,false,false,true,true,true,false,false,true,false,true,false,false,true,true,false,true,false,true,true,false,false,true,false,true,false,true,true,false,true,true,false,false,true,false,false,true,true,false,true,false,true,false,true,false,true,false,false,true,false,false,true,true,false,false,true,true,true,true,false,false,true,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,false,false,true,false,true,false,true,true,false,true,false,false,true,true,false,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,false,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,false,false,true,false,true,false,true,false,true,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,false,false,true,false,false,false,false,true,true,true,true,true,false,false,true,false,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,false,false,false,false,false,false,false,true,false,true,true,true,true,false,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,true,false,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,false,true,false,true,true,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,false,true,true,false,true,false,true,false,true,true,false,true,false,false,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,false,true,false,false,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,true,false,true,true,false,false,false,false,false,true,false,false,true,true,true,false,false,false,true,true,false,false,true,true,false,true,true,false,false,true,true,true,false,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,false,false,false,false,false,true,false,true,true,false,false,true,false,false,true,true,false,false,true,false,false,true,true,false,false,true,false,false,true,false,true,true,false,false,false,true,true,false,true,false,false,false,true,true,false,false,true,false,false,true,false,false,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,false,true,false,true,false,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,true,false,true,true,false,false,false,false,true,true,true,false,true,false,false,true,true,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,false,true,true,false,false,false,false,false,false,true,false,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,true,true,false,false,false,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,true,true,true,true,false,false,true,false,false,false,false,false,true,false,true,true,true,false,false,false,false,true,false,false,true,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,true,false,false,false,true,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,true,false,false,false,true,false,false,false,false,false,true,true,false,false,false,true,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,false,false,true,false,true,true,false,false,false,true,true,false,true,false,false,true,false,false,false,false,false,true,false,false,false,true,false,false,false,true,false,false,false,false,true,false,false,false,true,true,true,false,false,true,false,false,true,true,false,true,true,true,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,false,false,true,false,false,false,false,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,true,false,true,true,true,false,true,false,false,false,false,false,false,false,false,true,false,true,true,false,false,true,false,false,true,true,true,true,true,false,true,false,true,false,true,false,false,true,false,false,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,false,true,false,false,true,true,false,true,true,false,false,true,false,false,true,false,false,false,true,false,false,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,false,false,true,true,true,false,false,true,true,false,true,false,true,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,false,false,true,true,false,false,false,true,false,true,false,false,false,true,true,false,false,true,false,true,false,true,false,false,true,true,false,false,true,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true,false,false,true,false,false,false,false,true,true,false,true,false,true,false,true,true,false,true,true,false,false,true,false,true,true,true,false,false,true,false,false,false,false,false,true,true,false,true,false,false,false,true,false,false,true,false,false,false,true,true,false,false,true,true,false,true,false,false,true,false,true,false,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,false,true,true,false,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,false,false,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,false,false,true,true,true,false,true,false,false,true,false,true,true,false,true,false,false,true,true,true,false,false,false,false,false,false,true,false,false,true,false,false,false,true,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,false,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,false,false,false,false,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,false,false,true,true,false,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,false,false,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,true,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,true,false,true,false,false,true,true,true,false,false,true,false,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,false,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,true,false,false,false,true,true,true,false,false,true,true,false,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,false,true,false,false,false,true,true,false,false,true,false,false,false,true,true,true,true,true,false,true,false,false,true,false,false,false,true,true,false,true,false,false,false,false,false,true,false,true,false,false,true,true,true,false,true,false,false,false,true,true,false,false,false,false,true,false,true,true,false,false,true,false,true,false,false,true,false,true,false,false,false,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,false,false,true,false,false,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,false,true,false,false,true,false,true,false,true,false,false,false,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,false,true,false,false,false,true,false,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,false,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,false,false,true,false,true,true,false,true,true,true,false,true,true,false,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,false,false,true,true,false,false,true,false,false,true,true,true,false,false,true,true,false,true,true,false,false,false,true,false,false,true,true,true,true,false,false,true,false,false,true,true,true,true,false,true,false,false,true,false,true,false,false,false,true,false,false,true,true,false,false,false,true,true,true,false,true,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,false,false,true,false,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,true,false,false,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,false,true,false,true,false,true,false,false,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,false,false,false,false,false,true,false,true,false,true,false,false,false,false,false,true,true,true,true,true,true,false,true,true,false,true,false,false,true,false,false,true,false,false,true,false,false,true,false,true,true,true,false,false,false,true,false,false,false,false,true,true,true,false,true,true,false,true,true,false,false,false,true,false,true,false,true,false,false,false,false,true,false,false,false,false,false,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,false,true,true,true,false,false,true,false,true,true,false,true,true,false,false,true,false,false,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,false,false,true,true,false,true,false,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,true,false,true,true,true,false,true,false,true,false,true,false,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,false,true,true,true,true,false,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,false,false,false,false,true,true,false,true,false,true,true,true,false,false,false,true,true,true,false,true,false,true,false,false,true,true,true,false,false,false,false,false,true,false,true,true,false,true,true,false,false,true,false,true,true,false,true,true,false,false,true,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,false,true,false,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,false,false,true,false,false,false,true,false,false,false,true,true,true,false,false,false,false,false,false,true,false,false,true,false,false,true,true,true,true,true,false,false,false,true,false,false,false,false,true,false,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,false,true,false,false,true,true,false,false,true,true,false,true,false,true,true,true,true,false,true,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,false,true,true,true,true,false,true,true,false,false,true,true,false,false,true,true,true,true,false,false,false,false,true,false,true,true,false,false,false,true,false,false,true,false,true,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,false,false,false,true,false,false,true,true,true,false,true,false,false,true,false,true,true,true,true,false,true,true,false,false,true,false,false,true,true,true,false,false,true,true,false,false,true,true,true,false,false,true,false,true,true,true,false,false,false,true,false,true,true,false,false,true,true,false,false,true,false,false,false,false,false,true,false,false,true,false,true,true,false,false,true,false,true,false,true,true,false,false,false,true,false,false,false,false,true,false,true,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,false,true,true,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,true,false,false,false,true,true,false,false,false,false,true,true,false,true,true,true,false,false,true,false,true,true,false,true,false,false,false,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,false,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,false,true,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,true,false,false,true,false,false,false,false,false,false,true,true,true,false,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,false,true,false,true,false,false,true,false,false,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,false,false,false,true,true,false,false,false,true,false,true,true,false,false,false,false,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,false,false,false,true,false,false,false,false,true,true,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,false,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,true,true,true,true,false,false,true,false,false,true,true,true,false,true,true,false,true,false,false,false,false,false,true,false,true,false,true,true,false,true,true,false,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,false,false,true,false,false,true,false,true,true,false,false,false,true,true,false,false,false,false,true,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,false,true,true,false,false,true,false,false,false,false,true,true,true,false,false,true,false,false,false,false,false,true,false,false,false,true,false,true,true,true,false,false,false,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,false,true,false,false,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,false,true,false,false,false,false,false,true,false,false,false,true,true,false,false,false,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,true,true,false,false,false,true,true,false,true,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,false,false,false,false,false,false,true,true,true,false,false,true,true,false,true,false,true,false,true,true,true,false,true,true,true,true,false,false,false,true,false,false,false,false,true,true,true,false,false,false,true,false,false,false,true,true,true,true,false,true,true,true,false,false,false,true,true,false,false,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,false,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,false,false,false,true,true,true,false,true,true,false,true,true,true,true,false,false,false,false,false,false,false,true,true,false,false,false,false,false,true,false,true,true,false,true,true,false,false,false,true,true,false,true,false,false,true,true,false,false,false,true,true,false,true,true,true,true,false,false,true,false,false,false,true,false,true,false,true,true,false,false,false,false,true,false,false,true,true,true,true,false,false,false,false,true,true,false,false,true,true,true,true,false,false,true,true,false,false,true,false,false,true,true,true,false,false,false,false,true,false,true,false,true,false,false,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,false,false,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,false,false,true,false,true,false,false,false,true,true,false,true,false,false,false,false,false,true,false,true,false,true,true,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,false,true,true,true,false,true,true,true,false,false,true,true,false,false,true,true,true,true,true,false,false,false,true,false,true,false,true,true,false,false,true,false,true,false,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,false,false,false,true,false,false,true,true,false,true,false,true,true,true,false,false,false,false,true,true,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,false,false,true,false,false,true,false,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,false,false,true,true,true,false,true,false,false,true,true,true,false,false,true,true,true,false,false,true,true,false,false,false,true,true,false,false,true,true,false,false,true,true,true,false,true,false,false,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,false,false,false,true,false,true,true,false,false,false,false,false,false,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,false,false,true,true,true,true,false,true,false,false,true,false,true,true,true,false,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,false,false,false,false,true,false,false,false,true,false,false,true,true,true,false,true,true,false,false,false,true,true,true,false,true,false,true,false,false,true,false,false,true,true,false,true,false,false,false,true,false,false,false,true,false,true,false,true,false,false,false,true,true,false,true,false,true,false,true,true,true,true,true,false,false,false,true,true,true,true,false,false,false,false,false,true,false,false,false,true,false,true,false,false,false,true,true,true,false,false,false,false,false,true,false,true,false,true,true,true,false,false,true,false,true,false,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,true,false,false,true,true,false,false,true,true,false,false,true,true,false,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,true,true,true,false,true,false,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,true,true,false,false,true,true,false,true,true,false,true,false,false,true,true,false,false,false,false,true,false,false,true,false,true,false,false,false,true,true,false,true,false,false,false,false,false,false,true,false,true,true,true,false,true,true,true,true,false,true,true,false,false,false,false,false,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,false,false,false,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,false,false,true,true,false,true,false,true,true,false,false,false,false,true,true,false,true,false,true,false,false,true,true,false,true,false,true,false,false,true,true,true,false,true,false,false,true,false,true,true,false,false,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,false,true,false,false,false,true,false,false,false,false,true,true,false,false,false,true,true,true,false,false,true,true,true,true,true,false,false,false,true,false,true,false,true,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,false,true,false,false,false,true,true,true,true,false,false,true,false,false,true,true,false,false,false,true,true,true,false,false,true,true,true,true,true,false,false,false,true,true,false,true,false,true,false,false,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,false,false,false,true,true,false,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,false,true,false,false,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,false,false,false,false,true,false,true,false,false,true,true,true,true,true,false,true,false,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,false,true,true,true,false,false,true,true,true,false,false,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,false,false,false,true,true,true,false,false,false,true,true,false,false,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,true,true,false,false,false,false,true,false,false,true,true,false,false,false,false,false,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,false,false,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,false,false,true,true,false,false,false,false,true,false,false,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,false,false,false,true,true,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,false,false,false,true,false,false,false,false,false,false,true,true,false,true,true,false,true,false,false,true,true,false,true,true,true,false,true,false,false,false,false,false,true,true,false,true,false,false,true,true,false,false,false,true,true,true,false,true,false,true,false,false,true,false,true,false,true,false,false,false,false,false,true,false,false,false,true,true,true,false,true,false,true,false,false,true,false,false,true,false,false,true,false,false,true,false,true,true,true,true,false,false,true,true,false,true,true,false,false,false,false,false,true,false,false,true,true,true,false,false,true,false,false,false,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,false,true,true,false,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,false,false,true,true,false,true,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,false,false,true,false,true,false,false,false,false,false,true,true,false,false,false,true,true,false,true,false,false,false,false,false,true,false,false,false,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,false,true,false,true,true,false,false,true,false,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,false,false,true,false,false,false,false,true,true,true,false,true,true,true,false,false,true,true,false,true,false,true,false,false,true,true,true,false,false,true,false,false,false,true,false,true,false,true,false,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,true,false,true,false,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,false,false,true,false,false,true,false,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,false,true,false,true,false,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,false,false,true,false,false,false,false,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,false,false,false,false,false,true,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,true,false,true,true,false,true,true,false,false,false,true,false,false,false,true,true,true,false,true,true,false,false,false,true,false,true,false,false,false,false,true,false,false,true,false,false,true,true,false,false,false,true,false,false,false,true,true,true,false,true,false,true,false,false,true,false,true,false,false,false,false,false,true,false,false,false,false,false,true,false,false,false,false,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,false,false,false,true,false,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,true,false,true,true,false,true,false,true,true,false,true,false,false,false,true,true,false,false,true,false,false,false,true,true,false,false,false,false,false,false,true,false,false,false,true,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,false,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,true,false,false,false,true,false,false,true,true,false,false,false,false,true,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,false,false,true,false,true,false,false,false,false,false,false,true,true,false,true,true,false,true,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,false,false,true,true,true,false,false,true,false,false,true,true,true,false,true,true,true,false,false,true,false,true,true,true,false,false,false,true,true,false,false,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,true,true,true,true,false,false,true,true,false,true,true,true,false,false,false,true,false,true,true,true,false,false,false,false,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,false,false,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,false,false,true,false,false,false,true,true,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,false,false,true,false,true,false,false,false,true,true,true,false,false,true,false,false,true,true,false,false,true,false,true,false,false,true,true,true,false,false,true,false,true,false,true,true,false,true,false,false,true,true,false,true,false,true,true,false,false,true,false,true,true,false,false,true,false,false,false,true,false,true,true,false,true,true,true,false,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,false,false,true,false,true,true,false,true,true,true,true,false,false,true,false,true,false,false,true,true,false,true,false,true,true,false,true,false,false,true,true,true,false,true,false,false,true,false,false,true,true,true,false,true,false,false,true,false,true,true,false,false,true,true,false,false,true,false,false,false,false,true,true,false,false,false,false,false,false,true,true,false,false,false,true,false,false,false,false,true,true,true,true,false,false,true,false,true,false,false,false,false,false,true,false,false,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,true,false,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,true,false,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,true,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,false,true,false,true,false,false,true,false,true,false,true,false,false,false,false,true,true,true,false,true,true,true,false,true,true,false,false,false,false,true,true,false,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,false,true,false,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,false,true,false,false,false,true,false,true,true,true,false,false,false,true,false,true,true,true,true,true,true,false,true,false,true,false,false,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,false,true,true,true,false,true,true,false,false,false,true,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,true,true,false,true,true,false,true,false,false,false,false,true,false,false,false,false,false,true,false,false,false,true,true,false,false,false,true,false,false,false,true,false,false,true,true,false,true,false,true,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,false,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,true,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,false,true,true,false,true,false,true,false,true,true,false,true,false,true,true,true,false,false,true,false,true,false,false,true,false,true,true,false,true,false,true,false,true,false,true,true,false,true,true,true,true,false,true,false,false,false,true,true,false,false,false,true,true,true,true,true,false,true,false,false,false,true,false,true,true,false,true,true,false,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,false,false,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,false,false,false,false,true,false,false,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,false,false,true,false,true,true,true,true,false,false,true,false,false,false,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,false,true,false,false,false,false,false,false,false,false,false,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,false,false,false,true,true,false,false,true,true,false,true,true,true,false,false,true,true,false,true,false,true,false,false,true,false,true,false,false,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,false,false,true,false,false,false,true,true,true,false,true,false,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true,false,true,false,true,true,false,true,false,true,false,true,true,false,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,false,true,true,true,true,false,false,true,false,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,false,true,false,false,false,true,false,false,true,false,false,true,false,false,false,true,true,false,false,false,false,false,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,false,true,false,false,false,true,true,true,false,true,true,false,false,false,false,false,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,false,false,true,true,false,false,true,false,true,true,false,true,false,false,false,false,true,false,true,false,true,true,false,false,false,false,true,true,true,false,true,true,true,true,false,false,true,false,true,false,false,true,false,true,true,false,true,false,true,true,false,false,true,true,false,false,true,true,true,false,true,false,false,true,true,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,false,true,false,false,true,true,false,true,false,true,false,false,true,false,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,false,false,false,true,true,true,true,false,true,false,false,false,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,false,true,true,true,true,true,false,false,false,false,false,true,true,false,true,false,true,true,true,true,false,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,true,true,false,false,false,true,false,false,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,false,false,false,true,false,true,true,false,false,false,true,false,false,true,false,true,false,true,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,true,false,false,false,true,false,false,false,false,false,true,false,true,false,false,true,false,true,true,true,true,false,true,false,false,false,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,false,false,true,true,false,false,true,true,false,true,true,true,false,false,false,false,true,false,true,false,true,false,false,false,false,false,true,true,false,true,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,false,true,false,false,true,false,false,true,true,true,true,false,true,false,true,false,false,false,true,true,true,false,true,false,false,false,false,false,true,false,true,false,false,false,true,false,false,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,true,true,false,false,true,false,true,false,true,false,false,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,false,false,true,true,true,true,true,false,true,false,false,true,true,true,false,false,false,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,false,true,false,true,true,true,false,false,true,true,false,false,true,false,false,false,true,false,true,false,false,true,true,true,true,true,true,false,true,false,false,true,true,false,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,false,true,false,false,true,false,false,false,true,false,true,false,false,false,false,false,false,true,false,true,false,true,true,true,false,true,false,false,false,true,false,false,true,true,true,true,false,false,true,true,false,false,true,false,true,false,false,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,false,false,true,false,true,true,true,false,false,false,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,false,true,true,false,false,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,false,true,true,false,false,false,false,false,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,false,false,true,false,false,true,false,true,false,true,false,true,true,false,true,false,false,false,true,false,true,true,false,true,true,false,false,true,false,true,true,true,false,true,false,true,false,false,true,false,false,false,true,false,true,true,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,false,false,true,true,false,false,false,true,true,false,false,false,true,true,false,false,false,true,true,false,true,true,false,false,true,true,false,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,false,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,false,false,false,true,true,true,false,false,true,false,true,true,false,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,true,false,false,false,true,true,false,false,false,true,false,true,false,true,true,true,true,false,false,false,true,false,true,false,false,true,false,true,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,false,true,true,true,false,true,true,true,true,false,false,false,false,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,false,true,true,true,false,false,false,false,false,true,false,false,false,true,false,false,false,false,false,true,true,false,false,true,false,false,false,true,false,true,true,false,false,false,true,true,false,true,false,false,true,false,true,false,true,true,false,true,false,false,true,true,true,false,false,false,true,true,true,false,true,false,false,true,true,false,true,true,true,false,false,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,false,false,true,false,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,true,false,true,true,false,true,false,false,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,false,false,true,false,false,true,true,false,true,false,false,true,false,true,false,false,false,true,false,false,true,false,false,true,false,false,true,true,false,false,true,true,false,true,false,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,false,true,false,true,false,true,true,false,true,false,false,true,true,true,true,false,false,false,false,false,false,false,false,false,true,false,false,true,false,true,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,false,true,false,true,false,true,false,false,false,true,true,false,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,false,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,false,false,true,true,false,true,false,true,false,false,false,true,true,false,false,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,false,false,true,false,true,false,false,false,false,true,true,true,true,false,false,true,false,true,true,false,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,true,false,true,false,true,false,false,false,true,true,false,false,false,false,true,false,false,true,true,true,false,false,false,false,false,true,false,true,false,false,false,true,true,false,false,true,true,false,true,true,false,false,false,true,false,false,true,false,true,true,true,false,false,false,true,true,true,true,false,false,false,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,false,false,false,false,false,false,true,false,true,false,false,true,false,true,false,false,true,true,true,true,true,false,true,false,false,false,false,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,false,false,false,true,true,true,false,true,false,true,true,false,true,true,false,false,false,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,false,false,false,true,false,true,true,false,true,true,false,false,true,false,false,true,false,true,false,false,true,false,true,true,false,false,true,true,false,true,true,false,false,true,true,false,false,false,true,false,false,true,true,true,false,false,true,false,true,false,false,true,true,true,false,true,false,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,false,false,true,false,true,true,true,false,false,false,true,false,false,false,false,true,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,false,false,true,true,false,false,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,false,false,true,false,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,false,false,true,true,false,true,false,true,false,false,false,false,false,false,false,true,true,true,true,true,true,false,true,true,false,false,true,true,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,false,true,true,true,true,true,true,false,false,true,false,true,false,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,true,true,true,false,true,false,true,false,false,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,false,true,true,false,true,true,false,false,true,false,false,false,false,true,false,true,true,false,false,true,false,false,true,false,false,true,false,false,true,true,true,true,true,true,false,false,false,false,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,false,true,false,false,true,false,false,true,false,true,false,false,false,false,true,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,false,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,true,false,true,false,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,false,false,false,true,true,true,false,true,true,true,false,true,false,false,false,false,true,false,true,false,true,false,true,false,true,true,false,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,false,false,false,true,true,false,false,false,false,true,true,true,false,true,false,true,false,true,false,true,true,false,true,true,true,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,true,true,true,false,true,true,false,true,false,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,false,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,false,false,true,false,true,true,false,true,false,false,false,true,false,true,true,false,true,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,false,true,false,true,true,true,false,false,true,true,false,true,true,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,false,false,false,true,true,false,false,false,false,false,false,true,true,false,true,true,true,false,false,false,false,true,true,false,true,false,true,false,true,false,false,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,false,true,true,true,false,false,true,true,false,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,false,true,false,false,true,false,true,false,true,false,true,true,false,false,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,false,true,false,true,false,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,false,false,false,true,true,false,true,true,false,true,true,false,true,false,false,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,false,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,false,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,false,false,true,true,true,false,false,false,true,false,true,true,false,true,false,true,true,true,false,false,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,false,false,true,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,false,true,true,false,true,false,false,false,false,false,false,false,true,false,false,true,false,true,false,false,false,true,false,false,true,true,false,true,false,true,false,false,false,false,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,false,true,true,false,false,false,false,true,false,true,true,false,false,true,false,false,false,true,true,true,false,true,true,true,false,false,true,false,true,false,true,true,true,false,true,false,false,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,true,false,false,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,false,false,true,false,true,true,false,false,true,true,false,false,false,true,true,true,true,false,true,true,false,false,false,false,true,true,true,false,true,true,true,false,false,true,false,false,false,true,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,false,false,true,false,false,true,true,false,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,false,true,true,true,true,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,false,true,true,true,true,false,false,false,true,true,false,false,false,true,true,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,false,false,false,false,false,true,false,true,false,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,true,false,true,true,true,true,false,true,false,false,false,true,true,true,false,true,false,false,true,false,false,true,true,false,true,true,true,false,true,true,false,true,false,true,false,false,false,true,false,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,false,true,false,false,false,true,false,true,true,false,true,true,false,false,false,true,true,true,false,false,true,false,false,false,false,false,true,false,true,true,false,false,false,false,true,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,false,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,false,false,false,true,true,true,true,false,true,false,false,false,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,false,false,false,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,false,true,true,false,false,true,false,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,false,true,false,false,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,true,false,false,true,false,false,false,false,true,true,false,true,true,true,false,true,true,false,false,true,false,false,true,true,false,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,false,true,false,true,false,true,false,true,true,true,true,true,false,false,true,true,false,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,true,true,false,false,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,true,false,false,true,false,true,false,true,false,true,true,true,true,false,false,true,false,true,true,false,false,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,false,false,false,false,true,true,true,false,true,false,false,false,true,true,false,false,false,false,true,false,false,false,true,false,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,false,true,false,true,true,true,false,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,false,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,false,false,true,false,true,false,true,true,true,true,false,false,true,false,true,true,false,true,true,true,false,false,true,false,false,true,true,false,false,false,false,true,false,false,true,true,true,false,false,true,true,false,false,true,false,false,true,false,true,false,true,false,false,false,true,false,true,false,false,false,true,false,false,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,true,false,true,false,false,true,true,true,false,true,true,false,false,false,false,true,true,true,false,false,true,true,true,false,false,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,false,true,true,false,false,true,true,false,false,false,true,true,false,true,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,false,false,false,true,false,false,true,false,false,false,false,true,true,true,true,true,false,true,false,false,true,false,false,true,true,false,true,false,true,false,true,false,false,false,false,true,false,false,true,false,false,false,false,true,true,false,true,true,false,true,false,true,true,false,false,false,false,true,true,false,false,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,false,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,true,true,false,true,false,false,false,true,true,true,true,false,true,false,false,false,false,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,false,true,true,true,false,false,false,false,true,true,true,true,true,true,false,true,true,true,false,false,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,false,true,true,false,false,false,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,false,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,false,false,false,true,true,true,false,true,true,false,false,false,false,true,true,false,false,false,false,false,true,true,true,true,true,false,false,true,false,true,false,true,true,true,false,false,true,true,true,true,true,false,false,false,true,false,false,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,false,false,false,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,false,false,false,false,false,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,false,true,false,true,false,false,true,false,true,true,true,false,true,false,true,true,false,false,false,false,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,true,false,false,true,true,false,false,false,false,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,false,false,false,false,true,false,false,false,true,true,true,true,false,false,true,false,false,true,true,true,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,false,true,true,true,false,false,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,false,false,true,false,false,false,false,true,true,false,false,true,false,true,true,false,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,true,false,false,false,false,true,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,false,false,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,false,false,false,false,true,false,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,false,false,true,false,false,false,false,true,true,false,false,true,false,false,false,true,true,true,true,false,true,true,false,false,false,false,false,false,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,false,false,false,true,false,false,true,true,true,true,true,true,false,false,false,false,true,true,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,false,true,false,true,true,false,false,true,false,false,true,true,true,false,true,true,false,false,true,true,false,true,true,false,false,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,false,false,true,true,true,false,true,false,false,true,false,false,false,false,false,false,true,true,true,true,false,false,false,true,false,false,false,false,true,false,false,false,true,true,true,false,true,true,false,true,true,true,false,true,true,false,false,false,false,true,true,true,true,false,true,true,false,true,true,true,false,false,true,false,false,false,false,true,true,false,false,false,false,false,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,false,true,false,false,true,true,true,false,true,true,false,false,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,false,false,true,true,false,false,false,false,true,false,false,false,true,false,false,false,false,true,false,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,false,true,false,false,true,true,false,true,false,false,false,true,true,true,true,true,true,false,false,true,false,true,false,false,true,false,false,true,false,true,true,true,false,false,true,false,false,true,false,false,true,false,true,false,false,false,true,true,true,false,false,true,true,false,true,false,true,false,true,false,false,false,true,true,true,true,true,false,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,false,true,false,false,true,true,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,false,false,true,false,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,false,false,false,true,true,false,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,false,false,true,true,false,false,false,true,false,false,true,true,false,false,true,false,true,false,true,true,false,true,true,true,true,false,true,false,false,true,true,true,true,true,true,false,false,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,false,false,true,true,true,false,false,false,false,false,true,false,false,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,false,false,true,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,true,false,false,true,true,false,false,false,false,false,true,true,true,false,true,true,false,false,false,false,false,false,false,true,false,false,false,true,true,false,true,false,false,true,true,false,false,true,true,false,false,false,true,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,false,true,true,false,false,false,true,true,true,false,true,true,false,true,true,false,false,true,false,true,false,true,false,true,false,true,false,true,true,true,true,true,true,false,false,true,false,false,true,false,true,true,true,true,false,false,true,false,true,true,true,false,false,false,true,true,true,false,true,false,false,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,false,false,false,false,false,true,false,true,true,true,false,false,false,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,true,false,true,false,false,false,false,false,false,false,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,true,true,true,true,false,false,true,false,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,false,true,false,true,true,true,true,false,true,false,true,true,false,true,true,false,false,true,true,false,true,true,true,false,false,false,false,true,true,true,false,false,true,true,false,true,false,true,false,false,false,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,true,false,false,true,true,false,true,true,true,false,true,false,true,true,true,false,true,false,true,false,false,false,false,true,true,false,true,false,false,false,false,false,false,false,true,true,false,true,true,true,true,true,false,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,true,true,false,true,true,false,false,false,false,true,false,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,false,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,true,true,false,false,false,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,false,false,true,false,false,false,false,true,false,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,false,true,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,false,false,false,false,true,false,false,false,false,true,true,false,false,true,false,false,false,false,false,false,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,false,true,false,false,false,true,false,false,false,false,false,false,false,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,true,false,false,false,false,true,false,true,false,false,false,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,false,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,false,false,true,true,true,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,false,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,false,true,true,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,true,false,false,false,false,true,true,false,false,true,false,false,true,false,true,true,true,false,true,true,false,false,true,true,false,false,false,false,false,true,false,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,false,false,false,false,true,false,false,false,false,true,true,false,true,false,true,true,false,true,false,true,false,false,true,true,false,false,true,true,false,true,false,false,false,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,false,false,false,true,false,true,true,false,false,false,true,true,true,false,false,false,false,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,false,true,false,true,false,true,true,true,true,false,false,false,false,false,true,false,true,true,true,true,true,false,false,false,true,false,true,true,false,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,false,true,true,false,false,false,false,true,true,true,true,true,false,true,false,false,true,false,false,false,true,false,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,false,false,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,false,false,true,false,true,true,false,true,true,false,false,true,false,false,true,true,false,true,true,true,false,false,true,true,false,true,false,false,false,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,true,true,true,true,true,true,false,false,false,true,true,false,true,false,false,true,true,true,true,true,false,true,false,true,true,false,false,false,false,false,true,false,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,true,true,false,true,false,true,false,true,false,true,false,false,true,false,false,false,true,true,true,true,true,false,false,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,false,false,false,false,false,true,true,false,false,true,false,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,false,false,true,true,false,true,true,true,false,false,true,true,true,true,false,false,true,false,false,true,true,true,true,false,false,true,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,false,true,true,true,true,true,false,true,true,false,true,true,false,true,false,false,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,false,true,false,true,false,false,true,false,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,false,true,false,true,true,false,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,false,false,false,true,false,true,false,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,false,false,true,false,false,true,true,false,false,true,true,false,false,true,true,true,false,false,true,false,true,false,true,true,false,false,true,false,false,true,false,true,true,false,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,true,true,false,true,false,false,true,false,true,false,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,true,true,false,true,false,false,false,false,true,true,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,true,true,false,false,true,true,false,true,false,false,false,false,true,true,false,false,true,true,false,false,true,false,true,true,false,false,true,false,true,true,false,false,false,true,true,false,false,false,false,false,false,false,true,false,true,true,true,false,false,false,true,true,false,true,true,true,false,false,true,true,false,false,false,false,false,false,false,true,false,false,false,false,true,true,false,true,true,true,true,false,true,true,false,false,false,false,true,true,false,true,true,false,true,true,true,true,false,true,false,true,true,false,false,true,false,true,true,true,false,true,false,false,true,false,false,false,true,false,true,false,false,true,true,false,true,false,true,true,false,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,false,false,true,false,false,false,true,false,false,true,false,false,true,false,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,false,false,true,true,false,true,false,false,false,true,true,true,false,false,false,false,false,true,true,false,false,true,true,true,false,false,false,false,false,true,true,false,true,false,true,true,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,false,true,false,true,true,false,true,true,false,false,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,false,false,true,false,false,true,false,true,true,false,true,true,false,true,true,true,true,false,false,true,true,false,true,true,false,false,true,true,false,true,false,false,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,true,false,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,false,true,false,false,true,true,false,false,true,true,false,true,true,false,true,false,true,false,false,true,false,true,true,false,true,false,true,true,false,true,true,true,true,false,false,false,true,true,true,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,true,true,true,false,true,false,false,false,false,true,false,false,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,true,false,true,true,false,true,true,true,true,false,false,false,false,false,false,false,false,true,false,false,false,true,false,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,false,true,true,true,true,false,true,false,true,false,true,true,false,false,false,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,false,true,false,false,false,true,true,true,false,true,false,false,false,true,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,false,true,false,false,true,false,true,true,true,false,true,true,true,true,false,false,true,true,false,false,false,true,true,false,true,false,false,false,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,true,true,true,false,true,false,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,true,true,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,false,false,false,false,false,false,false,false,true,false,true,true,false,false,true,false,true,false,false,false,false,false,true,false,false,true,true,true,false,true,true,false,true,true,false,false,true,true,true,false,true,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,true,true,true,false,true,true,false,true,true,true,false,true,true,false,false,false,true,false,true,false,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,true,false,false,false,true,true,false,true,false,false,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,false,false,true,true,true,false,true,false,true,false,false,false,false,true,true,true,false,false,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,true,false,false,true,false,false,true,false,false,false,false,true,false,false,false,true,false,false,true,false,true,true,false,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,false,false,true,false,false,true,false,false,true,true,false,true,false,true,false,false,false,false,true,true,false,true,true,false,true,true,true,true,true,false,false,false,false,true,true,false,true,false,true,false,false,false,false,false,true,false,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,true,false,true,false,true,false,false,true,false,true,true,true,false,true,true,false,false,true,true,false,true,false,false,false,false,false,true,false,true,true,false,false,true,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,false,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,false,true,false,false,true,false,true,false,false,false,false,true,true,true,false,false,true,false,true,false,true,true,true,false,false,false,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,false,false,false,false,false,false,true,false,false,false,true,true,true,true,true,true,false,false,true,false,false,true,false,true,false,true,true,true,false,false,false,false,true,false,false,false,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,true,false,false,true,false,true,false,false,true,true,true,false,false,false,true,true,false,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,true,false,false,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,false,false,true,false,false,false,false,false,false,true,false,false,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,false,true,true,false,false,true,true,false,false,false,true,true,false,false,true,true,true,true,false,true,false,false,false,false,false,true,true,false,true,true,false,true,false,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,false,false,false,false,true,false,true,true,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,false,false,true,false,true,false,true,false,false,true,false,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,false,false,false,false,false,true,true,false,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,true,true,false,false,true,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,true,false,true,false,false,false,true,false,false,true,true,true,true,true,false,true,false,true,false,false,false,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,false,false,true,false,false,false,true,false,false,true,false,true,true,true,false,false,false,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,true,false,false,false,true,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,true,true,true,true,false,false,true,false,true,false,false,false,true,false,true,false,false,true,false,false,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,false,false,true,true,true,false,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,false,true,false,true,true,true,true,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,false,false,false,true,true,true,false,true,false,true,true,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,true,true,true,false,false,false,true,true,false,false,false,false,true,false,true,true,false,false,false,true,false,false,false,false,true,true,true,false,false,true,true,false,false,true,false,true,false,false,false,true,true,false,true,false,false,true,false,false,true,true,true,true,true,false,true,false,false,true,true,false,false,true,true,true,true,false,false,true,false,true,true,true,false,true,false,false,true,true,true,false,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,false,true,false,false,false,false,true,false,false,false,false,false,true,true,true,true,false,true,false,false,true,true,false,true,false,false,true,false,true,false,true,false,false,false,true,true,false,true,true,false,true,false,false,false,false,false,true,true,true,false,false,false,true,true,false,false,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,false,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,false,false,true,true,false,true,false,false,true,true,true,true,false,false,false,false,true,true,true,false,true,true,false,true,true,true,false,false,true,false,true,true,false,true,true,false,true,false,false,true,true,true,true,false,false,false,false,false,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,true,false,true,true,false,true,false,true,true,false,true,true,true,false,true,false,true,true,false,true,false,false,true,false,true,false,true,true,true,true,false,false,true,true,true,false,true,true,false,false,false,true,true,false,false,false,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,false,true,false,true,true,true,true,true,false,true,false,false,false,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,false,false,true,false,true,true,false,true,true,true,true,true,false,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,true,true,true,true,true,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,false,true,false,false,true,true,false,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,true,false,false,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,false,false,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,false,false,true,false,false,false,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,false,false,true,false,false,false,true,true,true,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,false,false,false,false,false,false,false,true,false,true,false,false,true,false,true,true,false,true,false,false,true,false,true,false,true,true,false,false,true,false,false,true,false,false,true,true,false,true,false,true,true,true,true,false,false,true,true,false,false,true,true,false,true,true,true,false,true,true,false,false,true,false,true,false,true,false,true,true,false,true,true,false,false,false,true,true,false,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,true,true,true,false,false,true,false,true,true,false,false,true,true,false,false,true,true,true,false,false,false,true,false,false,true,true,false,true,false,true,false,true,false,true,true,false,true,false,true,false,true,false,true,false,true,false,true,true,false,true,false,true,false,true,false,true,false,false,true,false,false,false,true,true,false,false,false,true,false,false,true,false,false,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,false,true,false,true,true,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,false,true,false,true,false,false,false,true,false,true,true,false,false,false,false,false,true,false,false,true,true,false,false,true,true,false,true,true,false,false,false,false,false,true,true,false,false,false,true,false,true,true,false,true,false,true,false,true,true,true,false,true,false,false,true,false,true,false,true,false,true,true,true,true,true,false,false,true,false,true,false,true,true,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,true,false,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,true,true,true,false,true,true,false,true,true,true,false,false,true,false,false,true,false,true,true,false,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,true,false,true,false,true,true,false,true,true,true,true,true,false,false,false,true,true,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,false,true,false,false,true,true,false,true,true,false,true,true,false,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,false,false,false,true,true,false,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,false,false,false,true,false,false,true,true,false,true,false,true,true,true,true,true,false,false,false,false,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,false,false,true,true,false,false,true,false,false,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,false,true,false,false,false,false,true,true,false,false,false,true,true,true,true,false,false,false,false,false,true,false,true,false,true,true,true,false,false,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,false,false,true,true,false,true,false,true,false,false,true,false,false,true,true,false,true,false,false,false,true,true,false,true,false,true,true,true,false,false,true,false,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,true,false,false,true,false,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,false,false,false,true,true,false,false,false,true,true,false,false,false,false,true,false,true,false,true,false,true,false,true,true,true,false,true,false,true,false,false,false,true,false,false,false,false,true,true,false,false,true,true,true,true,true,false,false,false,false,false,false,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,false,true,false,true,true,true,true,false,false,false,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,false,true,true,true,false,true,false,false,false,true,false,false,false,true,false,true,true,true,false,true,false,true,false,false,true,true,true,false,true,false,false,true,true,true,false,true,false,false,false,true,false,false,true,false,false,false,true,false,true,false,false,false,true,false,true,true,true,false,true,true,true,true,true,true,false,false,false,true,false,false,true,false,false,true,false,false,true,false,false,false,true,false,true,false,true,false,true,true,true,false,true,false,true,false,true,true,true,false,true,true,true,false,true,true,false,true,false,true,false,false,false,false,false,true,true,true,true,false,true,false,false,false,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,false,false,false,true,false,false,true,false,true,true,true,false,false,true,true,false,false,false,false,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,false,true,true,true,false,true,false,false,true,false,true,false,true,false,false,false,false,true,true,false,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,false,false,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,false,false,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,true,false,false,false,true,false,true,true,false,false,false,false,true,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,false,false,true,true,false,true,false,true,true,false,true,true,false,true,false,false,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,false,true,false,false,true,true,true,false,true,true,true,false,false,false,false,false,true,false,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,false,false,true,false,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,true,true,true,false,true,true,false,true,false,false,false,true,true,false,true,true,true,false,false,true,false,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,false,false,false,false,false,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,false,false,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,false,true,true,false,false,true,false,false,true,false,true,false,false,false,false,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,true,false,false,true,false,true,true,false,false,false,true,false,false,false,true,false,true,false,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,true,false,false,false,true,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,false,false,true,true,true,true,false,false,true,false,false,true,true,false,false,true,true,false,true,false,true,true,false,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,false,false,true,false,true,true,false,false,false,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,false,false,false,true,false,true,false,true,true,true,false,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,false,false,false,false,true,true,true,true,false,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,false,true,true,true,false,true,true,false,true,true,true,true,false,false,true,true,true,false,false,true,false,true,false,false,true,false,true,true,false,false,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,false,true,true,true,true,false,false,true,false,true,true,true,false,true,true,false,true,false,true,false,false,true,false,true,false,true,false,false,false,false,true,false,true,true,false,true,false,true,true,true,true,true,true,true,false,true,false,false,true,false,true,false,true,false,true,true,false,false,true,true,false,false,true,true,false,true,true,false,true,false,true,false,true,false,false,true,true,false,true,true,true,true,false,true,false,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,false,true,true,true,false,false,true,true,false,true,false,false,true,true,false,true,true,true,true,false,false,true,true,true,false,false,false,true,true,true,true,false,false,true,true,true,true,false,true,false,false,false,true,false,false,true,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,false,false,true,false,false,true,true,false,false,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,false,true,false,false,false,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,true,false,false,true,true,true,true,true,false,false,true,true,false,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,false,true,true,false,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,true,true,false,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,false,false,true,true,true,true,false,false,false,true,true,false,false,false,false,true,true,false,false,true,false,false,true,true,true,true,true,false,false,false,true,true,false,true,false,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,false,true,true,true,false,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,false,true,true,false,false,true,false,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,false,true,true,true,false,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,false,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,false,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,false,false,false,true,false,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,true,false,false,true,false,true,false,false,false,true,false,true,true,false,true,true,false,false,true,true,false,true,false,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,true,false,false,true,false,false,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,false,false,false,false,false,true,false,false,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,false,true,false,false,true,false,true,true,false,false,true,true,false,true,true,false,false,false,false,false,true,true,true,true,true,false,false,true,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,false,true,true,false,false,true,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,true,false,false,false,false,false,true,false,true,false,false,true,true,false,true,false,true,false,false,true,true,true,false,true,true,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,false,false,true,false,true,true,true,false,false,true,false,true,false,true,true,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,false,false,true,false,true,true,false,false,true,true,false,false,true,false,false,false,true,false,true,true,false,true,false,false,false,true,false,false,false,false,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,false,false,true,true,false,false,true,false,false,false,false,true,false,false,true,false,true,false,false,false,false,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,false,true,true,false,false,true,false,true,false,false,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,true,false,false,false,true,true,false,true,true,true,true,false,false,false,false,true,false,true,false,true,true,false,false,true,true,false,true,false,true,false,true,false,false,false,true,true,true,false,false,false,false,false,true,true,true,false,false,true,true,true,true,false,false,false,true,true,false,false,false,false,false,false,false,true,true,false,true,true,false,true,false,true,true,true,false,true,false,false,false,true,false,false,true,true,false,true,false,true,true,false,true,true,false,true,false,false,false,false,false,false,false,false,true,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,true,false,false,true,true,false,true,false,true,false,true,false,false,false,true,true,true,true,false,true,false,true,true,false,true,true,true,true,false,true,false,true,true,false,true,false,true,false,false,true,false,true,false,false,false,true,true,true,false,false,false,true,false,false,true,false,false,true,true,false,false,false,false,false,false,true,true,true,false,false,false,true,false,false,true,false,true,false,false,false,true,true,true,false,true,true,false,false,false,true,true,false,true,true,true,true,false,false,false,true,true,false,false,true,false,false,false,false,false,false,true,true,true,true,false,true,true,false,true,true,false,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,false,true,false,true,false,false,true,false,true,true,false,true,false,true,true,false,false,true,false,true,false,false,false,false,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,false,false,true,true,false,true,true,false,false,false,true,false,true,true,true,false,true,true,false,false,true,true,false,false,true,true,true,true,true,false,true,false,true,false,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,true,false,false,false,true,false,false,true,true,false,true,true,true,false,true,true,true,false,false,false,false,true,false,true,false,false,true,true,false,false,false,false,false,false,true,true,true,false,true,false,true,false,true,true,false,false,false,false,false,false,true,false,false,true,false,true,true,true,false,true,true,true,true,false,false,false,true,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,true,false,false,false,false,true,false,false,false,false,true,true,false,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,true,false,false,true,false,true,false,true,false,true,true,true,true,false,true,false,true,false,false,false,true,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,true,false,true,true,false,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,false,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,true,false,true,false,true,false,true,false,true,false,true,false,false,false,true,false,true,true,true,false,true,false,false,true,true,false,false,false,false,false,true,true,true,false,true,true,true,false,false,true,true,false,false,false,true,false,false,false,true,true,true,true,true,false,true,false,false,true,false,true,false,true,true,true,false,false,false,true,false,false,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,true,false,false,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,false,true,true,true,true,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,false,false,true,false,false,false,false,false,false,true,false,false,false,false,true,true,false,false,true,true,false,true,true,false,false,true,false,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,false,true,true,true,false,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,false,true,false,false,false,true,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,false,false,false,true,true,true,false,true,true,false,true,true,false,true,true,false,true,true,false,false,true,false,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,false,true,false,false,false,false,false,true,true,false,true,true,false,false,true,true,true,false,true,false,true,false,false,true,false,false,true,true,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,false,true,false,false,false,true,false,true,false,true,true,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,false,false,false,false,false,true,true,true,true,false,false,true,true,false,false,false,true,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,false,false,true,false,false,false,true,true,false,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,false,false,true,true,true,false,true,false,false,true,true,false,true,true,true,true,false,false,true,false,true,true,true,false,true,false,false,false,false,false,false,false,false,true,false,false,true,true,true,true,false,true,false,true,false,false,true,true,false,false,true,false,true,true,false,false,false,true,true,true,false,false,true,true,true,false,true,false,false,true,false,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,true,false,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,false,false,false,true,false,true,false,false,true,true,true,true,false,false,true,true,false,true,true,true,false,true,false,false,false,true,true,true,false,true,true,false,false,true,false,false,true,true,true,false,true,false,false,false,false,true,false,true,false,true,true,false,true,true,false,false,true,true,false,true,true,true,true,false,false,false,false,true,true,true,true,false,false,true,true,false,false,true,true,true,false,false,true,false,false,true,false,true,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,false,true,true,false,true,true,true,false,false,true,false,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,true,false,true,true,false,false,true,true,false,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,false,true,false,true,false,false,true,true,true,true,false,false,true,true,true,false,true,false,false,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,false,true,false,true,false,true,false,true,false,true,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,true,false,false,true,false,false,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,true,false,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,false,false,true,false,true,false,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,false,true,false,true,true,false,true,false,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,false,true,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,false,true,false,true,false,false,true,true,true,true,false,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,true,false,true,false,false,false,false,true,false,false,true,true,true,true,false,false,true,true,true,true,true,true,false,false,false,true,false,true,true,true,false,false,false,true,true,false,false,true,false,true,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,true,true,false,false,true,false,false,true,false,true,false,false,false,true,true,true,true,false,false,false,false,true,true,true,false,false,true,false,false,false,false,false,false,true,false,true,true,true,false,true,false,true,true,true,true,true,false,true,true,false,false,false,true,true,false,true,true,true,true,true,false,false,false,false,true,false,true,false,false,true,false,false,false,false,true,true,false,true,true,false,false,true,false,true,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,false,true,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,false,true,false,false,false,false,false,false,false,true,true,false,false,true,false,true,false,false,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true,true,false,false,false,false,true,true,true,false,true,true,true,false,true,false,false,true,false,false,true,false,false,false,false,false,true,false,false,false,true,true,false,true,false,true,false,false,true,true,true,false,false,false,true,true,false,false,true,true,false,false,false,false,true,true,false,true,false,false,true,true,false,true,false,true,true,false,false,false,false,true,false,false,false,false,false,true,true,false,false,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,false,true,true,false,true,false,false,false,false,true,true,true,false,true,false,true,false,true,false,false,true,false,false,false,false,true,true,false,false,true,false,false,true,true,false,true,false,false,true,true,false,false,true,true,false,true,true,false,true,true,true,false,true,false,true,false,true,true,false,false,false,true,true,true,false,false,true,false,false,true,false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,true,false,true,true,true,false,true,true,false,true,true,false,true,false,true,true,false,false,true,false,true,false,false,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,false,false,false,true,true,true,false,true,true,true,true,true,true,false,true,false,false,true,false,true,false,false,false,false,true,true,false,true,false,false,false,true,true,true,false,false,true,false,false,false,false,true,true,true,false,true,false,true,true,false,false,false,false,true,false,true,false,false,false,true,true,true,true,true,false,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,false,true,false,true,false,false,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,false,false,true,false,false,false,false,true,false,false,false,false,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,false,true,true,false,false,false,false,true,true,true,false,true,true,true,true,false,true,false,false,false,true,false,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,false,true,true,true,false,false,true,true,true,false,false,false,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,false,false,true,false,false,true,true,false,false,false,false,false,false,false,false,true,false,false,true,false,true,true,true,false,false,false,false,true,false,false,true,true,false,false,false,true,false,false,false,true,false,false,true,true,false,false,false,false,false,false,true,false,true,true,true,false,false,false,true,false,false,false,false,true,false,true,false,false,false,false,false,false,true,true,true,true,false,true,true,true,true,false,true,false,false,true,false,false,false,true,false,true,true,true,false,true,true,true,false,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,true,true,false,true,true,false,false,true,false,false,true,false,false,true,false,true,true,true,false,false,true,false,false,false,true,false,false,true,false,true,false,false,true,true,false,true,false,true,false,false,true,false,true,false,true,false,false,true,false,false,false,true,true,false,true,true,true,false,true,true,false,false,true,false,false,false,true,false,false,true,false,false,true,true,true,true,true,false,false,true,false,true,true,false,false,false,false,false,true,true,true,true,false,true,true,true,false,true,false,true,true,true,false,false,false,false,true,false,true,false,false,true,false,true,true,false,false,false,true,true,true,false,false,false,true,false,false,true,false,true,true,false,false,false,false,false,true,true,true,true,true,false,true,false,false,true,false,true,true,false,true,true,false,true,false,true,true,false,true,false,false,false,true,false,true,true,true,true,true,true,true,false,true,true,false,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,false,true,false,true,false,true,true,true,true,true,false,true,true,false,false,true,true,true,false,true,true,false,false,true,false,false,true,true,true,true,true,false,false,true,false,false,false,false,false,true,false,false,false,false,false,true,false,false,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,false,false,true,true,true,true,false,true,true,false,false,false,false,false,false,true,false,false,false,true,false,false,true,false,true,false,true,false,false,true,true,true,false,true,false,true,true,false,true,true,false,false,true,true,true,true,true,false,true,true,false,false,false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,false,false,false,true,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,false,true,false,false,true,false,true,false,false,false,false,false,true,true,true,false,true,false,true,true,true,false,true,true,true,false,false,true,false,false,true,true,false,false,false,false,true,true,true,false,false,false,true,false,true,true,false,false,true,true,true,true,false,false,true,true,false,true,true,false,true,false,true,true,true,true,false,true,true,false,false,false,false,false,false,false,true,false,false,true,false,true,false,true,true,false,true,true,true,false,true,true,false,false,true,false,false,false,true,false,false,false,true,false,true,false,true,false,false,true,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,false,true,false,false,true,false,false,false,false,false,false,true,true,true,true,false,false,true,false,true,false,true,true,false,false,true,false,true,true,false,true,true,true,false,true,false,true,true,true,false,true,true,true,true,true,false,false,true,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,false,false,false,true,true,false,true,false,false,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,false,true,true,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,false,false,false,true,false,true,true,true,true,false,false,true,true,false,false,false,true,false,false,false,true,true,true,false,false,true,true,true,false,true,false,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,false,false,true,true,true,false,true,true,true,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,false,true,true,false,false,false,true,true,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,false,true,true,true,false,true,true,false,false,false,true,false,false,true,true,true,true,true,false,true,false,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,false,false,false,false,true,false,true,false,true,true,true,true,false,true,false,true,false,true,true,true,true,true,true,false,false,true,true,true,true,true,false,true,true,true,false,true,true,false,true,false,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,false,true,true,true,true,true,true,true,false,true,false,false,true,false,false,false,true,false,true,true,false,false,false,true,false,true,true,false,true,true,false,true,true,true,false,false,true,true,false,false,false,true,true,false,false,true,true,true,true,false,false,true,false,false,true,false,true,false,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,false,false,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,false,true,false,true,true,true,true,true,true,true,false,false,true,false,false,true,true,true,true,true,false,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,false,true,true,false,false,true,false,false,true,false,false,true,false,true,true,true,false,false,false,true,true,false,true,true,false,true,true,true,true,false,false,true,true,true,true,false,false,true,true,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,true,true,true,false,false,false,true,false,false,true,false,false,true,false,false,true,false,true,true,false,false,true,false,false,false,true,false,false,true,false,true,true,false,false,false,true,true,true,false,false,true,false,false,false,true,false,false,false,true,false,false,false,false,false,false,true,true,true,false,true,true,true,true,false,false,false,true,false,false,true,true,true,false,false,false,false,true,false,true,false,false,false,true,true,false,true,false,true,true,false,true,false,false,true,true,false,false,true,false,false,false,false,false,false,false,false,true,false,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,false,false,false,true,true,false,true,false,false,false,false,false,true,true,false,false,true,true,true,true,true,false,false,false,false,true,false,false,false,true,true,true,true,false,false,true,true,false,false,false,true,false,false,true,false,true,true,true,true,true,true,true,false,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,true,true,true}\n"
     ]
    }
   ],
   "source": [
    "print(to_string(training_combined['pitch_type'].fillna('false')))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
