{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "6011010d", "metadata": {}, "outputs": [], "source": [ "from datetime import datetime\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import random\n", "import re\n", "\n", "import plotly.express as px\n", "import plotly.graph_objects as go\n", "from plotly.subplots import make_subplots\n", "\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import accuracy_score, balanced_accuracy_score, confusion_matrix, roc_auc_score\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "import torch\n", "from torch.autograd import Variable\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence\n", "import torch.optim as optim\n", "from torch.utils.data import Dataset, DataLoader\n", "from torch.utils.data import RandomSampler, SequentialSampler\n", "import torchtext.vocab as vocab\n", "\n", "from transformers import get_linear_schedule_with_warmup\n", "\n", "import gensim\n", "\n", "# internal imports\n", "import evaluation.evaluate as val\n", "from modelling import bert, util\n", "import visualization as vis" ] }, { "cell_type": "code", "execution_count": 2, "id": "42ff9ec0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seed_val = 42\n", "\n", "random.seed(seed_val)\n", "np.random.seed(seed_val)\n", "torch.manual_seed(seed_val)" ] }, { "cell_type": "code", "execution_count": 3, "id": "12507e59", "metadata": {}, "outputs": [], "source": [ "# chart styling parameters\n", "is_custom_style = False\n", "style_kwargs = vis.get_style_kwargs(is_custom_style=is_custom_style)" ] }, { "cell_type": "markdown", "id": "d48d17ad", "metadata": {}, "source": [ "Download pretrained model" ] }, { "cell_type": "code", "execution_count": 4, "id": "cf2710ba", "metadata": {}, "outputs": [], "source": [ "glove = vocab.GloVe(name='6B', dim=300)\n", "\n", "w2v_path = '/Users/mariakozlova/gensim-data/word2vec-google-news-300/word2vec-google-news-300'\n", "w2v_eng = gensim.models.KeyedVectors.load_word2vec_format(w2v_path, binary=True)" ] }, { "cell_type": "markdown", "id": "1bf9b1e7", "metadata": {}, "source": [ "## Get and explore data" ] }, { "cell_type": "code", "execution_count": 5, "id": "ea6553b6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows, cols: (50425, 2)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
categorydescription
0HouseholdPaper Plane Design Framed Wall Hanging Motivat...
1HouseholdSAF 'Floral' Framed Painting (Wood, 30 inch x ...
2HouseholdSAF 'UV Textured Modern Art Print Framed' Pain...
3HouseholdSAF Flower Print Framed Painting (Synthetic, 1...
4HouseholdIncredible Gifts India Wooden Happy Birthday U...
5HouseholdPitaara Box Romantic Venice Canvas Painting 6m...
6HouseholdPaper Plane Design Starry Night Vangoh Wall Ar...
7HouseholdPitaara Box Romantic Venice Canvas Painting 6m...
8HouseholdSAF 'Ganesh Modern Art Print' Painting (Synthe...
9HouseholdPaintings Villa UV Textured Modern Art Print F...
\n", "
" ], "text/plain": [ " category description\n", "0 Household Paper Plane Design Framed Wall Hanging Motivat...\n", "1 Household SAF 'Floral' Framed Painting (Wood, 30 inch x ...\n", "2 Household SAF 'UV Textured Modern Art Print Framed' Pain...\n", "3 Household SAF Flower Print Framed Painting (Synthetic, 1...\n", "4 Household Incredible Gifts India Wooden Happy Birthday U...\n", "5 Household Pitaara Box Romantic Venice Canvas Painting 6m...\n", "6 Household Paper Plane Design Starry Night Vangoh Wall Ar...\n", "7 Household Pitaara Box Romantic Venice Canvas Painting 6m...\n", "8 Household SAF 'Ganesh Modern Art Print' Painting (Synthe...\n", "9 Household Paintings Villa UV Textured Modern Art Print F..." ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# https://zenodo.org/records/3355823\n", "file_name = \"ecommerceDataset.csv\"\n", "data = pd.read_csv(file_name, header=None)\n", "data.columns = [\"category\", \"description\"]\n", "\n", "print(\"Rows, cols:\", data.shape)\n", "data.head(10)" ] }, { "cell_type": "markdown", "id": "e3fefad4", "metadata": {}, "source": [ "Category distribution" ] }, { "cell_type": "code", "execution_count": 6, "id": "23c84cca", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Household 19313\n", "Books 11820\n", "Electronics 10621\n", "Clothing & Accessories 8671\n", "Name: category, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[\"category\"].value_counts()" ] }, { "cell_type": "markdown", "id": "c27ac018", "metadata": {}, "source": [ "Description examples" ] }, { "cell_type": "code", "execution_count": 7, "id": "a8665344", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CATEGORY: Household\n", "DESCRIPTION:\n", "Riedel VINUM Cognac Glasses, Set of 2 Size:Set of 2  |  Style:Cognac 6416/71 Features: -Hennessy cognac glass.-Lead crystal.-Gift boxed.-Dishwasher safe. Dimensions: -7.25'' H. Collection: -Vinum collection.\n", "\n", "\n", "CATEGORY: Books\n", "DESCRIPTION:\n", "Illustrated Guide to Indian Accounting Standards (Ind AS) (5th Edition May 2018) As Amended by Companies (Indian Accounting Standards) (Amendment) Rules 2018****A Comprehensive commentary on Ind AS with more than 200 illustrations, charts and case studies, Detailed comparative analysis of Ind AS and AS, Comparison of Ind AS and AS with IFRS and US GAAP, Detailed Comparative analysis of Ind AS, AS and ICDS, Analysis of impact of Ind AS in various industry sectors, Convergence of Ind AS with IFRS,**** Also Incorporating: NEW IND AS 115 - REVENUE FROM CONTRACTS WITH CUSTOMERS WITH ILLUSTRATIONS\n", "\n", "\n", "CATEGORY: Clothing & Accessories\n", "DESCRIPTION:\n", "Pink Flamingo Bra Extender Grown out of your favourite and most comfortable bra or not fitting in any standard size bras? Pink Flamingo Bra Extenders add anywhere from one to four inches to the back of your bra to fit you in perfectly. Bra Back Extenders are perfect for women who fall in-between bra sizes, have added calories or need temporary relief during pregnancy. The extenders easily hook on to the back of a bra, adding length as needed. They also have soft brushed backs that will avoid itch and irritation. Pink Flamingo bra back extenders are available in multiple colors and sizes, so they will fit your favorite bra! Bra back extenders are washable and reusable\n", "\n", "\n", "CATEGORY: Electronics\n", "DESCRIPTION:\n", "Tobo Smart Led Display Power Adapter Fast Charging Station Multiple USB Charger 40W 8A 8 Port Desktop Charger Hub with 1 Type C Port (8 Port with Socket) Size:8 port with socket 8 Port Desktop Charger Hub Fast Multiple USB Charging Station The charging station has 6 USB charging ports, 1 QC USB 3.0 charging port and 1 Type-C charging port, which is very convenient ! LED screen to display the charging status of every USB ports and Type-C ports simply and intuitively. Affordable and effective one that lets you juice all of your USB powered devices at the same time Compatible with all 5V USB powered devices like iPhone 7/7 Plus, 6S/6S Plus, 6/6 Plus, 5/5S/SE, HTC, Samsung, iPad, MP3, MP4, external battery, Bluetooth speaker, headset, cameras, And Other USB Devices. Allows charging up to 8 devices simultaneously. Protect: Rubber anti-skidding feet keep the dock not slip around and prevent from scratching the product. Over-current, over voltage, overload, short circuit multiple protection. Specifications: Output: DC 5V 8A(Max) Input: AC 100-240V , 50-60Hz Output power: 40W Item Size: 5.39*2.95*2.05 inches What you get? 1* Multiple USB Charging Station 1* 1 Power Cable\n", "\n", "\n" ] } ], "source": [ "for category in data[\"category\"].unique():\n", " row_example = data[data[\"category\"] == category].sample(n=100).iloc[0]\n", " print(f\"CATEGORY: {row_example['category']}\\nDESCRIPTION:\\n{row_example['description']}\\n\\n\")" ] }, { "cell_type": "markdown", "id": "306d7fcc", "metadata": {}, "source": [ "Handling empty values" ] }, { "cell_type": "code", "execution_count": 8, "id": "6624f08d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 50425 entries, 0 to 50424\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 category 50425 non-null object\n", " 1 description 50424 non-null object\n", "dtypes: object(2)\n", "memory usage: 788.0+ KB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "code", "execution_count": 9, "id": "ccaac4bd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
categorydescription
39330Clothing & AccessoriesNaN
\n", "
" ], "text/plain": [ " category description\n", "39330 Clothing & Accessories NaN" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data[\"description\"].isna()]" ] }, { "cell_type": "code", "execution_count": 10, "id": "ae136b6e", "metadata": {}, "outputs": [], "source": [ "data.dropna(inplace=True)" ] }, { "cell_type": "markdown", "id": "243c568c", "metadata": {}, "source": [ "## Handle duplicates" ] }, { "cell_type": "code", "execution_count": 11, "id": "0e45eca1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Count of repeated messages (unique): 13979\n", "Total number: 36601 out of 50424\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
descriptionn_repeatsn_unique_categories
2# The Silky Beans 2 KG Premium Bean Bag Filler...41
3# The Silky Beans 500 Gram Premium A-Grade for...41
4#Horror41
7(CERTIFIED REFURBISHED) HP DeskJet 2131 All-in...21
8(CERTIFIED REFURBISHED) Logitech K230 Wireless...21
11(CERTIFIED REFURBISHED) Philips BT 106 Bluetoo...21
17.42x HD Super Wide Angle Panoramic Macro Fishe...21
180-Degree Electrical Socket Cover for Indian Pl...21
200-Degree Women's Ankle Length Premium Cotton M...21
211 12 4PCS Gold Metal Door Knocker Lock Doorpla...21
\n", "
" ], "text/plain": [ " description n_repeats \\\n", "2 # The Silky Beans 2 KG Premium Bean Bag Filler... 4 \n", "3 # The Silky Beans 500 Gram Premium A-Grade for... 4 \n", "4 #Horror 4 \n", "7 (CERTIFIED REFURBISHED) HP DeskJet 2131 All-in... 2 \n", "8 (CERTIFIED REFURBISHED) Logitech K230 Wireless... 2 \n", "11 (CERTIFIED REFURBISHED) Philips BT 106 Bluetoo... 2 \n", "17 .42x HD Super Wide Angle Panoramic Macro Fishe... 2 \n", "18 0-Degree Electrical Socket Cover for Indian Pl... 2 \n", "20 0-Degree Women's Ankle Length Premium Cotton M... 2 \n", "21 1 12 4PCS Gold Metal Door Knocker Lock Doorpla... 2 \n", "\n", " n_unique_categories \n", "2 1 \n", "3 1 \n", "4 1 \n", "7 1 \n", "8 1 \n", "11 1 \n", "17 1 \n", "18 1 \n", "20 1 \n", "21 1 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "repeated_messages = data \\\n", " .groupby(\"description\", as_index=False) \\\n", " .agg(\n", " n_repeats=(\"category\", \"count\"),\n", " n_unique_categories=(\"category\", lambda x: len(np.unique(x)))\n", " )\n", "\n", "assert all(repeated_messages[\"n_unique_categories\"] == 1), \\\n", " f\"Repeated descriptions with non-unique categories: \" + \\\n", " f\"{repeated_messages[repeated_messages['n_unique_categories']] > 1}\"\n", "\n", "repeated_messages = repeated_messages[repeated_messages[\"n_repeats\"] > 1]\n", "\n", "print(f\"Count of repeated messages (unique): {repeated_messages.shape[0]}\")\n", "print(f\"Total number: {repeated_messages['n_repeats'].sum()} out of {data.shape[0]}\")\n", "\n", "repeated_messages.head(10)" ] }, { "cell_type": "code", "execution_count": 12, "id": "f29701fc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "New dataset size: (27802, 2)\n", "Household 10564\n", "Books 6256\n", "Clothing & Accessories 5674\n", "Electronics 5308\n", "Name: category, dtype: int64\n" ] } ], "source": [ "data.drop_duplicates(inplace=True)\n", "print(f\"New dataset size: {data.shape}\")\n", "print(data[\"category\"].value_counts())" ] }, { "cell_type": "code", "execution_count": 13, "id": "4408290a", "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}
text=%{text}", "legendgroup": "", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "text": [ 10564, 6256, 5674, 5308 ], "textposition": "auto", "type": "bar", "x": [ "Household", "Books", "Clothing & Accessories", "Electronics" ], "xaxis": "x", "y": [ 10564, 6256, 5674, 5308 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "height": 300, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Categories Distribution" }, "width": 600, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "# Items" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "category_distribution = data[\"category\"].value_counts()\n", "\n", "fig = px.bar(\n", " x=category_distribution.index,\n", " y=category_distribution,\n", " text=category_distribution,\n", " **style_kwargs,\n", ")\n", "fig.update_layout(\n", " title=\"Categories Distribution\",\n", " width=600,\n", " height=300,\n", " xaxis_title=None,\n", " yaxis_title=\"# Items\",\n", ")\n", "\n", "if is_custom_style:\n", " vis.style_background(fig)\n", "\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "1bfffdd0", "metadata": {}, "source": [ "## Languages" ] }, { "cell_type": "code", "execution_count": 14, "id": "3aa069d8", "metadata": {}, "outputs": [], "source": [ "def get_ascii_score(description):\n", " total_sym_cnt = 0\n", " ascii_sym_cnt = 0\n", " \n", " for sym in description:\n", " total_sym_cnt += 1\n", " if sym.isascii():\n", " ascii_sym_cnt += 1\n", " return ascii_sym_cnt / total_sym_cnt" ] }, { "cell_type": "code", "execution_count": 15, "id": "90bb871e", "metadata": {}, "outputs": [], "source": [ "w2v_eng = gensim.models.KeyedVectors.load_word2vec_format(w2v_path, binary=True)\n", "\n", "def get_valid_eng_score(description):\n", " description = re.sub(\"[^a-z \\t]+\", \" \", description.lower())\n", " total_word_cnt = 0\n", " eng_word_cnt = 0\n", " \n", " for word in description.split():\n", " total_word_cnt += 1\n", " if word.lower() in w2v_eng:\n", " eng_word_cnt += 1\n", " return eng_word_cnt / total_word_cnt" ] }, { "cell_type": "code", "execution_count": 16, "id": "c80f9ceb", "metadata": {}, "outputs": [], "source": [ "data[\"ascii_score\"] = data[\"description\"].apply(get_ascii_score)" ] }, { "cell_type": "code", "execution_count": 17, "id": "27962733", "metadata": {}, "outputs": [], "source": [ "data[\"eng_score\"] = data[\"description\"].apply(get_valid_eng_score)" ] }, { "cell_type": "code", "execution_count": 18, "id": "a4d22b9f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.02327170707143371" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data[\"ascii_score\"] < 0.99].shape[0] / data.shape[0]" ] }, { "cell_type": "code", "execution_count": 19, "id": "8c53c548", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.015610387741889073" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data[\"eng_score\"] < 0.7].shape[0] / data.shape[0]" ] }, { "cell_type": "code", "execution_count": 20, "id": "227bbc6c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.038306596647723186" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[\n", " (data[\"ascii_score\"] < 0.99)\n", " | (data[\"eng_score\"] < 0.7)\n", "].shape[0] / data.shape[0]" ] }, { "cell_type": "code", "execution_count": 21, "id": "e35f4b18", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
categorydescriptionascii_scoreeng_score
27310BooksMartbaan About the Author तहज़ीब के शहर लखनऊ मे...0.2199790.833333
23546BooksAughad / औघड़ About the Author साहित्य अकादमी ...0.2282790.750000
22135Booksयू जी सी – नेट जूनियर रिसर्च फैलोशिप एवं सहायक...0.2535790.000000
22153Booksएन टी ए-, यू. जी. सी. (नेट /सेट/जे आर एफ) साम...0.2569230.941176
26625BooksReal Estate Evam Estate Planning रियल एस्टेट ए...0.2582910.846154
\n", "
" ], "text/plain": [ " category description \\\n", "27310 Books Martbaan About the Author तहज़ीब के शहर लखनऊ मे... \n", "23546 Books Aughad / औघड़ About the Author साहित्य अकादमी ... \n", "22135 Books यू जी सी – नेट जूनियर रिसर्च फैलोशिप एवं सहायक... \n", "22153 Books एन टी ए-, यू. जी. सी. (नेट /सेट/जे आर एफ) साम... \n", "26625 Books Real Estate Evam Estate Planning रियल एस्टेट ए... \n", "\n", " ascii_score eng_score \n", "27310 0.219979 0.833333 \n", "23546 0.228279 0.750000 \n", "22135 0.253579 0.000000 \n", "22153 0.256923 0.941176 \n", "26625 0.258291 0.846154 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.sort_values(\"ascii_score\").head(5)" ] }, { "cell_type": "code", "execution_count": 22, "id": "e350cad9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
categorydescriptionascii_scoreeng_score
22135Booksयू जी सी – नेट जूनियर रिसर्च फैलोशिप एवं सहायक...0.2535790.0
21821BooksNirali Brihanmumbai Mahanagarpalika Duyyam Abh...1.0000000.0
29743BooksDasham - Chhaya Bhautabignan Sikshak (2018)1.0000000.0
24873BooksGhumakkadi Jindabad भारत के विभिन्‍न घुमक्‍कड़ो...0.2852660.0
23255BooksSiddhartha1.0000000.0
\n", "
" ], "text/plain": [ " category description \\\n", "22135 Books यू जी सी – नेट जूनियर रिसर्च फैलोशिप एवं सहायक... \n", "21821 Books Nirali Brihanmumbai Mahanagarpalika Duyyam Abh... \n", "29743 Books Dasham - Chhaya Bhautabignan Sikshak (2018) \n", "24873 Books Ghumakkadi Jindabad भारत के विभिन्‍न घुमक्‍कड़ो... \n", "23255 Books Siddhartha \n", "\n", " ascii_score eng_score \n", "22135 0.253579 0.0 \n", "21821 1.000000 0.0 \n", "29743 1.000000 0.0 \n", "24873 0.285266 0.0 \n", "23255 1.000000 0.0 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.sort_values(\"eng_score\").head(5)" ] }, { "cell_type": "markdown", "id": "0dd01e5f", "metadata": {}, "source": [ "## Description lengths" ] }, { "cell_type": "code", "execution_count": 23, "id": "8fb9a641", "metadata": {}, "outputs": [], "source": [ "data[\"description_length\"] = data[\"description\"].apply(len)" ] }, { "cell_type": "code", "execution_count": 24, "id": "70603100", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "bingroup": "x", "hovertemplate": "description_length=%{x}
count=%{y}", "legendgroup": "", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "type": "histogram", "x": [ 1338, 346, 1316, 1091, 989, 1745, 1625, 1169, 616, 400, 609, 102, 1053, 343, 1781, 1739, 483, 1734, 1125, 357, 304, 1169, 438, 532, 55, 348, 329, 909, 391, 642, 412, 165, 879, 575, 536, 258, 323, 816, 559, 411, 923, 1712, 123, 57, 341, 58, 366, 760, 1286, 63, 1718, 427, 58, 786, 419, 80, 49, 522, 311, 93, 662, 294, 404, 805, 267, 287, 710, 213, 487, 350, 351, 489, 414, 977, 511, 152, 502, 10168, 475, 1245, 332, 359, 1473, 494, 331, 361, 490, 365, 367, 571, 305, 615, 105, 932, 86, 630, 299, 303, 298, 1414, 465, 651, 178, 623, 739, 627, 501, 340, 160, 435, 388, 110, 137, 375, 623, 191, 358, 551, 259, 193, 350, 1469, 245, 141, 393, 604, 596, 375, 652, 341, 447, 577, 322, 820, 473, 602, 334, 922, 653, 208, 233, 662, 106, 239, 1484, 3110, 370, 390, 32, 497, 765, 43, 893, 84, 324, 475, 63, 797, 527, 336, 444, 3226, 270, 249, 742, 42, 138, 174, 334, 254, 317, 62, 367, 552, 434, 851, 1373, 716, 1812, 54, 229, 312, 478, 1448, 782, 563, 1170, 419, 2155, 349, 269, 621, 968, 292, 1464, 526, 250, 799, 268, 515, 123, 353, 1454, 569, 794, 578, 489, 323, 1444, 342, 295, 40, 267, 715, 852, 216, 201, 158, 352, 630, 767, 635, 384, 781, 317, 577, 569, 960, 703, 710, 707, 702, 959, 699, 573, 710, 707, 999, 1098, 731, 1766, 347, 502, 564, 1271, 884, 997, 322, 471, 532, 581, 1095, 501, 993, 43, 1008, 980, 191, 560, 981, 216, 546, 255, 72, 478, 545, 313, 404, 450, 252, 407, 46, 350, 607, 258, 627, 513, 174, 1043, 570, 464, 1545, 512, 403, 832, 74, 649, 96, 226, 602, 672, 143, 231, 205, 802, 669, 219, 275, 972, 703, 476, 99, 1354, 1023, 605, 585, 576, 212, 116, 184, 739, 585, 1490, 912, 343, 956, 656, 924, 1434, 431, 1229, 1808, 578, 1847, 431, 616, 597, 51, 83, 107, 223, 227, 226, 220, 233, 1199, 1816, 855, 62, 788, 2833, 2167, 2858, 2822, 1818, 1782, 1274, 1725, 895, 1275, 206, 547, 675, 1056, 510, 894, 648, 889, 1087, 239, 134, 132, 141, 976, 1105, 364, 642, 550, 189, 600, 213, 637, 557, 436, 824, 78, 2003, 653, 1176, 832, 441, 2051, 1349, 509, 140, 399, 424, 381, 946, 416, 742, 691, 165, 818, 631, 752, 436, 872, 569, 847, 980, 1011, 597, 770, 717, 293, 520, 455, 467, 1103, 599, 743, 523, 91, 463, 292, 1981, 1005, 1933, 1878, 1350, 1972, 1960, 1976, 1954, 614, 1940, 1435, 1089, 746, 1958, 1933, 105, 302, 237, 577, 404, 63, 590, 1847, 1549, 57, 1554, 95, 379, 1511, 810, 295, 1533, 861, 326, 1422, 593, 942, 240, 2068, 1569, 1460, 2045, 66, 548, 740, 180, 413, 414, 324, 431, 130, 675, 198, 1083, 515, 229, 1917, 161, 419, 1380, 607, 671, 404, 120, 376, 671, 185, 166, 291, 514, 375, 145, 559, 765, 616, 344, 1772, 825, 1666, 492, 57, 370, 1244, 1300, 953, 191, 335, 118, 1355, 1761, 76, 551, 385, 719, 307, 183, 186, 373, 531, 1454, 336, 427, 828, 911, 191, 244, 254, 120, 1147, 853, 238, 336, 684, 156, 350, 1063, 350, 370, 758, 623, 1243, 451, 1370, 429, 426, 363, 141, 294, 294, 121, 572, 800, 297, 362, 490, 1118, 2094, 1660, 83, 1823, 1106, 53, 333, 1138, 1097, 328, 446, 74, 1862, 389, 1365, 538, 2044, 604, 1154, 667, 847, 1161, 644, 478, 425, 1610, 407, 655, 26, 671, 654, 721, 708, 642, 118, 189, 598, 149, 1260, 1293, 1273, 431, 1233, 40, 1522, 1251, 610, 739, 400, 691, 369, 753, 566, 358, 207, 535, 642, 424, 445, 173, 351, 673, 486, 105, 333, 549, 442, 78, 105, 143, 393, 1175, 467, 353, 207, 485, 213, 358, 358, 357, 810, 771, 919, 832, 1745, 236, 446, 628, 922, 588, 1945, 641, 784, 33, 1780, 2010, 522, 242, 109, 1651, 426, 1355, 95, 730, 250, 762, 952, 1008, 466, 474, 703, 281, 799, 732, 87, 190, 118, 1920, 734, 103, 1907, 1083, 313, 147, 604, 142, 582, 70, 819, 178, 336, 423, 1663, 505, 1297, 663, 340, 332, 180, 1922, 461, 913, 984, 1444, 330, 1010, 295, 373, 1603, 807, 426, 570, 893, 847, 241, 804, 975, 456, 675, 605, 831, 1457, 593, 785, 475, 702, 1523, 490, 451, 1042, 570, 619, 483, 534, 780, 319, 452, 833, 1500, 1038, 307, 804, 464, 1042, 483, 483, 1495, 483, 467, 482, 930, 833, 111, 1038, 466, 411, 483, 1212, 341, 644, 136, 1737, 657, 573, 1922, 638, 127, 553, 554, 712, 1168, 1040, 136, 600, 624, 653, 687, 1567, 1927, 632, 1932, 908, 113, 1930, 1752, 788, 1176, 636, 845, 1180, 326, 709, 188, 722, 104, 114, 225, 102, 326, 381, 442, 326, 660, 794, 90, 1530, 916, 366, 784, 849, 749, 917, 771, 806, 299, 777, 749, 762, 286, 1279, 517, 416, 749, 275, 136, 778, 98, 301, 864, 804, 758, 391, 1013, 689, 738, 624, 656, 421, 761, 507, 741, 627, 1186, 235, 850, 726, 368, 127, 1088, 377, 395, 857, 761, 384, 886, 672, 1028, 367, 312, 891, 376, 615, 278, 495, 1341, 193, 1499, 339, 184, 499, 89, 533, 521, 525, 527, 545, 541, 485, 570, 551, 528, 536, 314, 524, 183, 721, 1580, 27, 412, 245, 441, 875, 49, 959, 732, 955, 262, 89, 644, 170, 1074, 141, 467, 234, 179, 152, 188, 161, 334, 109, 218, 512, 725, 261, 516, 294, 29, 302, 426, 1288, 1956, 643, 2141, 2017, 982, 986, 1396, 2018, 977, 422, 798, 2027, 2018, 1245, 764, 1848, 1840, 981, 932, 935, 445, 447, 457, 1111, 1027, 1673, 762, 1879, 132, 33, 215, 738, 1227, 733, 202, 555, 297, 792, 670, 61, 679, 418, 677, 520, 201, 78, 34, 43, 343, 490, 430, 696, 1543, 506, 1157, 136, 697, 1072, 712, 858, 47, 58, 127, 114, 818, 335, 464, 95, 1545, 583, 705, 406, 678, 1000, 131, 64, 804, 458, 715, 1243, 797, 261, 1724, 1274, 656, 713, 958, 1466, 1001, 611, 999, 521, 789, 1731, 83, 1686, 336, 346, 82, 263, 426, 999, 261, 334, 319, 447, 454, 153, 903, 1403, 323, 269, 491, 425, 323, 777, 110, 606, 623, 879, 513, 670, 334, 879, 1506, 636, 162, 517, 518, 609, 712, 1487, 99, 49, 414, 85, 339, 384, 335, 371, 1285, 1094, 90, 899, 215, 641, 383, 53, 165, 219, 51, 532, 39, 1209, 420, 240, 650, 421, 668, 645, 283, 148, 401, 337, 379, 239, 620, 145, 127, 381, 1484, 71, 581, 381, 605, 839, 355, 626, 432, 882, 1735, 495, 571, 794, 676, 246, 780, 1634, 789, 993, 960, 1068, 92, 1926, 1902, 326, 550, 764, 582, 879, 446, 568, 140, 581, 1103, 916, 409, 180, 1612, 765, 92, 408, 770, 1856, 551, 627, 405, 106, 941, 393, 424, 877, 342, 850, 276, 331, 331, 791, 464, 270, 49, 43, 841, 881, 334, 754, 353, 116, 487, 759, 45, 753, 365, 148, 208, 1259, 633, 1079, 200, 580, 664, 1920, 1109, 234, 807, 367, 365, 1306, 2121, 365, 376, 1187, 134, 408, 418, 578, 433, 359, 369, 69, 417, 668, 1597, 368, 2139, 531, 1056, 1595, 205, 214, 134, 1613, 211, 74, 207, 1396, 1611, 1097, 1611, 2171, 205, 662, 194, 576, 2003, 2122, 1396, 2101, 1976, 1976, 1968, 1243, 1984, 472, 464, 728, 1378, 1291, 307, 506, 278, 184, 307, 100, 110, 90, 925, 96, 720, 588, 1707, 692, 962, 809, 456, 531, 38, 651, 343, 75, 1375, 298, 81, 379, 409, 1909, 159, 247, 605, 415, 378, 437, 612, 295, 853, 853, 107, 84, 419, 349, 776, 196, 883, 591, 162, 1103, 527, 1207, 657, 524, 97, 387, 811, 113, 762, 640, 177, 130, 326, 679, 777, 94, 778, 51, 877, 747, 868, 113, 863, 850, 758, 364, 1061, 444, 1085, 93, 1453, 278, 1016, 375, 817, 1544, 68, 95, 81, 790, 783, 1893, 886, 726, 1789, 290, 578, 952, 1528, 126, 220, 63, 779, 1440, 1228, 172, 817, 85, 1147, 931, 896, 220, 342, 1244, 1295, 419, 173, 435, 408, 624, 276, 480, 28, 166, 59, 1211, 337, 410, 271, 861, 828, 1905, 542, 92, 252, 836, 598, 1024, 400, 458, 1104, 604, 865, 485, 1749, 978, 369, 1456, 830, 453, 474, 456, 194, 616, 624, 346, 351, 337, 622, 386, 774, 440, 492, 245, 540, 550, 336, 379, 610, 59, 374, 1013, 208, 746, 494, 746, 493, 894, 1188, 899, 825, 702, 746, 820, 343, 374, 625, 756, 747, 41, 271, 259, 628, 408, 279, 408, 408, 386, 1031, 1217, 394, 215, 182, 261, 551, 68, 50, 1725, 204, 68, 470, 429, 204, 379, 901, 1732, 272, 415, 658, 911, 155, 44, 184, 45, 724, 44, 670, 141, 889, 396, 671, 1468, 287, 713, 588, 964, 1694, 516, 1730, 980, 647, 81, 920, 1538, 515, 174, 3114, 183, 1226, 429, 634, 333, 743, 793, 458, 550, 984, 396, 296, 472, 307, 141, 1805, 587, 1330, 1274, 392, 838, 627, 702, 695, 383, 438, 129, 410, 718, 83, 453, 743, 822, 880, 702, 161, 632, 664, 813, 1104, 636, 818, 88, 1007, 837, 126, 1241, 372, 391, 948, 581, 1081, 184, 407, 1222, 963, 552, 608, 77, 350, 1725, 597, 1459, 451, 1025, 948, 1033, 49, 1025, 429, 140, 174, 437, 65, 1963, 256, 37, 375, 767, 424, 268, 571, 523, 258, 760, 299, 109, 1149, 641, 541, 339, 565, 225, 775, 350, 472, 560, 536, 689, 617, 96, 1211, 279, 472, 183, 590, 104, 324, 547, 512, 692, 556, 524, 586, 73, 1340, 1997, 477, 500, 311, 295, 667, 862, 786, 344, 71, 37, 35, 922, 325, 381, 593, 349, 243, 206, 242, 228, 203, 166, 818, 427, 1017, 466, 1005, 65, 628, 431, 1609, 359, 55, 791, 719, 900, 912, 769, 147, 1674, 739, 693, 348, 850, 409, 726, 1150, 108, 232, 1260, 401, 1278, 622, 690, 823, 1282, 191, 341, 1170, 1498, 437, 703, 55, 170, 339, 1599, 1301, 65, 488, 168, 1745, 567, 212, 255, 1250, 255, 391, 487, 490, 477, 228, 563, 357, 215, 1470, 953, 1525, 300, 887, 1203, 260, 679, 1668, 1237, 391, 353, 402, 304, 451, 741, 1957, 753, 476, 405, 431, 643, 744, 388, 487, 614, 491, 375, 384, 415, 1308, 541, 783, 691, 1501, 281, 377, 388, 819, 584, 691, 1864, 683, 536, 322, 279, 121, 744, 528, 140, 2026, 720, 1021, 142, 1888, 1353, 515, 58, 153, 141, 1711, 371, 248, 1071, 683, 191, 297, 132, 1022, 384, 133, 785, 325, 238, 217, 798, 264, 385, 154, 2064, 346, 755, 769, 66, 400, 356, 161, 1932, 394, 326, 434, 851, 501, 793, 2390, 914, 793, 393, 911, 436, 1021, 440, 459, 1487, 96, 268, 309, 1100, 1355, 125, 884, 601, 476, 1106, 645, 364, 132, 319, 123, 67, 424, 490, 278, 922, 639, 241, 1392, 638, 866, 249, 162, 102, 578, 432, 160, 538, 253, 662, 503, 917, 333, 269, 658, 113, 330, 622, 477, 1020, 1115, 363, 1538, 351, 1005, 343, 654, 709, 887, 202, 655, 252, 290, 583, 102, 954, 551, 670, 638, 939, 1780, 545, 67, 898, 201, 202, 294, 1039, 711, 1442, 109, 76, 3538, 6417, 88, 1021, 1292, 103, 1994, 1113, 996, 1495, 146, 1067, 285, 915, 564, 444, 298, 78, 86, 39, 307, 4782, 417, 987, 944, 49, 221, 87, 195, 670, 325, 1028, 229, 787, 350, 1076, 973, 491, 1282, 392, 980, 1161, 1934, 1373, 245, 269, 768, 536, 270, 689, 118, 319, 871, 742, 479, 879, 219, 2518, 384, 895, 187, 412, 716, 1561, 342, 708, 509, 657, 257, 158, 564, 632, 107, 1052, 524, 534, 793, 465, 464, 1796, 1539, 448, 733, 183, 1495, 384, 179, 91, 69, 1845, 5605, 1246, 954, 1147, 871, 217, 900, 421, 105, 435, 639, 397, 2901, 2946, 1169, 955, 35, 169, 357, 182, 116, 420, 137, 635, 802, 797, 313, 300, 133, 590, 351, 181, 647, 435, 1187, 45, 645, 636, 372, 1110, 1071, 747, 336, 1269, 336, 399, 309, 606, 281, 458, 47, 528, 998, 686, 590, 979, 2166, 820, 794, 431, 1136, 337, 598, 942, 1019, 627, 544, 1021, 310, 609, 563, 356, 240, 646, 554, 67, 655, 311, 493, 1059, 529, 1104, 438, 870, 490, 262, 344, 312, 156, 410, 415, 184, 320, 977, 601, 453, 636, 632, 847, 224, 1784, 507, 402, 232, 536, 534, 198, 1206, 356, 568, 567, 564, 548, 378, 897, 959, 927, 1172, 390, 306, 888, 529, 984, 697, 942, 766, 560, 783, 320, 1443, 850, 754, 535, 846, 842, 672, 1332, 272, 548, 783, 658, 361, 79, 904, 1704, 1028, 468, 366, 324, 969, 205, 467, 978, 221, 49, 1189, 1108, 499, 615, 72, 1147, 585, 140, 596, 84, 1099, 155, 585, 982, 721, 617, 525, 176, 407, 453, 294, 508, 430, 316, 221, 661, 575, 761, 431, 718, 442, 220, 344, 1247, 44, 371, 1402, 390, 440, 433, 1605, 1351, 83, 2054, 1024, 221, 568, 376, 408, 425, 558, 295, 1659, 542, 274, 272, 281, 596, 396, 587, 584, 472, 410, 534, 1695, 96, 482, 1616, 1073, 677, 409, 604, 2051, 538, 1134, 996, 333, 454, 312, 704, 995, 88, 390, 811, 1498, 985, 291, 721, 539, 307, 793, 425, 324, 484, 410, 475, 485, 695, 287, 803, 1348, 558, 410, 98, 96, 324, 325, 1295, 160, 595, 880, 201, 412, 315, 694, 47, 473, 1000, 345, 53, 95, 267, 708, 190, 509, 704, 698, 673, 350, 400, 820, 887, 1203, 460, 962, 116, 817, 184, 228, 387, 1292, 172, 511, 494, 785, 977, 1011, 989, 1088, 1020, 996, 996, 998, 993, 982, 129, 908, 903, 1072, 286, 881, 1012, 845, 330, 387, 1409, 53, 73, 127, 308, 833, 1680, 37, 735, 566, 1573, 421, 357, 615, 972, 245, 808, 632, 562, 605, 334, 243, 303, 383, 1192, 203, 167, 524, 202, 359, 671, 725, 417, 84, 39, 279, 1019, 1398, 695, 641, 396, 424, 403, 483, 430, 566, 308, 745, 918, 83, 492, 266, 399, 911, 430, 431, 406, 36, 638, 236, 1123, 533, 1625, 466, 99, 223, 511, 34, 963, 157, 777, 594, 1878, 571, 1258, 665, 278, 1503, 579, 235, 209, 892, 750, 728, 714, 219, 474, 1576, 330, 769, 1072, 161, 300, 1292, 1069, 397, 1099, 1054, 1068, 1024, 229, 1107, 401, 1085, 1069, 1080, 1089, 1098, 1002, 985, 934, 722, 1202, 1546, 798, 949, 914, 1501, 865, 690, 901, 1708, 355, 92, 1188, 345, 624, 1876, 1069, 285, 709, 376, 344, 1715, 1077, 1095, 1828, 683, 72, 308, 155, 170, 84, 1040, 720, 830, 753, 858, 970, 227, 414, 74, 250, 1191, 314, 767, 715, 392, 653, 546, 1077, 1080, 359, 328, 136, 569, 238, 519, 507, 261, 575, 330, 113, 333, 160, 358, 1284, 737, 162, 833, 266, 997, 795, 422, 782, 1516, 282, 188, 398, 699, 754, 689, 567, 700, 732, 693, 567, 143, 650, 803, 645, 276, 804, 234, 523, 200, 827, 370, 794, 354, 482, 874, 362, 643, 509, 85, 138, 409, 87, 139, 340, 779, 836, 777, 710, 405, 789, 426, 814, 387, 810, 448, 440, 587, 626, 797, 883, 1301, 749, 798, 300, 910, 1361, 1594, 811, 675, 656, 1146, 251, 828, 1111, 194, 1196, 1217, 635, 311, 218, 223, 1152, 329, 641, 674, 220, 660, 792, 1112, 614, 277, 193, 429, 174, 805, 407, 357, 347, 576, 1144, 203, 150, 97, 372, 349, 558, 82, 862, 62, 908, 270, 1082, 576, 46, 1032, 1805, 1320, 559, 240, 794, 247, 295, 712, 651, 618, 966, 245, 513, 316, 896, 2001, 645, 531, 409, 562, 607, 1789, 726, 72, 232, 260, 117, 114, 469, 139, 523, 168, 528, 62, 1050, 1234, 1028, 639, 79, 630, 664, 358, 222, 961, 268, 1025, 302, 1291, 1279, 3172, 341, 585, 363, 66, 655, 646, 434, 1280, 343, 421, 264, 893, 497, 2025, 490, 116, 1080, 386, 329, 349, 1118, 754, 809, 402, 240, 372, 462, 318, 127, 90, 395, 929, 921, 147, 1086, 395, 83, 481, 420, 1992, 61, 59, 736, 1358, 1527, 180, 218, 714, 1368, 450, 1752, 1265, 1715, 769, 1124, 733, 127, 1119, 1041, 383, 210, 202, 100, 377, 97, 696, 387, 92, 699, 201, 1179, 51, 277, 302, 147, 566, 441, 197, 227, 1457, 755, 147, 463, 255, 401, 270, 204, 325, 484, 50, 329, 1025, 257, 133, 168, 377, 412, 166, 164, 166, 405, 94, 747, 652, 270, 372, 380, 148, 196, 1469, 231, 336, 672, 138, 129, 237, 450, 666, 232, 389, 221, 625, 364, 149, 212, 165, 200, 119, 199, 598, 204, 253, 616, 958, 321, 693, 280, 1304, 942, 697, 244, 695, 84, 696, 1507, 701, 648, 357, 762, 132, 592, 186, 641, 439, 826, 171, 328, 711, 753, 137, 572, 679, 495, 1593, 1287, 726, 516, 387, 540, 249, 281, 432, 1392, 170, 516, 392, 561, 431, 394, 578, 145, 111, 104, 194, 996, 115, 270, 607, 108, 633, 321, 301, 87, 116, 45, 122, 218, 218, 614, 421, 131, 260, 381, 141, 1056, 629, 168, 305, 191, 194, 1085, 799, 490, 394, 1300, 415, 1823, 467, 427, 113, 87, 434, 538, 199, 355, 349, 241, 651, 1622, 455, 172, 181, 45, 38, 1345, 1016, 668, 211, 500, 129, 939, 598, 700, 295, 123, 1220, 1834, 796, 1439, 476, 938, 584, 833, 1576, 1385, 718, 330, 235, 1837, 405, 962, 1226, 321, 831, 1495, 361, 710, 1005, 158, 379, 120, 1005, 104, 192, 1512, 72, 355, 976, 760, 965, 550, 343, 304, 173, 222, 26, 271, 427, 758, 497, 777, 949, 367, 205, 829, 798, 814, 132, 384, 844, 443, 82, 48, 55, 276, 537, 577, 497, 809, 669, 180, 267, 495, 1567, 459, 383, 487, 645, 437, 438, 829, 646, 457, 518, 663, 903, 665, 448, 518, 637, 641, 302, 469, 50, 304, 69, 255, 762, 515, 148, 2311, 138, 459, 591, 1328, 2286, 898, 402, 523, 419, 336, 350, 191, 495, 998, 405, 255, 316, 837, 671, 533, 447, 161, 459, 1623, 962, 403, 740, 984, 950, 976, 986, 946, 129, 86, 1028, 1043, 366, 374, 361, 1098, 155, 454, 385, 365, 1017, 1566, 374, 148, 162, 162, 1845, 613, 276, 161, 354, 456, 777, 853, 811, 820, 353, 1014, 497, 286, 677, 940, 158, 151, 60, 213, 184, 771, 522, 180, 1477, 1431, 951, 323, 1555, 164, 237, 183, 1501, 897, 1191, 71, 439, 1069, 245, 222, 206, 244, 233, 69, 68, 2172, 232, 972, 359, 1565, 1621, 557, 1799, 1663, 559, 1675, 1599, 1127, 1182, 75, 1850, 1841, 1822, 1938, 92, 94, 143, 308, 1843, 1931, 1942, 1777, 136, 547, 508, 325, 336, 125, 512, 342, 340, 541, 467, 1688, 88, 498, 531, 488, 496, 82, 307, 182, 1297, 1804, 95, 494, 333, 494, 509, 1648, 572, 745, 737, 774, 502, 401, 1402, 66, 946, 1557, 459, 310, 973, 93, 91, 209, 273, 685, 382, 606, 401, 538, 443, 349, 282, 1346, 860, 243, 562, 274, 544, 619, 603, 464, 339, 383, 1104, 111, 283, 294, 560, 223, 202, 543, 430, 1350, 1508, 231, 95, 521, 406, 951, 214, 493, 599, 659, 1346, 542, 1109, 626, 334, 336, 341, 346, 963, 212, 343, 593, 557, 632, 281, 177, 215, 1332, 547, 927, 471, 865, 814, 391, 620, 601, 529, 1864, 389, 423, 616, 172, 454, 415, 187, 90, 1169, 809, 381, 1540, 1378, 94, 1125, 1386, 375, 172, 372, 1652, 634, 363, 92, 479, 1462, 226, 97, 623, 1699, 379, 556, 598, 1727, 1996, 2008, 1993, 97, 215, 226, 596, 333, 2153, 597, 1569, 237, 910, 1541, 322, 479, 1245, 239, 591, 459, 494, 418, 1750, 584, 427, 429, 422, 132, 1235, 398, 429, 385, 432, 554, 444, 1229, 1122, 1660, 1621, 333, 1104, 1543, 445, 60, 311, 181, 1931, 1163, 428, 2019, 2127, 1927, 767, 67, 1212, 376, 64, 80, 182, 2026, 635, 514, 323, 181, 473, 97, 176, 2006, 175, 1243, 478, 821, 1628, 1125, 1733, 1111, 1142, 679, 343, 572, 584, 778, 810, 84, 602, 892, 381, 70, 102, 463, 237, 381, 88, 47, 749, 114, 245, 497, 644, 47, 61, 530, 535, 710, 346, 147, 514, 361, 352, 542, 1038, 818, 372, 99, 1727, 511, 372, 386, 322, 545, 364, 121, 758, 827, 386, 1196, 109, 408, 116, 553, 1376, 549, 921, 2180, 374, 552, 421, 913, 256, 573, 306, 317, 641, 259, 201, 508, 410, 261, 1813, 247, 717, 1497, 542, 732, 1289, 581, 966, 488, 480, 1778, 1277, 279, 246, 259, 415, 1169, 1940, 734, 1008, 1092, 547, 581, 554, 1009, 1148, 770, 445, 1010, 1587, 921, 1009, 994, 1010, 448, 516, 186, 541, 382, 479, 140, 480, 1158, 548, 1432, 370, 542, 511, 374, 419, 415, 545, 456, 289, 408, 501, 549, 302, 1913, 1395, 371, 502, 100, 1350, 633, 1192, 81, 45, 285, 80, 613, 86, 401, 557, 705, 738, 648, 559, 745, 959, 210, 891, 410, 713, 307, 258, 632, 1636, 348, 748, 666, 751, 891, 68, 277, 73, 137, 1712, 1800, 192, 1110, 116, 543, 971, 248, 131, 68, 414, 150, 507, 235, 69, 677, 221, 252, 150, 304, 288, 689, 665, 58, 62, 196, 634, 1741, 309, 197, 1854, 1278, 1712, 1782, 1747, 154, 85, 367, 391, 482, 1225, 147, 259, 50, 493, 633, 483, 442, 630, 632, 631, 498, 352, 585, 478, 469, 464, 446, 458, 1623, 477, 220, 55, 93, 454, 91, 196, 133, 1149, 473, 1570, 81, 408, 554, 178, 101, 467, 356, 175, 196, 520, 128, 1032, 223, 131, 328, 364, 304, 268, 341, 331, 157, 248, 179, 906, 395, 913, 1518, 36, 110, 961, 518, 308, 1787, 30, 1681, 240, 803, 1176, 258, 182, 669, 930, 1382, 84, 2234, 158, 732, 297, 1307, 856, 548, 1096, 730, 739, 337, 1304, 849, 860, 1615, 645, 425, 1780, 897, 353, 411, 407, 436, 343, 1621, 508, 1099, 871, 1223, 1216, 454, 351, 1368, 1378, 871, 1236, 1652, 1042, 808, 533, 653, 423, 65, 903, 1274, 348, 80, 923, 1136, 1107, 580, 1038, 193, 268, 453, 146, 375, 677, 690, 313, 1045, 419, 256, 109, 1035, 303, 730, 890, 1008, 554, 1159, 191, 1146, 90, 67, 1225, 556, 921, 153, 983, 66, 169, 223, 502, 1003, 87, 177, 683, 1845, 946, 449, 1569, 390, 508, 549, 979, 112, 782, 605, 867, 1256, 632, 1059, 1055, 774, 1278, 331, 1788, 637, 236, 75, 255, 767, 955, 635, 322, 594, 519, 1035, 193, 328, 335, 248, 641, 842, 337, 840, 1433, 86, 230, 773, 255, 159, 180, 350, 187, 367, 623, 896, 120, 220, 1581, 641, 410, 1785, 935, 585, 476, 514, 260, 1561, 1572, 474, 986, 477, 561, 237, 536, 448, 407, 416, 1624, 1365, 620, 341, 468, 713, 1420, 525, 236, 714, 348, 393, 397, 486, 403, 480, 547, 492, 289, 448, 104, 807, 107, 392, 57, 352, 449, 389, 488, 237, 2200, 148, 526, 1115, 497, 849, 110, 108, 531, 609, 1435, 270, 543, 138, 1294, 246, 746, 797, 707, 93, 491, 814, 730, 991, 520, 273, 251, 364, 414, 1325, 403, 223, 768, 406, 392, 110, 221, 637, 407, 860, 665, 698, 393, 730, 278, 440, 176, 1705, 2040, 721, 1732, 440, 1588, 1577, 1800, 613, 1268, 654, 1404, 317, 602, 359, 273, 1329, 565, 1062, 1328, 111, 584, 1123, 865, 188, 787, 408, 423, 276, 509, 408, 216, 873, 742, 110, 366, 297, 865, 1480, 813, 1452, 67, 1359, 965, 975, 68, 61, 1313, 1306, 1469, 64, 463, 1219, 451, 112, 496, 635, 416, 472, 506, 437, 921, 1198, 465, 379, 607, 193, 833, 400, 340, 687, 578, 943, 508, 265, 473, 261, 280, 443, 490, 404, 384, 704, 364, 1173, 1274, 384, 967, 182, 487, 399, 397, 368, 164, 273, 272, 249, 72, 76, 682, 378, 446, 249, 630, 679, 72, 73, 535, 394, 295, 322, 151, 435, 1160, 942, 581, 361, 726, 201, 247, 1383, 151, 1268, 1195, 1527, 371, 149, 757, 121, 180, 60, 111, 1201, 1505, 472, 1406, 494, 317, 1943, 1168, 1006, 758, 830, 274, 137, 61, 845, 95, 517, 735, 769, 1932, 721, 3017, 266, 1073, 360, 805, 1449, 305, 338, 145, 835, 1161, 811, 485, 527, 392, 1798, 555, 592, 1282, 394, 1082, 146, 1874, 220, 390, 362, 132, 110, 2197, 529, 138, 349, 1246, 130, 854, 404, 50, 128, 368, 875, 344, 207, 354, 374, 232, 294, 757, 963, 353, 1122, 608, 588, 184, 554, 448, 89, 621, 578, 905, 437, 1611, 43, 189, 376, 177, 303, 1359, 1740, 353, 92, 70, 363, 473, 177, 1455, 269, 327, 982, 235, 707, 238, 75, 653, 76, 1860, 314, 84, 517, 588, 633, 667, 784, 815, 571, 221, 311, 648, 171, 624, 61, 467, 575, 634, 635, 716, 75, 128, 446, 255, 664, 785, 673, 291, 802, 611, 448, 439, 592, 88, 275, 659, 52, 205, 65, 115, 368, 533, 1019, 398, 545, 83, 469, 971, 377, 533, 973, 857, 1460, 1231, 469, 1233, 202, 135, 118, 426, 723, 1143, 933, 439, 400, 147, 469, 435, 1474, 908, 1233, 405, 131, 868, 436, 810, 506, 423, 385, 500, 465, 497, 729, 422, 966, 443, 514, 1191, 179, 1205, 31, 1159, 440, 553, 61, 477, 92, 472, 436, 826, 1057, 243, 777, 284, 488, 515, 228, 625, 342, 634, 314, 712, 277, 284, 381, 466, 363, 162, 622, 1076, 132, 134, 585, 150, 509, 4988, 1217, 390, 102, 1018, 96, 82, 83, 171, 197, 403, 43, 44, 627, 208, 1018, 999, 212, 203, 202, 853, 551, 118, 410, 45, 207, 721, 118, 332, 731, 214, 285, 874, 67, 79, 1655, 669, 564, 1264, 901, 532, 150, 896, 988, 163, 1369, 752, 1193, 155, 377, 1014, 926, 758, 702, 984, 1498, 51, 828, 31, 1445, 839, 314, 655, 392, 1128, 44, 41, 1175, 186, 402, 1074, 59, 1026, 509, 565, 1043, 410, 463, 684, 476, 1316, 705, 105, 376, 361, 95, 577, 608, 350, 587, 274, 815, 882, 298, 133, 157, 649, 559, 1420, 200, 1156, 946, 1199, 794, 1014, 1030, 788, 335, 988, 47, 682, 276, 419, 810, 1579, 89, 545, 400, 684, 125, 544, 455, 199, 582, 1409, 677, 652, 447, 1797, 848, 351, 518, 277, 762, 766, 231, 1916, 440, 933, 764, 289, 1372, 287, 306, 196, 175, 1045, 482, 245, 882, 233, 338, 556, 587, 507, 497, 299, 204, 177, 333, 136, 175, 597, 593, 1394, 407, 247, 316, 1831, 125, 278, 114, 1268, 569, 157, 344, 904, 557, 1420, 1966, 1984, 731, 1015, 1415, 68, 399, 647, 125, 319, 961, 1152, 1207, 103, 136, 1818, 1205, 121, 1966, 1257, 478, 80, 1117, 1141, 1865, 267, 846, 756, 530, 1119, 964, 270, 988, 490, 221, 1088, 471, 706, 852, 515, 884, 1347, 184, 1755, 916, 1092, 273, 197, 249, 1847, 80, 628, 902, 293, 734, 272, 145, 457, 590, 889, 698, 199, 611, 738, 779, 285, 489, 413, 272, 599, 1207, 490, 1144, 538, 472, 1179, 354, 1260, 713, 1356, 831, 840, 195, 977, 368, 1234, 1089, 345, 419, 400, 139, 1248, 313, 225, 1178, 300, 34, 848, 1087, 365, 94, 1347, 540, 26, 385, 468, 218, 1260, 33, 464, 393, 263, 524, 407, 522, 273, 155, 1040, 230, 228, 249, 239, 148, 428, 130, 199, 245, 414, 221, 384, 351, 346, 300, 145, 1861, 115, 194, 309, 606, 293, 833, 759, 819, 510, 984, 792, 1043, 1398, 1783, 589, 519, 65, 70, 998, 1951, 63, 1656, 731, 698, 1903, 796, 756, 879, 649, 323, 1636, 548, 447, 712, 667, 1050, 1588, 1662, 1036, 1029, 484, 937, 701, 484, 423, 1029, 456, 510, 711, 468, 921, 943, 170, 1100, 1089, 332, 1087, 581, 511, 329, 1132, 529, 335, 604, 510, 452, 461, 432, 1442, 627, 1204, 2021, 1628, 425, 86, 548, 537, 524, 375, 382, 44, 341, 1353, 416, 198, 491, 96, 371, 303, 473, 570, 1355, 58, 566, 587, 1060, 227, 311, 1064, 1108, 1337, 251, 643, 613, 621, 544, 859, 776, 1302, 1291, 440, 578, 110, 800, 1334, 647, 1458, 1637, 1170, 51, 637, 739, 213, 763, 379, 337, 438, 953, 718, 675, 1182, 129, 1132, 118, 851, 674, 1818, 817, 509, 745, 629, 869, 824, 875, 1133, 141, 978, 599, 446, 642, 249, 771, 1889, 773, 651, 1349, 615, 477, 1561, 635, 466, 1383, 1114, 1422, 332, 739, 432, 832, 218, 125, 161, 1354, 158, 448, 181, 790, 297, 173, 366, 414, 1068, 251, 672, 60, 344, 591, 481, 376, 360, 457, 995, 396, 407, 899, 504, 457, 145, 1064, 171, 248, 158, 273, 530, 222, 535, 203, 1428, 921, 543, 300, 473, 361, 303, 1194, 287, 950, 494, 928, 683, 507, 623, 646, 94, 413, 442, 605, 451, 438, 95, 601, 662, 389, 410, 349, 1244, 502, 292, 25, 676, 751, 1507, 901, 634, 236, 745, 627, 795, 170, 259, 328, 220, 1444, 104, 668, 1182, 413, 1210, 238, 362, 288, 1293, 435, 1088, 167, 203, 559, 188, 210, 1413, 890, 763, 299, 1363, 252, 100, 276, 318, 735, 426, 327, 266, 428, 335, 239, 251, 293, 502, 249, 1304, 413, 212, 427, 275, 479, 480, 185, 857, 349, 1167, 114, 189, 653, 734, 276, 541, 656, 982, 350, 959, 263, 787, 304, 618, 980, 271, 542, 751, 762, 346, 386, 297, 2018, 348, 353, 856, 773, 546, 755, 886, 310, 599, 1171, 1080, 338, 607, 1899, 975, 346, 608, 526, 807, 411, 620, 778, 498, 1025, 929, 840, 356, 1272, 56, 488, 609, 488, 797, 654, 691, 632, 644, 530, 1028, 645, 733, 294, 546, 244, 98, 27, 106, 1722, 52, 50, 699, 132, 574, 1103, 26, 1273, 486, 301, 259, 1945, 259, 341, 1897, 457, 441, 654, 1106, 851, 598, 903, 855, 256, 257, 242, 316, 743, 996, 1041, 432, 449, 171, 548, 1086, 299, 518, 205, 817, 844, 1101, 658, 933, 1635, 605, 999, 262, 670, 612, 598, 574, 599, 1332, 158, 168, 452, 412, 1305, 637, 1898, 103, 360, 285, 932, 646, 1241, 408, 759, 631, 711, 631, 871, 318, 443, 921, 449, 251, 219, 383, 215, 546, 247, 262, 344, 445, 967, 999, 628, 439, 536, 203, 428, 976, 595, 68, 187, 146, 365, 72, 84, 460, 519, 969, 1034, 227, 1457, 409, 252, 1170, 932, 324, 922, 409, 1074, 932, 413, 570, 395, 306, 411, 919, 315, 226, 566, 277, 298, 364, 686, 102, 552, 340, 499, 441, 215, 327, 1545, 111, 217, 105, 835, 723, 1797, 552, 684, 689, 1097, 448, 1005, 345, 1089, 685, 1069, 957, 1439, 287, 688, 1509, 1419, 654, 758, 309, 512, 1092, 1018, 336, 1030, 499, 567, 1049, 173, 507, 107, 1075, 333, 808, 740, 511, 363, 90, 510, 809, 84, 287, 744, 324, 117, 596, 309, 179, 1413, 737, 767, 187, 289, 318, 740, 263, 1689, 341, 487, 575, 886, 1434, 493, 805, 184, 635, 156, 50, 164, 1606, 410, 879, 756, 325, 358, 272, 280, 343, 323, 320, 827, 225, 349, 301, 216, 132, 410, 294, 471, 516, 83, 235, 767, 1372, 1254, 1254, 927, 1448, 92, 1010, 987, 870, 683, 858, 1118, 224, 96, 285, 1305, 3835, 430, 41, 475, 279, 645, 602, 1193, 1186, 252, 568, 433, 511, 113, 412, 1161, 374, 1145, 467, 90, 61, 418, 588, 442, 778, 342, 291, 385, 360, 3899, 239, 73, 147, 285, 1173, 34, 400, 971, 75, 1205, 135, 640, 276, 149, 135, 352, 967, 298, 186, 285, 289, 82, 654, 211, 338, 96, 837, 447, 814, 358, 59, 286, 920, 28, 24, 394, 1032, 409, 577, 322, 732, 427, 167, 801, 431, 455, 1150, 281, 184, 239, 1189, 1545, 720, 736, 437, 450, 366, 739, 265, 938, 1814, 438, 433, 367, 615, 2072, 255, 662, 384, 113, 6670, 204, 593, 351, 771, 291, 524, 641, 899, 625, 392, 1202, 382, 196, 99, 213, 835, 659, 328, 393, 713, 1198, 1149, 790, 1173, 1231, 48, 433, 549, 590, 978, 744, 1708, 776, 80, 81, 748, 437, 1190, 707, 484, 604, 357, 163, 373, 598, 587, 841, 68, 694, 159, 581, 518, 926, 296, 1132, 431, 447, 210, 248, 1297, 488, 35, 733, 742, 1426, 382, 364, 1222, 1119, 1619, 464, 360, 80, 125, 97, 360, 910, 746, 1436, 737, 567, 711, 73, 219, 1609, 1863, 805, 446, 355, 940, 572, 403, 1023, 1340, 242, 516, 2051, 126, 60, 516, 302, 60, 855, 552, 1069, 928, 146, 2066, 1170, 1161, 456, 1083, 664, 444, 510, 566, 367, 586, 378, 586, 503, 84, 483, 1165, 586, 331, 74, 596, 576, 1199, 509, 45, 382, 1059, 485, 581, 243, 336, 895, 584, 605, 1055, 230, 705, 956, 179, 523, 586, 655, 1485, 158, 78, 836, 787, 290, 998, 792, 186, 392, 1922, 600, 603, 600, 537, 493, 1479, 770, 2009, 486, 1447, 2503, 287, 475, 1370, 532, 215, 807, 737, 729, 398, 818, 552, 186, 103, 219, 206, 84, 332, 241, 629, 276, 73, 608, 1243, 134, 586, 739, 1016, 1543, 868, 1104, 1356, 1188, 840, 472, 756, 1120, 586, 1721, 993, 1098, 2070, 282, 202, 1458, 807, 186, 442, 564, 1187, 1253, 1076, 1467, 1657, 515, 1374, 619, 1757, 438, 475, 253, 380, 248, 1481, 1305, 917, 1179, 55, 1484, 359, 1146, 329, 38, 182, 979, 556, 426, 156, 620, 260, 889, 1329, 740, 592, 262, 61, 862, 969, 805, 312, 1334, 157, 224, 299, 1213, 582, 1068, 305, 312, 1825, 1248, 1219, 450, 625, 669, 277, 6604, 172, 523, 629, 6623, 608, 385, 442, 1165, 1901, 247, 810, 194, 1169, 435, 596, 239, 223, 86, 168, 578, 147, 109, 145, 506, 348, 394, 90, 130, 93, 644, 345, 781, 945, 340, 1142, 567, 492, 431, 486, 942, 212, 92, 241, 526, 695, 725, 139, 343, 944, 410, 292, 476, 709, 918, 570, 783, 263, 92, 1784, 1318, 325, 414, 282, 518, 270, 459, 757, 377, 310, 513, 390, 269, 966, 685, 200, 45, 770, 1083, 669, 804, 131, 394, 934, 365, 57, 203, 1075, 520, 871, 283, 1570, 393, 1232, 457, 239, 948, 1208, 216, 1561, 508, 709, 1085, 1025, 726, 2180, 339, 603, 657, 478, 2041, 677, 1796, 809, 294, 645, 882, 1580, 441, 1381, 1572, 530, 497, 91, 98, 551, 310, 1411, 446, 1327, 357, 750, 1246, 803, 122, 652, 442, 472, 546, 1194, 828, 691, 41, 41, 1114, 567, 416, 761, 713, 720, 730, 135, 869, 263, 277, 484, 527, 1126, 1156, 391, 66, 1164, 433, 794, 166, 818, 372, 348, 676, 546, 695, 411, 1191, 802, 693, 710, 385, 459, 99, 1011, 1134, 342, 374, 1807, 214, 1185, 437, 81, 487, 429, 646, 595, 998, 235, 592, 754, 448, 1682, 236, 468, 644, 110, 1413, 508, 424, 75, 983, 453, 893, 456, 62, 122, 621, 220, 462, 80, 716, 276, 559, 878, 469, 355, 516, 486, 659, 198, 523, 331, 233, 990, 515, 55, 935, 579, 720, 228, 545, 239, 395, 785, 1033, 67, 495, 227, 370, 2119, 587, 93, 725, 506, 266, 1164, 795, 1569, 508, 454, 1017, 145, 1389, 1389, 1826, 771, 599, 755, 490, 422, 609, 766, 1277, 783, 109, 1852, 602, 592, 641, 1337, 1942, 89, 4810, 259, 521, 525, 221, 910, 978, 1475, 355, 228, 133, 471, 88, 590, 1995, 1185, 782, 1958, 1386, 520, 338, 1288, 506, 304, 1035, 788, 120, 1079, 1627, 836, 1203, 340, 583, 310, 1149, 1584, 1941, 961, 1547, 538, 1503, 400, 586, 1363, 777, 1459, 1221, 904, 1735, 1203, 1018, 1059, 659, 630, 624, 1013, 387, 335, 954, 1087, 197, 1232, 462, 552, 335, 586, 808, 1061, 1474, 2010, 430, 469, 1072, 228, 686, 813, 859, 102, 160, 198, 225, 229, 592, 312, 483, 1221, 830, 534, 734, 501, 1167, 623, 139, 427, 241, 346, 805, 253, 147, 193, 1669, 792, 905, 913, 530, 202, 365, 281, 592, 367, 1202, 1769, 269, 16, 230, 987, 1911, 1448, 749, 193, 215, 594, 138, 1163, 1311, 265, 304, 578, 301, 1376, 150, 297, 439, 572, 1331, 506, 1072, 1371, 331, 35, 1396, 919, 1288, 406, 77, 1384, 172, 538, 585, 961, 1738, 237, 1078, 4069, 285, 864, 1025, 307, 553, 565, 1438, 431, 93, 744, 1694, 968, 279, 511, 598, 147, 1489, 266, 806, 1099, 373, 388, 57, 627, 1256, 384, 259, 773, 208, 1271, 1284, 136, 1277, 713, 499, 701, 215, 194, 225, 689, 253, 724, 608, 898, 275, 381, 1065, 854, 1352, 246, 116, 521, 67, 396, 655, 581, 665, 381, 98, 576, 975, 695, 315, 1213, 945, 1944, 535, 1012, 964, 218, 1996, 999, 114, 974, 978, 941, 854, 928, 720, 681, 490, 42, 995, 162, 318, 553, 800, 265, 966, 1828, 1235, 632, 323, 525, 390, 275, 125, 782, 195, 333, 1089, 133, 1081, 135, 134, 438, 248, 788, 921, 1080, 107, 1031, 142, 618, 524, 744, 558, 1429, 481, 962, 312, 104, 307, 508, 497, 424, 256, 686, 681, 634, 859, 749, 365, 236, 1101, 267, 123, 92, 269, 868, 430, 476, 358, 42, 114, 132, 87, 285, 320, 587, 459, 332, 118, 144, 86, 87, 1571, 103, 453, 48, 491, 435, 554, 187, 52, 221, 316, 177, 249, 608, 591, 173, 458, 138, 764, 1279, 132, 139, 1702, 193, 63, 185, 1053, 1049, 320, 149, 348, 1296, 472, 143, 150, 48, 1589, 645, 1586, 348, 169, 1576, 158, 224, 964, 89, 362, 184, 847, 191, 1542, 681, 1218, 1159, 1142, 338, 81, 437, 1899, 1580, 1614, 310, 607, 351, 132, 325, 1544, 181, 1533, 888, 862, 494, 104, 519, 1768, 461, 576, 155, 155, 370, 1551, 316, 1879, 270, 158, 307, 1307, 796, 137, 1463, 3026, 110, 630, 886, 675, 440, 128, 107, 443, 1580, 1225, 158, 385, 367, 1632, 179, 894, 188, 457, 1390, 831, 367, 99, 1518, 1968, 506, 239, 251, 264, 245, 95, 98, 210, 483, 466, 919, 992, 902, 188, 105, 883, 257, 293, 534, 142, 847, 383, 1198, 1323, 181, 601, 642, 426, 365, 1276, 825, 956, 1308, 1187, 986, 1245, 235, 193, 480, 1134, 522, 1368, 1117, 912, 424, 990, 2708, 1833, 607, 215, 1107, 79, 56, 698, 1256, 1306, 267, 892, 1370, 1014, 359, 564, 1704, 425, 934, 663, 383, 765, 1340, 322, 795, 1805, 452, 1023, 1184, 1251, 850, 1303, 1308, 278, 627, 454, 1027, 1502, 585, 1953, 1795, 1508, 239, 659, 845, 695, 1091, 420, 1437, 433, 1073, 763, 1003, 707, 410, 1504, 748, 508, 236, 490, 463, 416, 206, 637, 1564, 541, 336, 803, 91, 1239, 1087, 1635, 825, 791, 1162, 913, 852, 401, 638, 896, 845, 547, 1058, 786, 810, 1078, 1103, 719, 624, 509, 268, 571, 464, 69, 362, 192, 1374, 1343, 777, 344, 1054, 456, 502, 380, 694, 605, 502, 1651, 1239, 981, 601, 1623, 1374, 306, 1330, 586, 376, 509, 131, 606, 469, 499, 911, 957, 412, 431, 372, 445, 1662, 484, 1198, 520, 835, 1212, 644, 279, 1327, 325, 1277, 361, 738, 549, 532, 322, 1401, 101, 706, 80, 321, 477, 584, 217, 1330, 823, 85, 339, 447, 78, 1505, 175, 484, 84, 1344, 1394, 38, 255, 49, 149, 553, 228, 286, 400, 397, 1080, 1327, 1600, 454, 1533, 1487, 1227, 315, 1512, 131, 617, 1247, 278, 682, 1285, 1212, 458, 107, 963, 839, 517, 123, 1220, 1261, 213, 1412, 708, 705, 430, 824, 197, 204, 214, 829, 244, 170, 393, 291, 119, 598, 109, 511, 364, 249, 319, 92, 975, 115, 240, 1062, 175, 510, 1082, 371, 674, 167, 395, 266, 543, 1422, 357, 692, 417, 377, 759, 385, 611, 393, 1816, 42, 210, 300, 189, 208, 1334, 208, 358, 243, 305, 370, 212, 1672, 176, 466, 1682, 417, 1638, 385, 1675, 1627, 2057, 480, 837, 325, 392, 381, 455, 219, 168, 220, 401, 625, 139, 447, 308, 543, 752, 133, 489, 238, 258, 1019, 320, 402, 305, 403, 462, 401, 116, 612, 941, 119, 80, 1453, 355, 451, 566, 563, 252, 1473, 430, 646, 135, 811, 813, 107, 633, 690, 1156, 136, 88, 539, 503, 387, 358, 105, 44, 734, 62, 502, 293, 865, 114, 1303, 725, 317, 182, 223, 967, 197, 268, 282, 656, 367, 476, 633, 1066, 256, 337, 54, 546, 852, 437, 1414, 367, 852, 705, 882, 334, 1173, 1579, 384, 507, 444, 386, 454, 530, 438, 1260, 132, 581, 155, 991, 32, 316, 546, 879, 839, 285, 293, 877, 30, 285, 26, 240, 214, 389, 440, 721, 611, 1004, 193, 246, 71, 625, 1090, 1092, 969, 148, 1007, 531, 1397, 1422, 1100, 253, 566, 431, 241, 341, 507, 424, 743, 44, 1091, 1091, 292, 1100, 1095, 71, 1093, 162, 1095, 1519, 1209, 577, 340, 1068, 370, 66, 139, 265, 454, 276, 70, 245, 1087, 106, 104, 70, 612, 166, 778, 619, 761, 347, 112, 1047, 166, 737, 669, 939, 882, 175, 255, 563, 327, 960, 610, 419, 1087, 424, 405, 662, 253, 204, 425, 632, 399, 1109, 912, 242, 383, 339, 419, 367, 303, 309, 385, 106, 281, 440, 227, 39, 54, 668, 427, 457, 542, 386, 593, 136, 61, 478, 458, 1075, 561, 1261, 1278, 391, 530, 464, 248, 1520, 231, 2018, 538, 983, 2571, 338, 224, 483, 499, 2014, 1200, 5025, 294, 1296, 900, 890, 145, 271, 1089, 914, 622, 995, 1007, 985, 289, 580, 129, 124, 834, 1060, 715, 923, 917, 602, 232, 170, 517, 892, 685, 277, 2559, 203, 529, 363, 257, 551, 627, 447, 465, 125, 472, 609, 1424, 1181, 619, 603, 401, 752, 686, 155, 69, 170, 250, 956, 596, 554, 1668, 530, 490, 325, 417, 868, 1442, 25, 1002, 163, 117, 214, 80, 387, 147, 1409, 1673, 1163, 1197, 298, 523, 324, 1034, 692, 717, 198, 755, 267, 131, 148, 1584, 386, 181, 1375, 184, 1002, 64, 337, 232, 593, 1800, 387, 481, 220, 698, 83, 853, 718, 717, 479, 2163, 251, 255, 906, 704, 290, 531, 276, 302, 1274, 328, 390, 746, 1272, 360, 495, 265, 409, 44, 718, 385, 259, 293, 532, 2528, 298, 361, 68, 66, 1579, 268, 325, 265, 410, 706, 714, 203, 212, 713, 948, 703, 1075, 1204, 748, 1392, 212, 816, 968, 566, 446, 498, 51, 354, 103, 571, 151, 287, 301, 657, 964, 597, 66, 658, 841, 555, 542, 379, 784, 610, 343, 166, 136, 125, 323, 1086, 887, 319, 397, 691, 1463, 1546, 700, 531, 254, 51, 1419, 1186, 76, 60, 63, 1780, 438, 324, 228, 244, 1345, 559, 641, 270, 374, 629, 192, 221, 563, 1317, 247, 767, 707, 201, 200, 559, 558, 366, 471, 486, 442, 80, 362, 494, 307, 217, 480, 748, 655, 409, 1489, 299, 885, 476, 814, 619, 410, 635, 249, 159, 586, 711, 420, 449, 41, 478, 1207, 672, 57, 90, 383, 649, 1730, 952, 946, 942, 860, 350, 230, 851, 193, 1511, 182, 948, 273, 952, 1830, 368, 782, 225, 923, 203, 233, 310, 937, 2115, 1199, 124, 202, 202, 41, 732, 1099, 82, 951, 78, 1934, 1353, 1132, 751, 647, 198, 83, 830, 940, 465, 951, 403, 874, 1369, 364, 4016, 1415, 1747, 322, 864, 956, 1367, 537, 954, 956, 1374, 683, 1151, 138, 858, 637, 386, 703, 646, 946, 945, 820, 757, 1310, 339, 862, 305, 855, 341, 1700, 950, 230, 987, 210, 1655, 236, 138, 332, 788, 114, 1413, 647, 1590, 791, 287, 780, 241, 164, 658, 180, 5269, 2017, 1519, 1990, 1641, 434, 1726, 1924, 1725, 322, 2013, 1072, 934, 154, 204, 1896, 227, 554, 679, 942, 948, 553, 494, 939, 137, 493, 1362, 108, 679, 1362, 526, 264, 71, 96, 859, 943, 1712, 435, 1744, 965, 150, 1721, 72, 96, 843, 74, 855, 241, 976, 76, 415, 358, 1319, 1503, 492, 814, 243, 947, 779, 243, 346, 1081, 1515, 992, 314, 622, 643, 663, 6185, 97, 6086, 6051, 1569, 1592, 168, 1041, 853, 141, 396, 1373, 228, 268, 374, 1430, 100, 659, 379, 285, 1724, 1185, 448, 367, 421, 492, 1102, 81, 1459, 540, 1282, 377, 947, 966, 951, 834, 259, 229, 873, 1365, 77, 960, 761, 398, 328, 699, 950, 872, 224, 861, 184, 1730, 292, 519, 79, 211, 853, 1547, 871, 1007, 331, 1464, 638, 483, 43, 1788, 817, 347, 1222, 275, 609, 2005, 927, 1271, 504, 759, 70, 1237, 657, 114, 1120, 381, 1010, 1052, 1737, 295, 573, 1915, 92, 474, 140, 87, 1089, 1797, 838, 874, 167, 350, 689, 1801, 376, 67, 1031, 1362, 344, 480, 716, 445, 49, 1295, 249, 833, 338, 573, 493, 180, 358, 333, 535, 217, 180, 1603, 740, 720, 771, 330, 1413, 69, 669, 887, 262, 236, 588, 758, 1843, 611, 253, 71, 932, 546, 379, 1637, 85, 1833, 531, 337, 407, 165, 300, 258, 362, 235, 340, 889, 1881, 1169, 270, 564, 84, 338, 232, 337, 357, 221, 521, 609, 961, 256, 714, 239, 589, 1020, 89, 675, 387, 1273, 537, 645, 284, 736, 310, 106, 311, 846, 1272, 1274, 3039, 154, 271, 747, 153, 474, 672, 497, 473, 160, 728, 163, 409, 956, 270, 122, 873, 160, 145, 726, 186, 1347, 469, 695, 543, 522, 2148, 1325, 188, 2058, 1571, 3409, 2370, 1809, 3672, 638, 580, 53, 30, 473, 1363, 791, 140, 480, 1926, 1240, 807, 1926, 407, 322, 362, 107, 254, 1273, 497, 347, 1407, 160, 224, 445, 374, 253, 624, 467, 717, 700, 429, 560, 256, 198, 582, 866, 64, 4001, 278, 499, 509, 63, 247, 209, 859, 225, 182, 247, 367, 548, 495, 828, 305, 280, 994, 488, 128, 287, 1192, 968, 388, 635, 1311, 330, 304, 1895, 1301, 573, 386, 819, 605, 415, 469, 842, 597, 433, 474, 419, 1595, 439, 188, 141, 179, 160, 185, 115, 524, 1071, 238, 475, 178, 132, 604, 155, 1948, 304, 1145, 273, 624, 1330, 1323, 1121, 603, 91, 1941, 1478, 56, 1948, 1284, 965, 901, 1520, 639, 1247, 120, 1126, 290, 81, 522, 756, 495, 588, 284, 944, 1523, 550, 658, 897, 1168, 390, 1263, 486, 1600, 281, 266, 557, 1504, 508, 954, 659, 1883, 1201, 1518, 990, 1666, 1925, 1960, 347, 1077, 1089, 755, 273, 238, 846, 74, 210, 825, 80, 388, 438, 257, 429, 806, 753, 850, 57, 398, 1328, 1255, 567, 1315, 443, 550, 439, 421, 489, 776, 1871, 126, 1796, 162, 451, 991, 692, 502, 893, 610, 84, 99, 493, 259, 678, 228, 309, 236, 550, 266, 1070, 891, 1495, 251, 440, 1256, 766, 71, 3979, 262, 243, 320, 130, 327, 2154, 1897, 704, 62, 377, 177, 1657, 124, 1357, 483, 458, 279, 2009, 627, 466, 1233, 309, 514, 321, 309, 1740, 50, 1031, 767, 389, 110, 476, 671, 376, 252, 360, 105, 255, 382, 1475, 271, 359, 812, 257, 1496, 1394, 3701, 761, 354, 447, 401, 101, 967, 46, 412, 272, 496, 844, 3202, 379, 645, 1262, 222, 416, 228, 807, 901, 317, 294, 1167, 1624, 238, 373, 84, 393, 1239, 135, 49, 728, 1172, 105, 1704, 332, 508, 320, 849, 265, 490, 573, 319, 927, 219, 276, 473, 2655, 1587, 41, 241, 1446, 264, 2114, 573, 196, 97, 195, 617, 382, 919, 304, 41, 181, 799, 974, 505, 596, 1696, 973, 673, 2015, 982, 1906, 687, 1914, 1079, 1365, 235, 377, 636, 225, 934, 1951, 1186, 1656, 350, 562, 566, 571, 495, 597, 987, 271, 721, 1400, 911, 303, 1224, 650, 491, 308, 702, 129, 585, 364, 449, 252, 314, 1769, 2633, 1894, 794, 825, 718, 771, 246, 252, 1542, 213, 2036, 669, 226, 1173, 127, 686, 674, 960, 1705, 60, 587, 78, 909, 326, 350, 352, 554, 921, 1437, 116, 255, 445, 205, 406, 427, 464, 1531, 384, 618, 891, 598, 468, 319, 600, 177, 595, 188, 1274, 206, 1372, 527, 166, 271, 51, 188, 3963, 403, 288, 18, 72, 328, 45, 226, 312, 36, 181, 57, 645, 53, 84, 86, 908, 224, 294, 412, 499, 130, 490, 650, 374, 1043, 647, 733, 205, 1228, 1005, 1750, 1026, 183, 174, 408, 1880, 118, 256, 368, 207, 1502, 159, 200, 1241, 1954, 957, 557, 225, 201, 357, 3538, 409, 679, 427, 349, 272, 822, 481, 116, 764, 558, 259, 636, 469, 597, 557, 282, 126, 1713, 281, 710, 317, 2690, 444, 222, 1482, 1293, 166, 1084, 1879, 2099, 870, 825, 295, 3799, 1002, 589, 591, 1086, 486, 220, 1204, 50, 142, 73, 154, 772, 636, 425, 1506, 531, 35, 247, 362, 347, 71, 389, 993, 167, 864, 246, 8308, 386, 544, 831, 320, 1421, 410, 29, 715, 51, 707, 502, 625, 288, 791, 1090, 1597, 320, 38, 332, 63, 421, 59, 1801, 195, 580, 459, 246, 1094, 768, 304, 576, 1725, 503, 1330, 903, 400, 1527, 607, 395, 245, 1155, 459, 86, 1912, 407, 1377, 708, 194, 356, 1167, 979, 139, 93, 1024, 4977, 1323, 476, 445, 693, 180, 715, 698, 321, 248, 1005, 260, 244, 241, 571, 458, 1175, 344, 1865, 318, 236, 450, 39, 176, 318, 323, 1544, 152, 754, 340, 170, 1377, 312, 357, 774, 217, 212, 1069, 128, 216, 3427, 333, 598, 1069, 1636, 303, 162, 59, 299, 482, 286, 500, 233, 324, 145, 262, 2387, 360, 874, 493, 651, 1000, 838, 621, 1225, 596, 741, 159, 521, 82, 926, 910, 570, 771, 350, 1078, 573, 363, 330, 217, 1318, 520, 189, 1488, 359, 1956, 1632, 941, 1651, 981, 534, 1949, 538, 389, 916, 2031, 1072, 247, 165, 275, 828, 261, 432, 931, 955, 762, 968, 1394, 201, 101, 587, 1353, 729, 1319, 1319, 837, 116, 1270, 1930, 332, 412, 306, 481, 428, 1447, 608, 303, 608, 1053, 731, 1353, 661, 342, 1348, 1169, 172, 215, 1364, 1771, 1144, 687, 337, 690, 605, 332, 782, 287, 795, 1466, 758, 102, 443, 136, 756, 752, 445, 734, 725, 994, 98, 733, 82, 665, 183, 1207, 702, 887, 685, 469, 657, 659, 2086, 278, 880, 137, 202, 406, 316, 1146, 216, 465, 138, 1502, 1791, 1586, 1692, 1893, 1267, 539, 986, 340, 1461, 1436, 52, 1031, 1318, 314, 181, 3099, 888, 1821, 120, 589, 2003, 1456, 90, 411, 1498, 722, 412, 1413, 162, 126, 577, 243, 427, 900, 498, 185, 243, 356, 554, 1740, 595, 285, 1056, 521, 311, 1619, 1623, 590, 1106, 1806, 553, 153, 745, 900, 1135, 202, 976, 905, 3277, 260, 587, 92, 700, 292, 333, 1318, 144, 312, 7738, 413, 171, 83, 448, 648, 849, 384, 660, 604, 1166, 282, 91, 585, 422, 226, 225, 536, 1076, 233, 971, 1063, 180, 85, 467, 290, 1005, 657, 1276, 606, 3550, 1525, 1265, 1187, 1040, 1923, 648, 914, 165, 1019, 169, 448, 400, 363, 403, 587, 102, 299, 339, 729, 1231, 122, 253, 188, 760, 379, 394, 281, 1273, 692, 585, 214, 378, 154, 112, 545, 687, 211, 718, 179, 356, 189, 823, 661, 65, 63, 1739, 119, 1213, 1634, 244, 1049, 1726, 632, 549, 1604, 316, 949, 573, 82, 182, 63, 321, 692, 387, 1746, 81, 244, 1744, 492, 1744, 2101, 1746, 372, 72, 900, 321, 322, 383, 5484, 441, 327, 905, 68, 902, 316, 464, 695, 76, 1390, 894, 5195, 902, 246, 377, 411, 904, 74, 69, 95, 73, 140, 6016, 1682, 1588, 69, 69, 65, 74, 130, 72, 149, 73, 92, 658, 675, 690, 618, 278, 46, 313, 186, 2035, 285, 4511, 452, 1626, 302, 518, 312, 456, 554, 232, 392, 333, 628, 193, 206, 284, 102, 400, 177, 544, 793, 1997, 2067, 2037, 65, 1708, 115, 751, 538, 495, 642, 344, 400, 371, 132, 684, 1552, 1055, 1733, 1924, 1650, 1158, 1004, 1879, 931, 1112, 968, 289, 152, 220, 172, 898, 477, 459, 181, 967, 122, 824, 1402, 1005, 1112, 678, 1109, 1121, 720, 171, 800, 1035, 286, 669, 642, 711, 680, 362, 864, 161, 621, 407, 108, 2086, 436, 1013, 3282, 1330, 477, 1054, 1827, 42, 46, 596, 598, 263, 429, 629, 1638, 1416, 541, 1310, 1539, 562, 562, 285, 222, 372, 355, 752, 519, 287, 1091, 1449, 319, 1266, 134, 816, 2038, 571, 1040, 296, 1150, 493, 898, 382, 1002, 341, 493, 1115, 647, 451, 491, 446, 588, 203, 175, 125, 105, 317, 119, 118, 112, 488, 231, 358, 101, 256, 86, 401, 538, 2936, 256, 496, 543, 453, 654, 518, 1929, 857, 376, 2355, 307, 285, 89, 2795, 1905, 95, 1352, 1448, 1325, 761, 1855, 433, 1949, 1718, 52, 373, 709, 111, 836, 539, 412, 50, 2368, 553, 696, 870, 1276, 558, 506, 1975, 666, 125, 601, 1006, 4782, 118, 118, 36, 545, 1270, 1351, 1040, 1687, 67, 238, 1299, 172, 809, 1417, 3955, 1259, 651, 856, 843, 845, 1551, 1378, 1609, 1532, 1492, 1622, 1550, 4793, 915, 1492, 1263, 1428, 1527, 519, 1322, 1612, 101, 64, 678, 1034, 670, 1644, 101, 1321, 1070, 1700, 1193, 2771, 2747, 945, 547, 1465, 1470, 460, 1785, 170, 49, 1542, 1853, 324, 77, 1310, 3263, 1298, 744, 528, 324, 580, 127, 858, 493, 1799, 2010, 521, 58, 652, 797, 771, 550, 774, 110, 79, 118, 593, 265, 205, 109, 556, 3198, 815, 968, 1483, 204, 431, 36, 899, 429, 54, 219, 367, 712, 252, 427, 599, 391, 381, 547, 1812, 672, 54, 406, 330, 1182, 104, 4360, 66, 1082, 1344, 75, 133, 68, 332, 1946, 1911, 633, 413, 1343, 501, 599, 571, 135, 745, 1127, 695, 378, 267, 77, 3322, 76, 191, 4368, 375, 748, 353, 697, 83, 675, 144, 391, 601, 765, 299, 775, 295, 116, 297, 432, 124, 1011, 431, 544, 168, 390, 42, 1772, 250, 376, 32, 152, 39, 197, 230, 746, 782, 444, 364, 1091, 1635, 940, 680, 213, 232, 77, 950, 270, 304, 432, 480, 1646, 887, 1290, 806, 268, 203, 274, 261, 61, 1690, 313, 188, 1193, 417, 1051, 1207, 213, 1382, 1539, 732, 144, 271, 1109, 140, 1348, 415, 950, 966, 259, 1106, 858, 546, 54, 683, 54, 123, 673, 547, 218, 987, 834, 189, 313, 64, 836, 437, 1673, 1212, 1481, 57, 558, 1526, 1952, 441, 2116, 1070, 1322, 1852, 718, 901, 1336, 533, 932, 644, 1370, 280, 568, 1454, 1461, 489, 431, 488, 241, 152, 254, 62, 190, 41, 1178, 78, 1525, 349, 669, 789, 1521, 1956, 540, 1936, 624, 579, 120, 2670, 594, 922, 126, 388, 477, 824, 338, 496, 1360, 515, 370, 216, 91, 75, 887, 376, 2442, 371, 537, 540, 2950, 299, 618, 309, 914, 422, 464, 210, 53, 322, 191, 303, 529, 121, 658, 687, 260, 1487, 552, 710, 475, 820, 150, 514, 740, 437, 709, 189, 715, 1844, 720, 968, 1526, 432, 1347, 1374, 1352, 677, 2011, 635, 688, 210, 1711, 1730, 1539, 562, 607, 198, 665, 121, 239, 4779, 124, 464, 905, 1385, 1059, 1169, 105, 1103, 1382, 677, 1915, 694, 99, 215, 1758, 1641, 1080, 763, 712, 842, 555, 287, 1353, 258, 71, 92, 191, 1523, 678, 1564, 35, 631, 303, 848, 1332, 83, 333, 90, 440, 405, 403, 55, 82, 132, 523, 343, 989, 655, 965, 391, 229, 252, 100, 218, 211, 256, 277, 306, 1036, 605, 1343, 244, 1770, 237, 3279, 911, 2482, 348, 224, 89, 1412, 904, 598, 1746, 912, 2706, 246, 56, 582, 190, 59, 1204, 563, 283, 1935, 433, 157, 2075, 482, 755, 1281, 1222, 616, 1179, 544, 742, 253, 710, 373, 1190, 580, 1229, 583, 566, 233, 621, 769, 130, 1009, 844, 1019, 894, 547, 522, 559, 1008, 1235, 485, 353, 652, 525, 613, 251, 966, 1038, 1527, 1347, 781, 449, 200, 454, 392, 131, 503, 179, 729, 378, 152, 300, 392, 576, 256, 210, 223, 164, 631, 522, 1004, 1945, 884, 628, 1101, 613, 233, 70, 77, 1263, 575, 383, 302, 302, 664, 979, 191, 1515, 1248, 39, 693, 978, 1156, 975, 148, 364, 888, 394, 1770, 129, 336, 199, 776, 253, 252, 332, 996, 771, 197, 1796, 1883, 211, 243, 247, 152, 190, 244, 740, 1016, 452, 151, 153, 1081, 336, 995, 983, 836, 969, 453, 1050, 431, 238, 861, 1350, 1257, 171, 1255, 148, 392, 291, 653, 2218, 1098, 298, 1242, 285, 635, 394, 724, 68, 1352, 178, 731, 156, 111, 75, 69, 379, 232, 1842, 197, 56, 33, 137, 270, 320, 112, 78, 501, 306, 481, 110, 97, 654, 79, 56, 347, 309, 171, 356, 880, 469, 527, 603, 718, 799, 74, 433, 847, 276, 321, 589, 513, 33, 300, 870, 573, 277, 636, 669, 620, 116, 1155, 609, 1342, 121, 633, 624, 120, 924, 619, 553, 57, 324, 543, 632, 1324, 963, 131, 230, 491, 1070, 758, 1073, 618, 1055, 340, 580, 2030, 1542, 145, 504, 953, 2013, 74, 119, 110, 439, 613, 534, 615, 110, 1551, 133, 613, 362, 611, 757, 1880, 719, 169, 790, 459, 761, 476, 231, 62, 335, 214, 308, 161, 865, 146, 92, 1888, 114, 179, 1689, 918, 1000, 1103, 294, 447, 867, 1546, 2710, 1129, 772, 589, 56, 1578, 760, 184, 85, 88, 189, 150, 125, 89, 162, 1971, 81, 95, 323, 202, 585, 433, 77, 312, 311, 311, 165, 151, 86, 97, 203, 1262, 1034, 625, 545, 865, 451, 596, 99, 440, 444, 829, 592, 1091, 106, 447, 285, 750, 1180, 603, 168, 241, 1195, 525, 138, 260, 206, 743, 254, 342, 1153, 273, 489, 828, 1673, 170, 131, 418, 1842, 515, 951, 793, 945, 876, 289, 137, 1180, 702, 299, 1660, 799, 1874, 638, 815, 784, 404, 902, 476, 648, 1314, 983, 495, 458, 418, 273, 89, 773, 45, 814, 293, 373, 656, 483, 877, 477, 219, 474, 564, 80, 828, 509, 177, 411, 896, 732, 524, 235, 806, 909, 955, 736, 717, 834, 842, 200, 718, 535, 148, 391, 1036, 528, 987, 609, 482, 87, 1566, 697, 1383, 690, 1964, 453, 617, 755, 1373, 104, 427, 504, 1699, 440, 904, 136, 296, 1390, 36, 980, 169, 233, 811, 217, 216, 166, 1133, 458, 216, 436, 294, 1107, 438, 224, 120, 224, 842, 262, 794, 622, 388, 687, 465, 691, 653, 830, 1285, 657, 686, 533, 539, 378, 646, 365, 532, 522, 525, 478, 190, 91, 619, 711, 1639, 237, 496, 185, 292, 345, 267, 322, 246, 982, 650, 168, 402, 505, 270, 707, 205, 429, 620, 626, 407, 315, 579, 527, 1219, 569, 451, 266, 99, 522, 353, 613, 334, 441, 629, 85, 464, 152, 153, 152, 496, 314, 171, 313, 1535, 348, 352, 1001, 211, 179, 167, 137, 280, 340, 54, 990, 191, 46, 498, 279, 85, 1272, 51, 277, 1128, 507, 44, 49, 88, 107, 105, 1499, 823, 1903, 297, 103, 329, 2206, 510, 55, 216, 1105, 107, 816, 1074, 246, 694, 678, 107, 114, 495, 1165, 1048, 217, 348, 294, 335, 553, 1772, 182, 266, 1229, 202, 535, 1112, 232, 674, 294, 405, 672, 470, 302, 167, 184, 546, 232, 455, 651, 313, 672, 203, 53, 1643, 204, 155, 1373, 1091, 1193, 648, 1123, 300, 2037, 627, 618, 657, 681, 1035, 458, 1126, 1260, 502, 538, 1545, 161, 517, 1053, 654, 551, 301, 759, 239, 558, 108, 235, 540, 518, 555, 567, 204, 518, 901, 658, 1333, 1410, 315, 270, 356, 697, 222, 386, 1722, 549, 552, 43, 754, 1027, 75, 53, 866, 96, 481, 566, 549, 549, 755, 1205, 136, 1312, 297, 1140, 121, 414, 1188, 150, 977, 121, 486, 991, 1264, 1081, 278, 1386, 133, 343, 130, 297, 214, 276, 340, 403, 341, 304, 648, 128, 202, 396, 389, 1169, 167, 156, 167, 2137, 1769, 343, 1762, 173, 668, 185, 132, 720, 661, 397, 488, 516, 691, 668, 851, 171, 652, 256, 151, 972, 871, 182, 367, 380, 1044, 1159, 923, 1567, 697, 759, 1249, 695, 170, 1289, 362, 767, 439, 134, 188, 388, 96, 427, 193, 86, 525, 620, 1436, 449, 888, 1038, 1274, 1760, 335, 1713, 889, 1997, 1490, 46, 1474, 1906, 608, 1192, 1797, 1892, 201, 475, 114, 620, 75, 536, 587, 163, 126, 71, 276, 56, 69, 65, 624, 53, 71, 685, 130, 614, 96, 577, 199, 822, 628, 267, 59, 928, 606, 103, 235, 1236, 1532, 70, 84, 85, 212, 86, 685, 736, 81, 607, 71, 54, 199, 1649, 829, 759, 768, 271, 647, 72, 534, 436, 67, 137, 442, 415, 1628, 450, 111, 75, 206, 68, 510, 512, 1439, 82, 151, 214, 264, 920, 1043, 1535, 1027, 881, 628, 628, 687, 722, 1340, 637, 579, 557, 105, 629, 577, 1981, 560, 1813, 593, 865, 1861, 264, 89, 129, 314, 198, 224, 561, 295, 202, 223, 1313, 115, 200, 151, 89, 548, 219, 331, 557, 1132, 306, 148, 515, 122, 347, 416, 536, 72, 738, 184, 313, 119, 132, 906, 518, 738, 279, 320, 327, 1059, 2052, 1234, 751, 667, 286, 1750, 307, 361, 327, 426, 114, 105, 1370, 581, 194, 226, 133, 207, 177, 373, 216, 302, 232, 1867, 510, 360, 663, 260, 289, 258, 324, 213, 523, 64, 126, 287, 101, 619, 313, 275, 223, 73, 241, 167, 954, 863, 239, 777, 593, 740, 98, 491, 267, 279, 1614, 203, 162, 850, 199, 270, 995, 798, 734, 134, 459, 701, 412, 864, 301, 625, 347, 552, 603, 288, 1271, 455, 455, 224, 603, 454, 86, 2038, 294, 682, 1310, 203, 993, 1310, 111, 233, 1338, 997, 1310, 317, 941, 210, 163, 186, 332, 329, 994, 872, 219, 217, 214, 605, 283, 1079, 1074, 374, 2095, 1407, 1029, 1082, 931, 1364, 1052, 750, 1224, 295, 853, 833, 763, 1112, 77, 1946, 1001, 980, 1001, 954, 973, 1946, 1112, 110, 243, 213, 296, 1075, 940, 1610, 660, 287, 1888, 137, 1090, 764, 37, 1229, 214, 134, 870, 95, 179, 295, 304, 230, 827, 455, 1678, 95, 681, 778, 410, 105, 475, 137, 569, 214, 420, 352, 578, 119, 200, 301, 711, 444, 1083, 629, 885, 1445, 759, 825, 102, 407, 636, 1122, 55, 727, 778, 490, 1020, 805, 695, 1158, 121, 642, 224, 169, 660, 77, 590, 285, 154, 1982, 450, 258, 151, 252, 167, 762, 110, 116, 340, 1262, 209, 565, 636, 302, 570, 317, 193, 839, 180, 1144, 809, 283, 471, 1057, 761, 465, 5090, 1460, 367, 657, 65, 1171, 669, 1505, 190, 210, 514, 700, 219, 111, 432, 736, 310, 666, 491, 329, 668, 514, 369, 127, 281, 93, 2746, 1227, 720, 2695, 907, 252, 137, 166, 1278, 856, 414, 634, 642, 709, 617, 1821, 958, 36, 1006, 822, 599, 122, 879, 265, 1486, 4407, 861, 983, 1665, 165, 929, 181, 251, 158, 887, 604, 37, 380, 2661, 46, 1259, 309, 585, 508, 571, 1205, 372, 970, 318, 1033, 53, 253, 76, 209, 147, 344, 1916, 182, 451, 2626, 167, 207, 159, 601, 205, 1010, 181, 2923, 765, 1787, 1736, 588, 493, 905, 481, 99, 341, 66, 43, 706, 614, 111, 438, 115, 790, 76, 283, 43, 199, 909, 84, 99, 284, 1201, 357, 48, 2516, 1344, 1341, 696, 425, 1342, 1313, 1347, 1339, 5326, 1363, 1311, 221, 590, 342, 2120, 320, 227, 611, 1068, 475, 389, 53, 216, 1483, 1701, 1185, 394, 1146, 1969, 1064, 1970, 74, 414, 706, 169, 522, 1695, 781, 129, 473, 290, 652, 982, 502, 503, 173, 1793, 429, 148, 314, 1081, 136, 543, 944, 157, 258, 142, 690, 160, 364, 1568, 880, 288, 297, 873, 81, 416, 625, 329, 900, 142, 353, 670, 633, 413, 360, 377, 687, 389, 491, 496, 826, 520, 754, 1687, 5462, 1072, 1035, 4257, 754, 737, 1718, 1125, 696, 27, 346, 584, 1265, 244, 802, 1296, 544, 71, 633, 480, 633, 1354, 374, 1633, 577, 219, 219, 539, 305, 1833, 212, 522, 233, 288, 703, 1042, 389, 163, 236, 1236, 1056, 1059, 1337, 120, 97, 639, 92, 386, 536, 1550, 444, 59, 365, 207, 90, 1046, 7071, 423, 664, 535, 3477, 134, 443, 104, 205, 387, 125, 182, 200, 189, 469, 69, 2053, 518, 1275, 211, 1274, 211, 177, 584, 772, 1314, 198, 194, 1277, 407, 957, 984, 1585, 284, 1207, 561, 185, 273, 543, 569, 38, 277, 667, 906, 30, 899, 42, 338, 430, 930, 272, 8, 1035, 750, 51, 514, 259, 498, 210, 1693, 269, 340, 379, 580, 195, 509, 1102, 481, 384, 744, 539, 332, 168, 1584, 490, 159, 159, 557, 347, 428, 96, 1126, 57, 224, 531, 189, 439, 680, 350, 1373, 354, 68, 1652, 528, 592, 497, 543, 337, 504, 499, 581, 513, 758, 1440, 507, 437, 658, 806, 130, 245, 497, 406, 325, 1663, 1253, 221, 228, 499, 439, 815, 440, 593, 817, 232, 839, 204, 781, 1081, 828, 252, 887, 1080, 94, 1040, 1684, 1927, 65, 37, 643, 403, 165, 1561, 594, 570, 932, 461, 923, 557, 460, 333, 350, 817, 273, 1039, 101, 175, 653, 224, 261, 303, 536, 1761, 566, 383, 903, 448, 773, 1200, 154, 153, 1707, 1241, 1362, 1523, 857, 343, 315, 1608, 1044, 235, 1172, 199, 1880, 710, 1070, 372, 754, 1060, 532, 877, 283, 1128, 44, 777, 2287, 488, 1013, 136, 425, 54, 12, 2980, 302, 444, 1505, 1545, 472, 3893, 40, 264, 1205, 850, 41, 83, 336, 225, 30, 751, 23, 100, 326, 316, 337, 295, 300, 306, 344, 223, 54, 368, 241, 243, 28, 479, 338, 539, 216, 211, 47, 1065, 525, 29, 54, 37, 488, 544, 40, 530, 156, 521, 881, 29, 374, 3738, 1326, 392, 2235, 899, 637, 1348, 817, 458, 44, 1522, 927, 736, 986, 41, 1970, 455, 857, 334, 2471, 1552, 485, 133, 1196, 628, 445, 3309, 2504, 1249, 4413, 65, 52, 819, 3073, 894, 994, 1446, 810, 753, 670, 845, 435, 479, 1799, 51, 266, 2067, 4908, 516, 867, 973, 28, 1220, 2546, 742, 826, 2061, 748, 36, 31, 420, 1404, 137, 1591, 590, 458, 516, 1039, 455, 1893, 426, 378, 502, 4221, 99, 203, 42, 52, 331, 1562, 333, 29, 30, 234, 70, 134, 1307, 693, 143, 1831, 38, 1348, 92, 137, 446, 33, 1273, 50, 1116, 68, 48, 155, 792, 924, 940, 653, 402, 1948, 84, 107, 3465, 21, 41, 2668, 2334, 2041, 2176, 4464, 1646, 2181, 998, 870, 532, 1907, 358, 48, 381, 1362, 54, 55, 461, 812, 31, 305, 175, 495, 60, 551, 104, 102, 673, 1820, 46, 27, 457, 947, 992, 887, 115, 130, 59, 1332, 582, 1618, 339, 446, 1693, 52, 128, 356, 744, 614, 1574, 443, 26, 2373, 1308, 426, 276, 560, 1027, 1492, 753, 680, 1085, 1240, 3659, 823, 459, 19, 78, 99, 36, 844, 96, 259, 742, 44, 159, 514, 2956, 642, 1277, 4248, 1550, 18, 1251, 627, 1134, 22, 37, 42, 636, 1063, 1987, 25, 1798, 840, 1582, 376, 1011, 558, 363, 319, 687, 1450, 134, 1672, 1034, 20, 1205, 43, 1285, 26, 22, 1686, 1109, 431, 259, 262, 517, 538, 1535, 653, 1135, 1427, 107, 1516, 763, 568, 2159, 3364, 835, 507, 67, 482, 1468, 4009, 30, 1454, 654, 1144, 787, 401, 404, 706, 2577, 76, 418, 31, 546, 504, 2060, 76, 313, 977, 1853, 70, 55, 12387, 642, 11, 87, 1801, 1899, 531, 1727, 1275, 481, 418, 477, 398, 1651, 13, 29751, 1991, 1165, 1696, 8, 39, 1750, 34, 1497, 823, 15, 1040, 2871, 14, 12573, 612, 1587, 45, 1213, 32, 608, 38, 59, 1801, 1707, 32, 597, 9, 3847, 1575, 2993, 1226, 649, 4746, 73, 1855, 982, 4233, 1497, 365, 28, 2399, 983, 297, 70, 215, 499, 473, 3150, 1338, 69, 1152, 2331, 1296, 3104, 124, 1451, 33, 993, 10, 62, 665, 825, 1802, 2619, 586, 151, 33, 1787, 549, 14, 67, 14, 592, 235, 15, 21, 146, 427, 1072, 67, 694, 196, 726, 359, 603, 972, 243, 258, 771, 422, 691, 49, 41, 309, 292, 611, 41, 445, 280, 743, 1736, 277, 190, 472, 1533, 201, 148, 906, 4514, 1581, 2187, 238, 598, 992, 622, 1389, 1527, 35, 817, 199, 273, 1474, 282, 470, 66, 615, 486, 1220, 755, 702, 404, 411, 114, 1867, 240, 20, 787, 84, 667, 667, 41, 357, 18, 494, 46, 74, 73, 306, 1473, 17, 151, 1324, 355, 280, 296, 473, 813, 2093, 65, 79, 651, 679, 125, 533, 3736, 2320, 895, 108, 11, 27, 1847, 431, 778, 654, 16, 435, 436, 44, 29, 28, 20, 863, 461, 1012, 1036, 189, 1717, 1996, 25, 218, 420, 685, 483, 762, 254, 409, 490, 333, 426, 90, 32, 315, 222, 436, 332, 614, 1072, 197, 467, 546, 4748, 409, 405, 223, 557, 322, 69, 14, 33, 883, 41, 65, 1068, 1063, 40, 334, 1033, 71, 32, 62, 62, 1071, 324, 59, 69, 696, 1098, 904, 364, 2045, 395, 63, 1421, 25, 663, 1261, 213, 572, 361, 361, 27, 296, 32, 876, 2072, 781, 238, 3416, 61, 32, 420, 206, 104, 31, 21, 1098, 527, 18, 70, 5111, 948, 77, 1937, 395, 52, 588, 2711, 74, 135, 91, 720, 1036, 82, 65, 48, 186, 1274, 24, 304, 283, 4330, 313, 1094, 2649, 2893, 22, 543, 263, 38, 616, 29, 381, 425, 14870, 532, 74, 562, 1425, 581, 1857, 144, 20, 734, 475, 27, 532, 32, 876, 93, 41, 20, 40, 31, 274, 566, 810, 2652, 36, 31, 34, 1042, 16, 1147, 1902, 2982, 34, 21, 373, 95, 525, 20, 849, 2533, 575, 1230, 2078, 8, 689, 193, 1061, 477, 34, 388, 581, 95, 48, 47, 1658, 96, 493, 370, 749, 1954, 3354, 707, 101, 1116, 183, 1117, 405, 103, 265, 319, 444, 933, 79, 810, 44, 815, 889, 457, 690, 1094, 61, 779, 903, 666, 810, 2337, 423, 30, 1087, 4928, 1917, 764, 1345, 43, 40, 2556, 21, 2556, 367, 518, 1685, 933, 539, 1993, 86, 1080, 21, 1989, 988, 1364, 1661, 65, 458, 465, 304, 69, 699, 1636, 1350, 765, 1113, 1346, 528, 299, 869, 1053, 32, 56, 29, 461, 125, 83, 62, 718, 37, 30, 1259, 1792, 73, 423, 36, 144, 48, 532, 635, 583, 2134, 488, 533, 414, 628, 756, 55, 225, 493, 502, 52, 56, 1252, 1331, 1157, 60, 479, 623, 753, 64, 419, 425, 585, 2792, 375, 1998, 2833, 22, 2829, 2496, 683, 551, 421, 1075, 46, 1704, 10644, 2973, 58, 2832, 68, 418, 46, 25, 42, 2469, 39, 804, 29, 1626, 27, 447, 1639, 781, 323, 801, 68, 811, 17, 448, 395, 10653, 68, 70, 80, 811, 397, 685, 3479, 20, 522, 1763, 29, 1518, 30, 2444, 563, 52, 75, 43, 917, 31, 86, 1041, 1371, 478, 1291, 583, 255, 298, 1039, 32, 2026, 74, 1211, 302, 30, 673, 458, 59, 1625, 405, 94, 63, 53, 44, 130, 29, 131, 22, 607, 1872, 763, 2034, 1125, 848, 610, 37, 3765, 2060, 4137, 3142, 245, 398, 1926, 1725, 2044, 1004, 1621, 4061, 520, 613, 486, 2073, 31, 218, 709, 443, 34, 25, 44, 161, 2076, 952, 51, 96, 34, 1221, 38, 722, 932, 1534, 1702, 60, 630, 808, 100, 359, 32, 1555, 32, 778, 328, 681, 27, 1027, 463, 60, 65, 1315, 18, 1319, 2907, 750, 52, 90, 2596, 672, 2992, 488, 727, 2973, 424, 965, 1323, 118, 18, 2685, 3063, 1884, 473, 572, 557, 349, 606, 534, 104, 410, 78, 1042, 22, 8, 769, 349, 2487, 2581, 332, 625, 1231, 950, 935, 58, 10001, 712, 1569, 1566, 285, 441, 130, 2479, 35, 516, 1062, 167, 1864, 1260, 1463, 1707, 196, 129, 1128, 68, 45, 1173, 51, 38, 26, 302, 1006, 726, 51, 28, 2619, 57, 18, 25, 874, 944, 28, 2386, 201, 44, 793, 148, 50, 31, 716, 1055, 44, 93, 718, 27, 955, 71, 397, 1572, 431, 21, 34, 147, 579, 2501, 60, 1301, 51, 1307, 49, 2304, 1023, 397, 694, 680, 393, 1188, 509, 536, 352, 347, 239, 770, 817, 501, 565, 910, 504, 867, 49, 582, 506, 1618, 2101, 53, 3883, 37, 1022, 1021, 1579, 57, 72, 157, 2126, 41, 125, 532, 19, 4884, 84, 35, 1412, 2315, 2057, 32, 367, 897, 101, 1312, 29, 810, 621, 604, 25, 25, 1517, 293, 612, 32, 686, 44, 1587, 653, 167, 25, 285, 4330, 32, 654, 146, 675, 1047, 4171, 9, 468, 1071, 38, 96, 1733, 109, 108, 594, 857, 473, 383, 73, 726, 42, 53, 409, 66, 540, 677, 21, 68, 2078, 2878, 20, 26, 2024, 14, 53, 2101, 430, 2693, 604, 20, 21, 2069, 349, 717, 572, 21, 1889, 1741, 570, 1098, 390, 3139, 798, 1090, 767, 46, 727, 584, 45, 4184, 1011, 3205, 1251, 319, 707, 501, 67, 2368, 632, 3564, 286, 595, 15, 372, 167, 38, 761, 596, 2752, 667, 1235, 128, 883, 1302, 81, 2131, 698, 2932, 834, 483, 124, 157, 1504, 260, 387, 300, 63, 1019, 403, 505, 139, 1391, 45, 88, 1649, 2983, 50, 43, 649, 704, 219, 716, 55, 971, 460, 472, 26, 500, 276, 80, 118, 340, 670, 1080, 1083, 46, 84, 72, 301, 67, 119, 1061, 1068, 64, 708, 63, 59, 187, 1090, 57, 66, 1055, 89, 108, 1064, 1048, 103, 1060, 598, 67, 1931, 103, 177, 1889, 36, 29, 1067, 85, 95, 103, 1086, 63, 78, 83, 1073, 1064, 87, 36, 1582, 37, 813, 84, 80, 712, 169, 769, 80, 1731, 1470, 718, 602, 66, 399, 409, 1212, 337, 492, 185, 518, 1143, 138, 35, 58, 1954, 40, 62, 496, 143, 34, 139, 1359, 64, 479, 1882, 302, 1064, 2019, 41, 123, 41, 46, 742, 176, 12, 875, 1100, 1030, 1131, 1052, 28, 682, 722, 41, 35, 705, 110, 718, 87, 90, 65, 681, 118, 35, 94, 72, 94, 96, 83, 846, 95, 96, 318, 682, 975, 65, 58, 59, 72, 54, 2083, 825, 825, 83, 39, 39, 945, 59, 869, 78, 1066, 1056, 1049, 1060, 1094, 66, 1068, 61, 93, 1238, 421, 81, 1059, 1090, 1073, 693, 21, 25, 1053, 1769, 23, 1071, 1064, 1069, 1086, 1091, 404, 1062, 1148, 1779, 92, 40, 1693, 64, 1818, 101, 129, 484, 874, 14, 34, 197, 64, 1765, 96, 87, 790, 85, 1037, 91, 100, 30, 56, 820, 66, 38, 77, 50, 366, 768, 633, 48, 1026, 59, 1006, 90, 29, 806, 58, 1068, 301, 69, 52, 1490, 1188, 1042, 81, 248, 491, 74, 99, 1054, 77, 343, 111, 754, 81, 111, 76, 85, 129, 112, 143, 140, 702, 173, 86, 832, 90, 73, 335, 312, 68, 202, 124, 35, 144, 694, 2519, 119, 424, 3576, 149, 488, 1254, 31, 947, 537, 937, 3504, 1941, 30, 588, 164, 224, 49, 136, 66, 141, 1722, 1137, 317, 392, 78, 313, 2049, 75, 164, 605, 1124, 540, 1482, 3068, 2223, 269, 129, 1067, 946, 12291, 319, 258, 4197, 1325, 2399, 292, 2008, 71, 92, 93, 1213, 32, 310, 87, 89, 76, 687, 94, 820, 111, 35, 68, 101, 40, 662, 101, 65, 81, 83, 738, 79, 70, 72, 424, 59, 77, 838, 78, 1397, 97, 1066, 118, 76, 120, 82, 1898, 302, 68, 61, 41, 126, 121, 94, 81, 65, 987, 102, 498, 90, 106, 53, 58, 51, 33, 50, 64, 162, 508, 534, 647, 1058, 671, 1094, 1060, 92, 489, 683, 1057, 74, 28, 69, 827, 54, 23, 173, 233, 1078, 1300, 75, 670, 1109, 937, 1203, 297, 2053, 439, 1603, 386, 1268, 70, 389, 1474, 123, 58, 1422, 1864, 279, 1175, 727, 797, 20, 43, 668, 104, 452, 74, 50, 28, 37, 56, 480, 50, 28, 1851, 54, 30, 540, 74, 787, 762, 597, 64, 63, 43, 139, 79, 59, 56, 107, 1235, 27, 41, 52, 1651, 1249, 805, 53, 283, 258, 562, 2134, 49, 1240, 3210, 126, 39, 852, 640, 41, 67, 789, 38, 55, 36, 794, 793, 1196, 34, 1186, 39, 1221, 1885, 769, 1173, 75, 159, 975, 700, 822, 721, 706, 785, 1638, 167, 1153, 613, 741, 712, 44, 698, 108, 54, 1089, 176, 356, 1045, 1154, 523, 1045, 53, 30, 24, 556, 42, 38, 359, 2022, 59, 29, 138, 33, 988, 63, 233, 1051, 24, 51, 76, 674, 24, 676, 638, 16, 1071, 773, 477, 56, 766, 96, 80, 50, 89, 43, 587, 98, 696, 167, 267, 1546, 759, 61, 311, 1096, 91, 1047, 286, 1110, 836, 549, 1052, 87, 62, 694, 606, 1348, 52, 298, 22, 72, 32, 89, 66, 1192, 55, 1491, 40, 54, 1271, 1337, 29, 633, 478, 537, 18, 425, 779, 606, 77, 69, 75, 28, 97, 65, 31, 22, 44, 1070, 1053, 18, 1067, 49, 54, 814, 1031, 67, 327, 58, 1898, 608, 476, 56, 383, 603, 683, 50, 88, 72, 205, 602, 1059, 48, 15, 52, 211, 278, 159, 488, 233, 106, 397, 72, 1248, 681, 106, 203, 244, 169, 678, 230, 40, 307, 328, 325, 109, 235, 1290, 556, 83, 97, 163, 30, 46, 638, 182, 474, 81, 988, 1696, 29, 51, 25, 47, 41, 461, 24, 37, 73, 31, 52, 29, 74, 16, 100, 149, 21, 75, 691, 680, 620, 111, 57, 82, 34, 1670, 651, 98, 104, 730, 124, 170, 58, 1046, 57, 67, 7716, 7658, 755, 71, 1055, 1100, 1085, 106, 1088, 1067, 1093, 1052, 316, 567, 60, 530, 2362, 3227, 3805, 1488, 41, 1466, 3198, 846, 31, 817, 539, 2503, 688, 3442, 1257, 98, 533, 2371, 195, 3363, 922, 4789, 206, 558, 1169, 1479, 541, 30, 596, 61, 98, 434, 1308, 473, 2058, 1781, 3474, 613, 630, 1293, 1317, 426, 89, 620, 84, 84, 503, 75, 566, 47, 317, 69, 664, 90, 689, 694, 202, 2060, 1538, 665, 319, 40, 422, 926, 39, 57, 40, 2946, 1245, 575, 35, 26, 8, 1094, 2137, 768, 31430, 378, 859, 43, 1744, 80, 43, 1979, 75, 287, 58, 338, 1050, 75, 61, 1098, 115, 1037, 56, 1779, 38, 848, 895, 3354, 897, 839, 1770, 3216, 4059, 419, 448, 445, 2022, 2100, 805, 46, 1728, 52, 1371, 841, 29, 1027, 323, 669, 22, 21, 24, 27, 7, 970, 72, 820, 1860, 1341, 223, 411, 902, 366, 25, 439, 89, 130, 603, 1188, 400, 477, 1192, 333, 419, 3131, 39, 2217, 127, 3532, 642, 2562, 4366, 2221, 268, 21, 669, 1197, 596, 1382, 1050, 374, 374, 366, 3078, 12686, 667, 714, 1240, 1296, 1997, 206, 36, 1051, 1077, 1067, 182, 91, 663, 81, 131, 390, 1235, 21, 636, 3130, 38, 55, 74, 2482, 1579, 564, 98, 624, 1549, 1222, 1247, 51, 1353, 1953, 1253, 1585, 1168, 580, 18, 3421, 1431, 101, 2328, 3734, 1942, 474, 1089, 773, 1667, 1704, 87, 547, 14, 31, 2230, 406, 1747, 713, 873, 2487, 3458, 11, 699, 1315, 160, 1106, 357, 947, 2998, 43, 905, 483, 556, 1130, 1514, 639, 766, 917, 820, 1073, 991, 620, 795, 135, 782, 934, 1072, 466, 63, 1498, 76, 20, 449, 1272, 298, 1441, 1015, 324, 96, 1629, 736, 1743, 236, 2191, 324, 961, 591, 1654, 982, 151, 188, 132, 1532, 41, 41, 40, 949, 720, 32, 323, 1532, 1382, 127, 214, 23, 2421, 30, 1332, 104, 1165, 3304, 853, 548, 258, 29, 729, 648, 2791, 97, 3795, 498, 494, 872, 29, 944, 3324, 32, 1291, 42, 385, 2508, 550, 809, 441, 22, 467, 2922, 47, 987, 1254, 121, 91, 38, 774, 1260, 1268, 1690, 425, 619, 1721, 1118, 51, 2319, 40, 58, 959, 1246, 1378, 67, 1033, 141, 17, 419, 16, 166, 831, 3571, 599, 2223, 2055, 118, 507, 4129, 3490, 2177, 1361, 429, 587, 1603, 758, 1016, 837, 1112, 827, 1225, 749, 897, 761, 739, 537, 26, 1184, 50, 804, 423, 443, 742, 47, 261, 39, 330, 750, 377, 280, 431, 742, 750, 748, 248, 67, 440, 847, 86, 299, 428, 738, 392, 750, 1439, 981, 924, 275, 1248, 32, 2192, 66, 19, 499, 747, 2231, 2029, 1229, 2010, 1273, 5749, 1809, 326, 988, 53, 23, 618, 72, 58, 441, 773, 1265, 1114, 211, 2079, 549, 112, 49, 55, 454, 767, 57, 133, 425, 55, 155, 237, 81, 636, 890, 1998, 45, 1146, 192, 11927, 437, 127, 2865, 942, 1643, 949, 366, 913, 344, 1556, 315, 562, 151, 116, 1671, 730, 1260, 141, 179, 514, 471, 165, 484, 483, 132, 127, 1034, 667, 1811, 1685, 1855, 520, 17, 1704, 89, 1080, 44, 20, 46, 1079, 94, 94, 1702, 88, 29, 39, 630, 40, 1884, 1709, 6676, 762, 38, 754, 628, 344, 785, 78, 45, 36, 2273, 1452, 2261, 119, 1400, 58, 41, 200, 2908, 1441, 27, 31, 58, 3041, 162, 119, 56, 1624, 543, 2250, 78, 687, 2910, 2487, 58, 61, 1759, 565, 638, 416, 517, 52, 1048, 296, 701, 1715, 72, 1133, 255, 3779, 2449, 902, 399, 998, 243, 28, 704, 998, 1080, 5338, 4641, 501, 1944, 359, 1170, 4118, 64, 30, 5136, 1880, 1370, 1032, 17, 34, 71, 140, 1570, 50, 35, 149, 71, 328, 2061, 53, 2075, 36, 3063, 178, 24, 168, 144, 398, 22, 22, 54, 43, 386, 273, 38, 522, 96, 24, 14, 177, 551, 806, 32, 54, 799, 1768, 81, 59, 2516, 38, 594, 1379, 15, 1054, 2944, 57, 729, 463, 1421, 616, 413, 35, 442, 736, 628, 45, 4242, 346, 418, 57, 174, 153, 381, 1310, 499, 1438, 14728, 23, 2814, 1301, 134, 88, 1301, 723, 75, 2436, 52, 52, 52, 66, 63, 1109, 403, 136, 1065, 1398, 1598, 32, 781, 24, 21, 40, 653, 4845, 4996, 324, 772, 307, 243, 85, 520, 1737, 2939, 1658, 468, 3086, 2182, 1055, 443, 23, 784, 59, 21, 51, 17, 419, 586, 1387, 10, 23, 1977, 1212, 1009, 64, 647, 520, 644, 326, 202, 1509, 1381, 907, 28, 1244, 675, 397, 106, 2825, 3461, 183, 2393, 1526, 402, 288, 2972, 29, 1045, 21, 2594, 2560, 700, 1023, 1211, 340, 1116, 169, 436, 322, 2822, 1276, 1294, 610, 9327, 1676, 849, 921, 798, 1389, 2036, 1025, 54, 1582, 463, 1581, 57, 72, 1656, 532, 444, 368, 1079, 55, 245, 1174, 1882, 1763, 67, 19, 521, 18, 956, 1548, 250, 3329, 1045, 1505, 2034, 667, 395, 928, 244, 1168, 61, 696, 450, 397, 1020, 808, 12, 1792, 1024, 525, 35, 3594, 1016, 37, 431, 1695, 1529, 299, 542, 42, 42, 396, 55, 868, 342, 416, 914, 85, 90, 1855, 416, 4254, 261, 10, 385, 51, 23, 328, 885, 482, 729, 360, 101, 433, 1442, 97, 588, 1419, 93, 594, 353, 434, 68, 17, 31, 383, 2062, 2052, 617, 412, 239, 257, 1277, 486, 1020, 678, 2278, 24, 719, 60, 95, 495, 1531, 145, 1431, 31, 1364, 575, 2088, 1839, 52, 219, 1468, 639, 91, 1477, 70, 1275, 1515, 537, 212, 207, 1706, 299, 992, 6338, 606, 61, 1142, 77, 1852, 635, 594, 6337, 47114, 50, 1216, 37, 477, 306, 41, 768, 952, 2153, 49, 405, 845, 2851, 545, 463, 528, 45, 82, 41, 34, 257, 423, 89, 1122, 295, 5799, 42, 852, 370, 173, 58, 23, 3243, 4347, 382, 20, 62, 49, 689, 487, 716, 1768, 596, 746, 794, 451, 805, 1894, 580, 745, 3176, 23, 73, 39, 74, 21, 67, 412, 955, 86, 515, 45, 107, 942, 68, 505, 102, 650, 108, 1320, 144, 548, 90, 167, 159, 71, 428, 26, 22, 55, 39, 44, 28, 264, 41, 1871, 105, 1481, 1034, 988, 234, 1305, 502, 512, 322, 395, 1324, 151, 1230, 712, 17, 1794, 1616, 1163, 4194, 1092, 4183, 1549, 1083, 1180, 78, 917, 1059, 660, 10518, 2708, 1073, 697, 17, 1175, 2731, 1142, 73, 818, 57, 96, 105, 826, 518, 996, 1104, 10506, 1005, 490, 2671, 1754, 2020, 25, 1695, 768, 574, 61, 82, 49, 2707, 23, 673, 2556, 1396, 2538, 614, 62, 475, 43, 36, 265, 53, 77, 18, 529, 21, 2074, 64, 3828, 3454, 1078, 35, 1438, 461, 680, 314, 66, 15, 18, 2052, 583, 49, 405, 1016, 532, 957, 348, 61, 202, 1531, 32, 2192, 1162, 927, 1709, 902, 677, 1724, 1922, 276, 802, 78, 1177, 1160, 27, 696, 68, 35, 39, 1270, 1955, 766, 715, 262, 649, 555, 277, 2302, 594, 35, 361, 54, 176, 879, 32, 460, 585, 18, 67, 579, 3256, 240, 131, 61, 410, 134, 190, 594, 85, 53, 639, 25, 738, 56, 686, 71, 88, 1134, 610, 1787, 137, 829, 69, 780, 99, 380, 361, 935, 731, 169, 47, 586, 1291, 972, 237, 935, 91, 1191, 111, 60, 138, 33, 1081, 55, 462, 21, 1081, 849, 261, 1420, 469, 99, 1124, 28, 81, 373, 2236, 3885, 458, 468, 13, 558, 1061, 721, 3859, 81, 227, 550, 1994, 20, 476, 46, 121, 1070, 1037, 1035, 52, 455, 58, 37, 1596, 69, 78, 1046, 55, 59, 948, 44, 1768, 312, 76, 2809, 74, 570, 4429, 2268, 437, 2447, 2192, 4032, 1461, 2982, 2407, 1607, 932, 3611, 1121, 449, 2276, 250, 3631, 197, 2385, 1099, 203, 157, 48, 2379, 298, 480, 622, 1855, 729, 1067, 288, 398, 564, 1828, 25, 1102, 24, 66, 2459, 591, 1505, 27, 1227, 730, 193, 504, 704, 676, 1159, 629, 574, 111, 728, 393, 526, 711, 692, 1424, 703, 17, 148, 367, 2498, 1335, 3051, 74, 1124, 4, 3006, 1309, 741, 2739, 775, 490, 1405, 1029, 1117, 493, 1667, 1315, 352, 2943, 1891, 2119, 872, 3119, 1500, 725, 1664, 65, 460, 861, 1119, 802, 836, 6038, 3628, 30, 560, 3083, 743, 1246, 2196, 1932, 1373, 2267, 634, 1039, 714, 989, 9, 1655, 970, 930, 31, 1116, 12, 558, 1513, 8, 1122, 630, 3143, 13, 821, 1723, 11, 5702, 1306, 9, 604, 12, 3584, 851, 11, 6318, 523, 2464, 1897, 1224, 23, 25, 1456, 62, 800, 36, 2991, 1473, 978, 341, 980, 54, 427, 545, 34, 66, 1585, 1751, 21, 1848, 190, 825, 1452, 58, 270, 20, 226, 468, 90, 209, 329, 1010, 679, 238, 460, 431, 407, 179, 50, 62, 63, 1791, 31, 59, 466, 1661, 24, 29, 846, 1455, 260, 1419, 121, 2869, 2187, 215, 22, 2307, 4921, 59, 2383, 20, 2317, 21, 38, 77, 33, 19, 339, 1295, 58, 365, 473, 2387, 1104, 98, 447, 712, 1054, 639, 559, 4999, 101, 57, 2375, 244, 461, 525, 1069, 4242, 1467, 21, 1584, 96, 326, 2574, 2773, 96, 276, 373, 718, 24, 1108, 489, 100, 1086, 180, 1711, 114, 2802, 84, 315, 426, 61, 1474, 515, 107, 27, 131, 2137, 283, 89, 1723, 2073, 973, 525, 2038, 520, 670, 363, 1035, 83, 103, 83, 111, 392, 381, 579, 365, 172, 185, 686, 888, 155, 214, 753, 403, 1183, 849, 94, 326, 26, 386, 4437, 1235, 77, 877, 635, 507, 548, 277, 4435, 240, 538, 32, 237, 1287, 228, 534, 1279, 533, 373, 228, 27, 80, 1448, 873, 1796, 564, 1910, 272, 1628, 434, 471, 1061, 24, 111, 3173, 723, 736, 32, 2817, 54, 4618, 686, 1488, 630, 1190, 300, 67, 56, 383, 10371, 87, 2475, 1189, 1080, 139, 1227, 883, 3438, 2189, 418, 7, 1817, 833, 623, 108, 59, 23, 34, 1791, 36, 155, 3332, 1074, 764, 532, 562, 7683, 774, 2077, 6578, 192, 2848, 423, 4028, 1087, 27, 616, 239, 406, 945, 671, 695, 69, 186, 479, 359, 1799, 339, 1567, 793, 391, 67, 225, 673, 1013, 722, 820, 560, 529, 66, 522, 819, 1182, 1452, 445, 1533, 1405, 884, 2997, 1647, 41, 983, 1420, 4023, 3077, 55, 4, 9346, 1060, 958, 328, 112, 297, 601, 30, 504, 19, 4666, 40, 1905, 31, 31, 827, 13048, 376, 66, 391, 312, 335, 376, 232, 2391, 1301, 1061, 1469, 428, 187, 323, 722, 1101, 965, 966, 230, 1606, 586, 1024, 539, 11, 1557, 46, 577, 2433, 560, 2632, 2185, 3454, 2926, 50, 2867, 965, 623, 2055, 724, 2175, 996, 32, 506, 566, 2505, 29, 1384, 602, 52, 85, 77, 146, 203, 105, 21, 361, 1038, 1517, 968, 47, 933, 806, 512, 40, 624, 221, 2827, 613, 165, 725, 66, 275, 247, 31, 70, 157, 317, 1287, 64, 3051, 126, 3037, 356, 331, 801, 1185, 671, 1166, 166, 1219, 1114, 827, 1031, 557, 158, 411, 584, 35, 45, 178, 58, 44, 46, 99, 282, 2702, 782, 351, 665, 74, 131, 89, 598, 144, 88, 345, 1034, 63, 115, 204, 103, 1116, 492, 397, 37, 1083, 445, 279, 1632, 632, 403, 631, 531, 140, 39, 1418, 678, 1156, 627, 23, 36, 312, 1334, 155, 2449, 1630, 1521, 938, 23, 392, 1767, 7272, 853, 3441, 4085, 591, 440, 834, 55, 60, 2190, 75, 589, 42, 547, 14278, 45, 16, 1150, 43, 610, 1876, 563, 61, 2051, 907, 692, 1206, 796, 144, 5976, 578, 80, 25, 144, 101, 214, 46, 421, 432, 34, 330, 23, 71, 43, 2403, 1625, 4355, 1065, 172, 19, 1127, 15, 65, 131, 1115, 38, 15, 1782, 29, 44, 19, 1330, 22, 45, 60, 606, 954, 1074, 441, 50, 283, 1127, 32, 144, 71, 296, 37, 1001, 17, 536, 5155, 161, 1168, 41, 51, 41, 6663, 2621, 856, 60, 3731, 26, 122, 71, 637, 1683, 37, 117, 479, 140, 994, 148, 1822, 1654, 832, 1733, 925, 645, 335, 62, 52, 779, 23, 182, 147, 12740, 169, 413, 1497, 465, 610, 37, 1055, 1114, 353, 173, 843, 53, 2012, 1100, 1224, 1957, 1327, 826, 801, 898, 839, 976, 3499, 385, 640, 40, 26, 1961, 105, 887, 22, 1474, 1743, 1298, 390, 599, 119, 1035, 346, 1445, 478, 1739, 1287, 352, 430, 2828, 448, 1943, 680, 1166, 3430, 1025, 1256, 683, 31, 2574, 1994, 1276, 1845, 1568, 27858, 3385, 27, 1933, 11810, 30, 144, 73, 162, 277, 607, 4449, 528, 1510, 348, 2358, 2485, 370, 5320, 810, 3076, 606, 624, 515, 87, 4189, 602, 791, 109, 47, 3645, 1058, 321, 59, 39, 1672, 86, 509, 36, 158, 61, 794, 625, 110, 72, 9457, 44, 35, 48, 872, 494, 1047, 389, 740, 49, 94, 45, 58, 2112, 1467, 2141, 174, 1062, 46, 679, 6205, 1257, 1224, 48, 29, 64, 862, 73, 324, 73, 2773, 1289, 554, 581, 614, 60, 146, 1786, 1731, 15484, 56, 62, 21, 28, 45, 52, 2063, 2813, 690, 2315, 27, 62, 3002, 1401, 71, 437, 505, 552, 557, 75, 3685, 28, 60, 372, 3480, 11, 105, 62, 1885, 694, 3195, 106, 1943, 2000, 168, 2392, 390, 547, 2467, 52, 505, 50, 1253, 1178, 58, 758, 1898, 51, 2055, 46, 549, 3224, 167, 38, 47, 587, 3254, 4401, 3297, 1250, 165, 59, 875, 1211, 454, 74, 309, 41, 323, 328, 537, 484, 905, 769, 59, 64, 107, 98, 542, 290, 3451, 1363, 94, 757, 732, 88, 36, 51, 755, 809, 39, 85, 90, 121, 908, 28, 29, 646, 49, 1277, 409, 1010, 50, 95, 281, 614, 129, 1776, 489, 551, 107, 418, 71, 990, 66, 536, 75, 25, 63, 43, 29, 336, 2420, 55, 34, 196, 3931, 5937, 39, 18, 1442, 23, 1664, 28, 1033, 597, 266, 225, 27, 128, 34, 1064, 1067, 137, 1149, 129, 886, 450, 76, 61, 53, 56, 25, 41, 701, 1040, 199, 580, 1058, 163, 1216, 119, 666, 25, 260, 200, 939, 28, 286, 70, 290, 1495, 49, 97, 49, 1518, 274, 270, 507, 1009, 429, 41, 939, 107, 177, 82, 62, 26, 44, 728, 34, 41, 1825, 1532, 57, 475, 152, 1058, 92, 878, 71, 61, 35, 88, 985, 90, 825, 49, 433, 1112, 27, 173, 103, 54, 253, 44, 16, 265, 150, 1991, 2836, 188, 96, 26, 149, 540, 45, 33, 44, 1047, 40, 1416, 19, 408, 631, 777, 18, 414, 35, 4893, 1949, 526, 1171, 496, 2306, 569, 941, 1237, 631, 12, 333, 727, 73, 818, 625, 81, 16, 157, 683, 79, 176, 771, 929, 590, 555, 260, 1082, 728, 1433, 1541, 1523, 58, 266, 1293, 3172, 651, 2823, 1646, 1718, 3588, 383, 1064, 2360, 4193, 1784, 1230, 6514, 2148, 980, 5244, 1083, 2882, 351, 4374, 377, 2145, 1181, 1192, 31, 42, 2545, 257, 179, 609, 1203, 80, 58, 8, 56, 47, 770, 1732, 21, 4778, 25, 24, 522, 816, 6229, 1901, 929, 1003, 573, 2211, 1641, 142, 1162, 91, 10642, 71, 17, 934, 2945, 15, 1003, 3493, 459, 3737, 532, 69, 614, 1660, 472, 620, 158, 134, 90, 65, 1018, 58, 371, 636, 243, 816, 665, 171, 72, 509, 125, 4231, 1402, 3212, 351, 649, 1470, 701, 666, 683, 1191, 520, 152, 658, 449, 585, 744, 36, 392, 712, 41, 18, 169, 88, 590, 128, 1674, 448, 461, 104, 737, 31, 34, 1008, 908, 67, 46, 2171, 1161, 119, 684, 485, 486, 2169, 37, 917, 320, 15, 5668, 778, 556, 64, 18, 18, 33, 728, 2332, 21, 1350, 713, 223, 2899, 17, 45, 1176, 17, 67, 32, 114, 52, 15, 1368, 793, 105, 1060, 44, 1161, 925, 105, 57, 617, 1377, 44, 746, 28, 42, 1376, 1864, 105, 55, 17, 574, 1160, 20, 2024, 22, 349, 23, 998, 488, 1065, 576, 513, 48, 3183, 2918, 1584, 523, 452, 903, 865, 84, 146, 644, 301, 38, 51, 82, 1028, 981, 980, 1568, 200, 1402, 978, 978, 507, 1055, 64, 363, 13, 111, 279, 1020, 1478, 1234, 1657, 1344, 1251, 74, 1542, 78, 1312, 105, 3430, 302, 1714, 81, 1543, 1482, 405, 760, 2322, 684, 2105, 740, 145, 694, 75, 1368, 720, 811, 75, 16, 425, 5055, 1541, 4876, 369, 621, 791, 57, 998, 694, 1425, 2286, 4789, 985, 5446, 584, 1003, 477, 2160, 2654, 1221, 494, 419, 212, 5372, 61, 714, 687, 432, 55, 689, 914, 41, 52, 2155, 382, 422, 1181, 607, 1221, 326, 13, 1201, 589, 18, 33, 70, 47, 1292, 104, 431, 66, 77, 79, 71, 73, 1392, 185, 144, 126, 2175, 352, 3333, 924, 631, 38, 269, 1914, 913, 5094, 784, 405, 28, 7543, 1533, 781, 552, 420, 60, 602, 1651, 2314, 1054, 24, 679, 514, 15, 5345, 914, 5345, 2050, 4460, 903, 54, 1766, 82, 825, 26, 15, 2239, 987, 657, 82, 790, 1992, 2768, 1040, 1948, 51, 27, 43, 24, 10258, 936, 162, 364, 434, 777, 1977, 434, 216, 607, 109, 476, 59, 124, 489, 371, 499, 284, 734, 326, 102, 512, 302, 127, 326, 145, 405, 465, 139, 315, 437, 1848, 572, 1864, 2490, 542, 521, 61, 979, 423, 35, 755, 975, 286, 84, 51, 554, 13, 101, 403, 255, 799, 325, 877, 1432, 16, 838, 710, 255, 61, 94, 22, 94, 923, 437, 115, 34, 109, 106, 66, 279, 202, 118, 91, 35, 72, 89, 416, 56, 44, 1452, 196, 463, 768, 1191, 20, 1565, 263, 62, 175, 43, 98, 935, 45, 85, 56, 36, 542, 1564, 65, 392, 1093, 572, 1013, 65, 801, 432, 536, 178, 782, 40, 2433, 96, 1751, 838, 150, 275, 2401, 2395, 1272, 348, 128, 49, 1567, 254, 360, 4963, 45, 2696, 2049, 65, 614, 54, 384, 50, 1438, 8795, 2680, 15840, 20725, 3552, 605, 9334, 299, 574, 512, 50328, 3159, 1195, 4532, 50403, 1488, 526, 45, 1198, 486, 36, 1276, 24, 51, 1020, 78, 831, 314, 281, 627, 279, 38, 880, 142, 181, 571, 23, 204, 3693, 103, 821, 18, 616, 85, 5864, 872, 1007, 2487, 266, 898, 1324, 224, 2221, 309, 408, 985, 289, 1226, 48, 847, 41, 461, 136, 59, 136, 192, 36, 947, 51, 1941, 42, 954, 95, 98, 62, 493, 1472, 1089, 67, 57, 428, 1261, 289, 22, 31, 23, 1380, 660, 265, 1096, 1072, 5527, 4520, 2542, 1371, 1254, 2753, 2711, 408, 1004, 89, 49, 331, 639, 993, 2095, 31, 2048, 376, 50, 559, 114, 608, 334, 765, 460, 868, 882, 883, 885, 48, 887, 721, 890, 2301, 138, 85, 65, 58, 42, 1035, 44, 987, 366, 4376, 225, 55, 1352, 190, 58, 32, 191, 201, 98, 958, 169, 22, 567, 2668, 1476, 185, 62, 44, 2576, 1033, 1735, 1369, 1607, 262, 1820, 79, 25, 1001, 503, 130, 695, 237, 739, 1482, 171, 1367, 456, 1092, 1121, 247, 2817, 41, 39, 982, 208, 158, 182, 314, 4632, 157, 1747, 405, 404, 71, 355, 96, 364, 40, 1124, 1824, 548, 282, 154, 745, 273, 340, 167, 53, 7206, 37, 1547, 7278, 1585, 1091, 376, 4277, 23, 50, 401, 2055, 66, 759, 2104, 846, 110, 1253, 627, 1404, 50, 1277, 1035, 85, 55, 17, 9840, 2389, 501, 38, 2655, 36, 1528, 4118, 4922, 17, 1359, 32, 1991, 706, 10059, 925, 842, 9494, 2855, 862, 1664, 473, 1206, 32, 375, 297, 605, 154, 139, 28, 30, 1075, 36, 97, 401, 6962, 668, 433, 135, 143, 1501, 3164, 75, 24, 774, 71, 55, 333, 715, 134, 117, 42, 4957, 2507, 47, 66, 1440, 274, 289, 1499, 27, 334, 62, 316, 211, 31, 315, 1458, 119, 462, 41, 724, 32, 59, 2842, 637, 299, 325, 210, 40, 996, 41, 48, 29, 20, 61, 263, 1404, 295, 685, 152, 994, 1714, 53, 1826, 455, 49, 59, 1239, 536, 366, 75, 200, 1785, 93, 197, 126, 2333, 38, 50, 1064, 46, 63, 51, 80, 2058, 44, 100, 208, 569, 2445, 36, 148, 120, 69, 50, 828, 115, 197, 45, 471, 114, 183, 360, 29, 401, 31, 2569, 38, 112, 146, 84, 180, 230, 404, 98, 8904, 1610, 36, 105, 45, 231, 25, 1876, 416, 148, 574, 503, 52, 299, 757, 454, 40, 1429, 193, 472, 71, 290, 41, 1351, 31, 608, 786, 527, 933, 501, 106, 196, 1092, 1173, 567, 401, 718, 535, 414, 402, 573, 480, 810, 403, 68, 705, 1062, 1062, 412, 2102, 35, 1066, 82, 38, 2634, 101, 436, 212, 289, 70, 1333, 74, 41, 290, 57, 794, 2287, 975, 1651, 348, 1891, 1453, 532, 111, 1356, 1375, 447, 9, 9, 1919, 1642, 789, 508, 1654, 9270, 52, 141, 95, 23, 491, 111, 165, 930, 53, 72, 77, 60, 1218, 476, 295, 42, 54, 1178, 1434, 44, 44, 390, 132, 62, 595, 638, 792, 500, 298, 75, 5828, 79, 15993, 496, 1889, 198, 198, 92, 40, 531, 44, 79, 57, 518, 105, 764, 278, 595, 39, 35, 1599, 212, 3028, 42, 1019, 176, 93, 123, 85, 142, 58, 734, 74, 88, 30, 100, 251, 41, 85, 175, 818, 2026, 36, 27, 2653, 2652, 416, 41, 126, 38, 21, 308, 77, 741, 213, 212, 257, 9710, 3829, 34, 309, 3458, 3923, 1143, 115, 36, 833, 410, 1555, 25, 716, 1522, 314, 16, 260, 1990, 38, 177, 528, 39, 132, 41, 223, 492, 97, 464, 735, 36, 2536, 30, 108, 399, 37, 123, 445, 1092, 418, 76, 4695, 11975, 1524, 34, 539, 2167, 41, 249, 166, 741, 40, 686, 779, 74, 780, 41, 3367, 71, 370, 111, 158, 515, 31, 561, 166, 532, 106, 919, 917, 1156, 280, 497, 501, 503, 506, 506, 95, 508, 21, 149, 991, 1544, 221, 288, 208, 57, 64, 253, 1708, 676, 2446, 2383, 317, 2139, 663, 131, 30, 120, 1343, 2385, 2075, 1117, 1110, 1063, 1066, 42, 52, 57, 333, 1069, 1062, 1129, 56, 51, 42, 1073, 199, 58, 48, 69, 1062, 59, 883, 63, 389, 487, 787, 218, 698, 420, 736, 699, 1259, 219, 199, 702, 334, 510, 560, 648, 180, 368, 983, 1281, 500, 143, 992, 692, 178, 198, 502, 172, 473, 714, 680, 1158, 167, 232, 238, 227, 1972, 234, 2065, 227, 2083, 281, 225, 2030, 225, 229, 165, 60, 23, 677, 515, 71, 64, 93, 25, 1060, 35, 693, 712, 1057, 59, 14, 330, 710, 1053, 52, 61, 57, 73, 73, 1079, 62, 65, 73, 1078, 67, 73, 1079, 1105, 1105, 1076, 73, 1074, 67, 1053, 69, 690, 56, 1690, 61, 103, 65, 1060, 50, 52, 65, 57, 1690, 109, 96, 32, 525, 85, 90, 71, 45, 42, 655, 30, 101, 79, 30, 93, 93, 100, 891, 86, 893, 930, 894, 872, 939, 935, 958, 932, 945, 876, 891, 880, 946, 874, 327, 53, 31, 44, 85, 89, 94, 21, 896, 48, 12, 93, 94, 665, 41, 79, 68, 2009, 48, 1525, 69, 41, 41, 41, 1536, 1536, 36, 36, 34, 41, 66, 792, 65, 61, 92, 102, 63, 85, 92, 89, 88, 79, 71, 99, 90, 124, 1074, 78, 40, 37, 223, 122, 70, 84, 63, 103, 85, 61, 114, 150, 130, 965, 137, 154, 112, 43, 40, 112, 32, 90, 35, 1628, 106, 1934, 76, 412, 31, 45, 1483, 271, 489, 47, 30, 793, 1029, 900, 130, 23, 13, 31, 1289, 1554, 684, 466, 402, 39, 55, 63, 103, 87, 1073, 936, 45, 1339, 155, 94, 2793, 48, 1058, 475, 793, 63, 1537, 68, 980, 73, 25, 1059, 125, 14, 108, 84, 27, 566, 24, 105, 111, 17, 34, 185, 609, 33, 146, 45, 1372, 24, 771, 708, 24, 20, 849, 100, 20, 85, 63, 17, 28, 41, 44, 31, 96, 64, 21, 1053, 43, 69, 136, 59, 1057, 1063, 52, 68, 64, 46, 39, 32, 65, 55, 49, 121, 34, 33, 71, 1247, 1934, 1297, 1936, 3344, 6093, 821, 407, 2076, 2086, 36, 3121, 556, 2629, 868, 72, 36, 72, 1072, 74, 1074, 33, 1062, 400, 3007, 49, 143, 46, 50, 26, 1028, 8, 712, 1029, 31, 571, 37, 35, 258, 473, 1050, 22, 1036, 1045, 15, 30, 66, 938, 93, 226, 904, 661, 1064, 1403, 870, 1050, 46, 155, 356, 1049, 361, 1039, 8, 60, 525, 9, 2204, 26, 48, 1078, 997, 3697, 435, 560, 1528, 334, 3541, 549, 20, 66, 1083, 1057, 58, 60, 2144, 1041, 1044, 1122, 2416, 1043, 1156, 323, 209, 470, 34, 470, 30, 151, 1034, 39, 50, 814, 2280, 51, 40, 137, 12, 261, 1141, 396, 1085, 67, 874, 1383, 1041, 320, 149, 39, 497, 226, 454, 36, 39, 82, 389, 31, 1480, 70, 21, 2170, 1114, 38, 1332, 338, 1108, 12, 2032, 961, 1671, 1621, 16, 3139, 723, 9091, 2751, 2328, 1523, 2941, 1753, 1270, 818, 1250, 1175, 1937, 658, 1796, 2684, 10237, 2187, 316, 1518, 319, 1284, 2238, 3986, 887, 2189, 55, 801, 827, 585, 2833, 302, 3460, 1230, 337, 1982, 699, 15990, 906, 584, 334, 3462, 2979, 27, 569, 2285, 2807, 912, 1060, 7, 1236, 5037, 160, 23, 22, 647, 69, 4866, 4942, 14, 55, 1972, 1327, 762, 6, 24, 59, 112, 19, 316, 3979, 6713, 38, 802, 709, 1847, 2040, 3456, 2365, 114, 1433, 1809, 720, 45, 1095, 58, 2868, 109, 61, 1383, 550, 61, 2771, 84, 734, 703, 708, 167, 288, 60, 456, 1173, 844, 1196, 48, 1143, 5423, 581, 460, 13543, 553, 194, 1255, 534, 336, 715, 1028, 1599, 1724, 54, 561, 910, 2782, 3895, 2450, 870, 137, 8060, 779, 50, 85, 1884, 2710, 1804, 1189, 45, 7385, 1034, 144, 2291, 32, 1715, 57, 121, 64, 649, 37, 477, 499, 1307, 1846, 1342, 83, 653, 626, 360, 26, 21, 252, 9, 25, 3801, 24, 2150, 839, 215, 2325, 1926, 2694, 2731, 3938, 2654, 530, 51, 1297, 1032, 3922, 4908, 7351, 1169, 808, 3774, 157, 1327, 840, 65, 1407, 743, 2503, 823, 152, 1188, 1118, 20, 207, 37, 7828, 54, 33, 2576, 15, 53, 39, 929, 54, 1312, 1414, 620, 1510, 1533, 14, 4673, 4205, 130, 1025, 40, 53, 1169, 1557, 562, 346, 45, 5792, 1232, 13, 784, 1584, 645, 1559, 482, 1041, 609, 394, 1146, 791, 2095, 153, 146, 1055, 952, 109, 1416, 139, 376, 3657, 304, 1008, 348, 18, 179, 1054, 169, 4740, 1324, 1715, 2338, 718, 49, 574, 18, 129, 1898, 1332, 4855, 978, 42, 46, 421, 1557, 536, 361, 185, 1079, 79, 746, 1777, 103, 408, 61, 272, 1409, 710, 184, 1899, 99, 761, 743, 759, 30, 1631, 159, 5258, 637, 314, 2336, 66, 68, 25, 312, 243, 105, 6163, 896, 32, 439, 20, 71, 13, 313, 153, 26, 1043, 46, 1582, 1212, 1113, 83, 130, 267, 888, 23, 445, 92, 57, 66, 1131, 15, 1018, 57, 150, 1766, 1761, 991, 1950, 236, 593, 1073, 434, 120, 44, 794, 1667, 633, 559, 1457, 26, 55, 71, 1011, 599, 965, 811, 48, 1753, 550, 300, 2875, 688, 35, 9092, 1716, 891, 381, 1163, 414, 69, 789, 774, 233, 76, 54, 64, 298, 154, 373, 329, 1084, 483, 450, 441, 343, 443, 498, 491, 525, 385, 392, 100, 1091, 480, 505, 716, 268, 194, 1138, 425, 245, 877, 337, 379, 181, 865, 36, 192, 1686, 85, 550, 333, 325, 346, 345, 371, 633, 831, 344, 195, 477, 327, 223, 1074, 136, 1222, 599, 1233, 407, 708, 1199, 215, 356, 97, 599, 1143, 599, 393, 158, 281, 361, 178, 719, 221, 499, 390, 525, 72, 4, 488, 104, 405, 978, 994, 134, 196, 326, 257, 131, 205, 146, 231, 510, 338, 1384, 631, 267, 580, 249, 1028, 444, 483, 656, 449, 549, 1849, 115, 272, 437, 65, 183, 221, 255, 257, 892, 68, 546, 246, 806, 255, 304, 393, 595, 307, 910, 458, 168, 108, 557, 52, 396, 257, 394, 519, 185, 140, 308, 71, 665, 477, 82, 256, 360, 98, 641, 641, 179, 805, 181, 91, 1052, 162, 349, 1029, 1108, 518, 221, 358, 298, 95, 365, 261, 200, 1149, 805, 537, 498, 108, 90, 213, 705, 346, 348, 123, 780, 874, 883, 374, 49, 544, 86, 741, 139, 856, 236, 271, 935, 166, 338, 23, 329, 1083, 121, 159, 673, 919, 1283, 51, 684, 292, 491, 164, 304, 120, 116, 189, 36, 948, 27, 1274, 164, 457, 205, 439, 210, 100, 316, 1474, 210, 483, 97, 209, 210, 208, 825, 376, 484, 459, 491, 467, 823, 250, 317, 1058, 767, 329, 1018, 464, 164, 320, 157, 512, 682, 65, 136, 121, 166, 320, 295, 165, 59, 67, 310, 132, 154, 55, 36, 381, 1092, 481, 230, 1673, 290, 150, 517, 880, 1112, 155, 363, 516, 825, 757, 154, 141, 486, 285, 244, 293, 232, 141, 242, 277, 145, 154, 160, 299, 25, 196, 109, 157, 147, 37, 91, 144, 83, 52, 187, 147, 78, 151, 203, 23, 418, 52, 69, 146, 137, 539, 141, 130, 146, 110, 105, 189, 192, 173, 166, 137, 647, 398, 1318, 609, 626, 620, 55, 66, 408, 358, 755, 396, 601, 250, 66, 439, 152, 402, 386, 75, 31, 354, 551, 275, 670, 624, 247, 469, 134, 468, 178, 148, 117, 522, 1975, 353, 39, 826, 446, 897, 213, 156, 259, 390, 449, 377, 323, 324, 494, 309, 225, 68, 314, 338, 356, 300, 642, 319, 378, 497, 395, 293, 648, 292, 353, 385, 323, 384, 271, 605, 375, 324, 457, 356, 338, 400, 317, 231, 537, 1190, 1159, 534, 1631, 1885, 913, 216, 113, 1120, 736, 36, 63, 1162, 362, 220, 194, 81, 863, 223, 971, 530, 435, 1941, 576, 1511, 393, 397, 646, 72, 82, 555, 477, 1962, 286, 468, 550, 495, 375, 187, 23, 1455, 366, 715, 1426, 62, 369, 57, 336, 24, 77, 139, 104, 225, 23, 141, 140, 138, 224, 59, 198, 46, 296, 106, 33, 650, 184, 139, 355, 109, 60, 147, 224, 256, 130, 53, 331, 15, 277, 181, 125, 149, 26, 871, 600, 210, 1438, 1426, 1425, 1455, 669, 51, 1713, 592, 346, 230, 226, 819, 1521, 367, 728, 218, 430, 121, 229, 222, 536, 1769, 173, 492, 61, 607, 688, 473, 522, 457, 455, 40, 26, 438, 400, 461, 45, 318, 81, 25, 28, 147, 722, 331, 377, 532, 39, 469, 115, 200, 1285, 564, 631, 897, 879, 851, 175, 42, 887, 1277, 732, 1029, 572, 839, 744, 1181, 135, 861, 935, 1082, 1314, 41, 438, 568, 744, 94, 700, 1681, 155, 749, 1406, 592, 95, 69, 734, 152, 723, 164, 164, 743, 1693, 416, 576, 1964, 416, 214, 1930, 262, 578, 471, 395, 1919, 2133, 1936, 420, 690, 1906, 1823, 435, 1966, 690, 430, 368, 141, 344, 462, 1866, 1478, 1984, 953, 380, 281, 1885, 289, 690, 1962, 1940, 377, 230, 592, 409, 138, 512, 819, 794, 290, 428, 280, 42, 182, 316, 647, 24, 83, 198, 153, 129, 702, 285, 34, 289, 41, 381, 439, 224, 84, 82, 84, 540, 418, 430, 37, 137, 449, 92, 602, 194, 119, 302, 449, 190, 724, 37, 194, 88, 331, 267, 91, 50, 364, 502, 327, 435, 352, 440, 320, 192, 79, 691, 347, 570, 456, 634, 44, 315, 492, 500, 221, 127, 250, 105, 1059, 151, 204, 375, 436, 684, 475, 465, 490, 411, 869, 383, 302, 1302, 317, 626, 567, 176, 692, 579, 124, 305, 305, 458, 191, 225, 303, 194, 576, 1302, 174, 91, 305, 53, 510, 1633, 235, 88, 498, 54, 1075, 182, 34, 236, 192, 154, 229, 222, 174, 29, 161, 301, 701, 263, 54, 24, 320, 68, 42, 21, 130, 113, 91, 27, 210, 58, 63, 36, 108, 108, 472, 344, 559, 97, 346, 192, 463, 37, 425, 127, 230, 32, 121, 125, 523, 566, 264, 214, 226, 648, 195, 149, 232, 223, 630, 178, 205, 109, 445, 1638, 679, 256, 517, 325, 328, 155, 573, 283, 428, 176, 577, 193, 59, 237, 67, 116, 146, 220, 424, 120, 177, 60, 222, 186, 168, 184, 53, 25, 577, 187, 62, 29, 45, 511, 60, 186, 153, 57, 50, 323, 532, 215, 661, 358, 40, 215, 203, 344, 328, 111, 360, 468, 50, 280, 469, 53, 765, 39, 196, 56, 203, 335, 205, 205, 213, 210, 188, 37, 192, 173, 623, 806, 211, 166, 330, 321, 242, 186, 529, 57, 368, 319, 126, 203, 912, 369, 205, 187, 897, 83, 187, 290, 608, 270, 348, 67, 348, 230, 188, 509, 201, 370, 371, 374, 724, 494, 267, 361, 163, 236, 51, 532, 124, 62, 48, 192, 363, 703, 211, 352, 280, 742, 83, 369, 269, 139, 442, 352, 648, 1324, 32, 821, 368, 620, 630, 692, 502, 387, 380, 451, 302, 203, 397, 609, 586, 231, 381, 305, 348, 407, 48, 45, 182, 44, 228, 179, 596, 596, 34, 490, 143, 176, 158, 29, 742, 36, 356, 38, 122, 121, 301, 259, 225, 161, 120, 546, 243, 69, 202, 206, 191, 167, 51, 49, 173, 990, 718, 254, 771, 705, 882, 310, 945, 960, 88, 86, 878, 260, 802, 748, 1142, 517, 959, 306, 296, 130, 269, 63, 821, 355, 369, 426, 335, 300, 303, 443, 1346, 432, 1786, 351, 393, 455, 500, 397, 714, 575, 485, 289, 454, 285, 697, 276, 350, 1192, 299, 157, 1167, 362, 274, 96, 1968, 393, 197, 499, 278, 452, 359, 1150, 623, 448, 261, 650, 117, 126, 1658, 233, 177, 412, 505, 536, 206, 472, 398, 524, 237, 278, 1151, 551, 1797, 292, 375, 691, 834, 165, 158, 214, 510, 296, 508, 1467, 826, 676, 101, 412, 381, 475, 70, 15, 402, 92, 141, 379, 135, 163, 813, 442, 269, 210, 442, 400, 179, 456, 1353, 961, 529, 497, 146, 325, 248, 801, 93, 78, 157, 79, 513, 306, 646, 281, 753, 497, 1031, 401, 734, 945, 78, 307, 1048, 59, 485, 96, 504, 641, 142, 839, 559, 296, 926, 1016, 280, 351, 438, 2436, 59, 840, 70, 371, 273, 225, 500, 530, 555, 1569, 624, 578, 1363, 624, 359, 564, 362, 1005, 503, 569, 1118, 349, 374, 383, 554, 522, 332, 236, 22, 328, 52, 54, 369, 175, 645, 1415, 426, 163, 280, 458, 53, 171, 338, 22, 279, 480, 313, 345, 274, 1465, 311, 547, 333, 76, 411, 84, 59, 461, 287, 674, 249, 92, 423, 242, 323, 146, 37, 389, 421, 730, 181, 121, 324, 1674, 270, 553, 660, 553, 519, 522, 625, 118, 659, 315, 159, 606, 1681, 654, 319, 592, 130, 236, 445, 513, 280, 217, 181, 183, 653, 320, 240, 229, 278, 227, 518, 528, 84, 438, 442, 1174, 259, 467, 645, 535, 511, 249, 95, 115, 839, 279, 424, 494, 275, 94, 1207, 957, 91, 427, 843, 243, 374, 1426, 219, 137, 27, 136, 33, 149, 287, 1216, 141, 157, 54, 769, 157, 157, 136, 320, 136, 491, 491, 656, 266, 101, 484, 87, 215, 938, 220, 433, 499, 331, 545, 112, 246, 222, 2075, 195, 430, 59, 343, 530, 249, 524, 274, 563, 173, 849, 165, 269, 166, 282, 380, 54, 100, 293, 278, 270, 191, 464, 225, 339, 475, 631, 630, 282, 288, 60, 323, 382, 475, 305, 631, 1139, 2082, 455, 29, 316, 289, 1017, 472, 88, 1821, 210, 272, 341, 497, 275, 303, 50, 169, 322, 296, 34, 169, 129, 458, 474, 646, 691, 445, 207, 436, 117, 272, 827, 557, 2085, 741, 1840, 730, 200, 24, 39, 501, 105, 518, 233, 24, 693, 255, 146, 364, 286, 53, 146, 127, 18, 209, 148, 163, 356, 91, 162, 318, 378, 81, 189, 113, 298, 357, 151, 372, 241, 269, 24, 486, 313, 126, 180, 447, 60, 163, 379, 49, 441, 1014, 275, 198, 32, 57, 453, 1541, 57, 250, 360, 291, 569, 417, 1084, 481, 653, 313, 126, 287, 326, 243, 355, 230, 478, 331, 410, 454, 365, 1251, 325, 70, 400, 496, 432, 438, 659, 152, 542, 219, 248, 420, 355, 671, 413, 510, 678, 315, 330, 178, 1961, 311, 321, 430, 294, 551, 238, 119, 478, 455, 117, 401, 432, 1004, 469, 134, 668, 461, 339, 70, 441, 551, 458, 378, 457, 518, 471, 37, 353, 53, 213, 361, 356, 693, 455, 177, 752, 196, 549, 356, 67, 356, 85, 505, 345, 299, 324, 355, 450, 369, 505, 450, 46, 359, 381, 83, 358, 313, 144, 550, 551, 43, 382, 549, 550, 364, 194, 314, 707, 804, 1072, 200, 309, 454, 897, 571, 448, 242, 196, 178, 120, 1026, 344, 1405, 147, 1179, 1120, 482, 245, 534, 336, 395, 922, 506, 960, 278, 907, 458, 548, 444, 303, 860, 475, 366, 1104, 266, 423, 489, 96, 306, 372, 908, 458, 506, 92, 83, 464, 343, 322, 235, 191, 251, 281, 353, 186, 134, 168, 355, 278, 358, 303, 377, 170, 801, 173, 197, 169, 226, 210, 131, 195, 38, 193, 348, 229, 291, 190, 173, 473, 376, 181, 190, 195, 472, 166, 49, 93, 95, 17, 52, 283, 689, 114, 23, 115, 135, 53, 146, 179, 16, 310, 20, 175, 118, 43, 23, 292, 377, 151, 26, 143, 26, 239, 115, 193, 215, 129, 275, 1051, 241, 241, 398, 312, 101, 630, 99, 170, 254, 532, 691, 338, 620, 165, 523, 98, 127, 500, 466, 63, 245, 386, 644, 189, 536, 272, 635, 374, 1954, 26, 73, 134, 253, 27, 285, 26, 496, 193, 201, 314, 38, 104, 95, 90, 450, 203, 354, 360, 756, 445, 228, 38, 66, 403, 89, 221, 360, 302, 73, 201, 1011, 450, 342, 114, 139, 148, 396, 150, 612, 552, 368, 587, 243, 422, 55, 900, 49, 194, 240, 568, 559, 567, 36, 612, 978, 622, 1236, 751, 298, 1127, 270, 387, 57, 479, 488, 316, 102, 176, 687, 29, 183, 177, 214, 76, 76, 289, 26, 28, 34, 53, 27, 69, 26, 26, 32, 118, 210, 72, 60, 215, 203, 227, 168, 155, 511, 786, 216, 745, 186, 257, 1454, 302, 60, 415, 42, 416, 256, 154, 481, 37, 332, 41, 436, 1071, 424, 153, 26, 26, 1454, 286, 333, 268, 456, 27, 417, 438, 29, 268, 60, 61, 341, 312, 28, 1473, 606, 372, 1127, 33, 391, 514, 260, 333, 1111, 332, 768, 209, 203, 223, 937, 207, 274, 361, 500, 667, 787, 798, 554, 258, 247, 763, 310, 322, 259, 276, 709, 2096, 582, 888, 764, 324, 1221, 217, 675, 700, 1030, 51, 282, 461, 39, 536, 596, 690, 518, 256, 256, 690, 536, 184, 136, 184, 137, 127, 456, 505, 56, 247, 584, 265, 51, 527, 225, 147, 740, 1095, 409, 517, 1272, 436, 218, 295, 229, 32, 453, 235, 351, 525, 52, 317, 245, 522, 593, 476, 58, 1535, 156, 1686, 392, 39, 692, 535, 475, 572, 822, 55, 482, 655, 659, 52, 600, 330, 1343, 285, 278, 625, 430, 1163, 234, 278, 334, 913, 73, 177, 916, 1457, 594, 286, 152, 292, 120, 184, 579, 1738, 1077, 370, 400, 370, 584, 249, 1393, 1107, 1095, 71, 620, 986, 873, 1135, 233, 1669, 292, 1098, 964, 353, 524, 174, 83, 527, 263, 726, 62, 747, 984, 279, 161, 186, 168, 84, 1041, 793, 675, 217, 1416, 62, 37, 738, 1416, 269, 422, 435, 434, 1673, 303, 1480, 182, 447, 243, 856, 856, 45, 239, 239, 165, 659, 16, 1890, 328, 288, 352, 244, 660, 420, 525, 562, 106, 378, 215, 130, 379, 276, 592, 788, 476, 1550, 749, 128, 562, 364, 168, 346, 157, 261, 354, 419, 442, 155, 122, 130, 55, 442, 88, 543, 213, 374, 719, 141, 395, 50, 47, 63, 108, 383, 294, 1081, 111, 187, 345, 528, 139, 812, 147, 336, 1025, 807, 148, 221, 87, 462, 1366, 551, 283, 692, 559, 211, 224, 245, 736, 107, 1760, 708, 251, 63, 451, 533, 171, 990, 727, 373, 313, 1740, 76, 64, 990, 218, 743, 262, 1354, 392, 736, 1762, 63, 1745, 503, 126, 1117, 535, 1733, 688, 729, 290, 188, 730, 1266, 37, 672, 230, 329, 655, 1360, 464, 492, 671, 272, 97, 385, 377, 262, 416, 374, 49, 495, 35, 37, 93, 377, 376, 76, 98, 370, 266, 268, 29, 25, 41, 206, 329, 331, 216, 182, 516, 259, 324, 478, 357, 366, 348, 46, 176, 578, 678, 498, 457, 166, 375, 363, 120, 264, 177, 324, 611, 135, 185, 177, 466, 60, 278, 187, 192, 385, 334, 18, 176, 849, 94, 1815, 329, 234, 318, 185, 337, 322, 257, 202, 320, 465, 139, 342, 149, 1005, 380, 424, 321, 176, 463, 271, 284, 530, 275, 175, 289, 970, 244, 131, 113, 402, 538, 256, 828, 304, 344, 367, 1077, 481, 609, 489, 55, 793, 625, 609, 465, 527, 1943, 325, 613, 403, 291, 1298, 594, 332, 353, 858, 712, 326, 85, 831, 453, 704, 69, 102, 718, 380, 606, 477, 61, 713, 51, 404, 513, 931, 172, 433, 757, 45, 384, 259, 570, 159, 586, 712, 738, 249, 633, 651, 191, 343, 669, 699, 458, 103, 356, 798, 254, 593, 198, 541, 371, 494, 379, 476, 201, 1014, 184, 810, 260, 736, 720, 475, 52, 620, 771, 34, 833, 370, 1834, 321, 44, 839, 675, 684, 53, 209, 691, 476, 190, 52, 577, 89, 97, 121, 304, 304, 462, 1963, 715, 355, 501, 187, 378, 360, 193, 104, 160, 369, 321, 404, 558, 234, 349, 893, 531, 541, 246, 99, 585, 115, 76, 42, 633, 282, 287, 209, 114, 333, 246, 328, 45, 34, 82, 79, 657, 75, 321, 276, 76, 299, 275, 32, 1120, 39, 299, 402, 34, 29, 92, 262, 720, 323, 205, 432, 173, 302, 95, 315, 94, 504, 1387, 93, 369, 32, 39, 360, 191, 196, 437, 282, 463, 196, 58, 603, 244, 74, 230, 89, 377, 28, 299, 215, 260, 1946, 364, 43, 637, 240, 205, 53, 263, 613, 438, 215, 220, 240, 211, 365, 318, 189, 594, 456, 241, 49, 98, 34, 165, 192, 1731, 62, 144, 463, 287, 174, 33, 243, 67, 255, 449, 258, 41, 551, 93, 87, 63, 312, 232, 172, 118, 474, 126, 174, 176, 164, 340, 193, 182, 36, 44, 429, 551, 438, 339, 33, 162, 541, 176, 186, 59, 341, 1093, 57, 293, 349, 257, 320, 1747, 675, 97, 127, 922, 1557, 571, 1790, 804, 262, 2235, 396, 500, 381, 65, 1874, 31, 507, 326, 836, 42, 974, 30, 867, 463, 1557, 459, 1023, 394, 54, 1384, 814, 434, 947, 1430, 352, 1276, 271, 91, 40, 473, 270, 248, 363, 344, 294, 291, 277, 259, 39, 254, 385, 331, 204, 321, 280, 227, 227, 45, 301, 288, 122, 364, 227, 423, 399, 194, 214, 272, 72, 150, 340, 153, 143, 144, 468, 257, 561, 215, 264, 383, 105, 267, 266, 222, 244, 742, 405, 221, 572, 278, 238, 258, 46, 467, 177, 240, 377, 466, 268, 367, 1273, 558, 162, 472, 504, 565, 285, 405, 130, 196, 184, 38, 206, 1292, 93, 290, 798, 312, 380, 321, 940, 360, 315, 425, 545, 350, 216, 563, 303, 174, 298, 253, 713, 463, 1105, 202, 387, 177, 48, 96, 512, 205, 314, 253, 131, 792, 132, 508, 218, 296, 327, 464, 55, 126, 269, 96, 194, 123, 69, 131, 280, 687, 456, 290, 487, 300, 324, 709, 61, 1103, 684, 360, 104, 202, 1111, 350, 1021, 412, 436, 164, 1053, 1065, 143, 251, 408, 47, 481, 757, 509, 438, 325, 637, 273, 664, 371, 247, 338, 357, 435, 338, 59, 348, 161, 480, 337, 232, 129, 375, 97, 625, 497, 440, 539, 398, 208, 259, 650, 130, 512, 373, 55, 429, 147, 681, 293, 161, 260, 625, 407, 435, 633, 304, 311, 25, 183, 159, 25, 552, 130, 156, 361, 23, 474, 339, 386, 362, 283, 106, 296, 362, 143, 156, 161, 197, 999, 159, 36, 279, 155, 30, 134, 356, 210, 380, 324, 694, 289, 269, 35, 1473, 1782, 290, 469, 272, 300, 279, 319, 848, 1158, 352, 295, 44, 613, 91, 323, 193, 318, 356, 43, 299, 146, 405, 349, 404, 424, 172, 1728, 297, 54, 690, 410, 1223, 57, 274, 1002, 133, 370, 1887, 1009, 1495, 556, 63, 205, 627, 249, 268, 598, 96, 1055, 138, 1891, 1598, 74, 466, 119, 58, 164, 217, 191, 365, 207, 1718, 153, 214, 68, 997, 58, 47, 287, 259, 898, 182, 1235, 664, 733, 608, 972, 892, 335, 189, 644, 54, 1244, 1196, 222, 1895, 258, 33, 349, 342, 1235, 160, 208, 131, 305, 1232, 1717, 1914, 1823, 44, 1556, 627, 1919, 349, 1241, 323, 55, 287, 865, 967, 122, 895, 614, 448, 251, 1124, 294, 204, 1910, 37, 737, 324, 200, 69, 358, 332, 204, 544, 604, 478, 224, 85, 1211, 613, 273, 29, 431, 369, 547, 28, 59, 59, 343, 361, 299, 447, 569, 420, 351, 492, 42, 134, 620, 655, 624, 594, 1102, 256, 258, 354, 747, 1531, 154, 136, 377, 354, 149, 58, 633, 341, 138, 251, 61, 360, 1472, 1004, 58, 53, 623, 238, 559, 124, 724, 987, 574, 213, 1014, 310, 1637, 617, 78, 173, 1304, 204, 721, 513, 548, 460, 445, 808, 1040, 1067, 143, 56, 913, 1059, 723, 73, 1024, 104, 1016, 399, 677, 136, 306, 1040, 980, 415, 1036, 223, 1037, 1728, 923, 215, 197, 692, 422, 911, 122, 316, 42, 338, 322, 260, 318, 34, 484, 421, 296, 63, 250, 391, 309, 169, 48, 265, 262, 519, 267, 305, 353, 157, 51, 182, 27, 298, 251, 289, 202, 90, 156, 124, 470, 343, 230, 381, 43, 52, 60, 1018, 306, 62, 39, 38, 49, 432, 409, 419, 261, 296, 385, 497, 89, 20, 397, 184, 63, 70, 412, 391, 811, 377, 406, 310, 170, 302, 47, 361, 554, 299, 425, 245, 219, 303, 365, 253, 137, 162, 66, 82, 43, 1033, 90, 568, 1027, 189, 55, 121, 39, 33, 439, 284, 289, 388, 358, 985, 237, 367, 53, 52, 604, 377, 231, 221, 51, 384, 354, 1167, 1004, 353, 138, 193, 218, 167, 222, 246, 45, 325, 103, 964, 337, 578, 1267, 194, 533, 245, 232, 188, 92, 98, 228, 98, 217, 97, 208, 307, 141, 100, 927, 372, 1250, 209, 251, 533, 17, 343, 240, 910, 242, 99, 24, 315, 439, 40, 296, 345, 43, 48, 1486, 282, 223, 1026, 195, 748, 974, 395, 253, 234, 246, 1646, 251, 399, 60, 327, 343, 36, 286, 454, 246, 38, 948, 482, 331, 311, 523, 1208, 81, 246, 65, 299, 288, 350, 290, 279, 1098, 1107, 328, 326, 727, 1093, 1724, 1235, 1135, 639, 876, 865, 1863, 42, 803, 231, 112, 425, 119, 181, 218, 100, 189, 804, 161, 53, 136, 25, 142, 374, 63, 66, 146, 104, 199, 489, 191, 700, 38, 291, 251, 322, 264, 48, 369, 686, 1649, 195, 201, 268, 81, 432, 95, 38, 445, 336, 24, 263, 408, 254, 180, 458, 145, 314, 1021, 86, 65, 254, 252, 150, 310, 168, 327, 252, 204, 445, 236, 121, 277, 79, 307, 276, 190, 1216, 93, 261, 357, 210, 240, 238, 699, 197, 241, 272, 259, 539, 80, 358, 256, 270, 265, 55, 252, 285, 347, 498, 984, 304, 235, 86, 85, 228, 541, 734, 366, 253, 897, 546, 549, 394, 266, 355, 147, 481, 258, 163, 360, 203, 269, 194, 158, 206, 512, 110, 222, 198, 148, 57, 348, 367, 188, 154, 320, 148, 152, 149, 174, 401, 144, 597, 396, 576, 256, 566, 273, 574, 505, 426, 994, 306, 154, 138, 241, 1134, 322, 493, 570, 51, 193, 605, 258, 327, 384, 422, 285, 140, 595, 278, 397, 232, 244, 231, 243, 102, 483, 576, 547, 502, 70, 896, 119, 882, 226, 474, 854, 587, 450, 423, 383, 588, 180, 165, 78, 911, 581, 461, 1013, 369, 48, 158, 370, 440, 192, 958, 567, 590, 757, 366, 232, 211, 242, 823, 37, 60, 179, 81, 219, 570, 631, 145, 447, 749, 82, 395, 77, 168, 362, 98, 52, 477, 331, 598, 916, 443, 965, 330, 464, 522, 710, 86, 939, 508, 1058, 447, 356, 409, 370, 312, 152, 752, 440, 1460, 511, 367, 729, 450, 704, 474, 83, 364, 89, 420, 414, 1448, 437, 1435, 950, 685, 646, 503, 525, 505, 1443, 105, 116, 1530, 63, 496, 311, 210, 270, 289, 277, 51, 281, 419, 384, 202, 200, 321, 314, 293, 311, 332, 257, 104, 427, 451, 328, 250, 216, 85, 415, 627, 243, 252, 188, 254, 84, 242, 221, 90, 264, 156, 269, 212, 259, 569, 256, 85, 550, 285, 253, 245, 278, 279, 216, 81, 554, 92, 82, 293, 1109, 122, 377, 65, 296, 32, 103, 467, 445, 487, 329, 72, 704, 38, 353, 214, 721, 1054, 563, 267, 516, 124, 47, 66, 1078, 104, 1079, 578, 512, 342, 110, 335, 232, 297, 504, 123, 437, 466, 1134, 58, 424, 414, 1057, 653, 84, 723, 78, 59, 248, 134, 42, 66, 42, 1282, 168, 521, 84, 297, 312, 1028, 206, 134, 83, 80, 71, 189, 392, 58, 144, 284, 478, 284, 42, 414, 201, 243, 229, 90, 294, 287, 539, 1214, 53, 47, 278, 237, 49, 640, 243, 519, 522, 1966, 504, 102, 519, 520, 125, 543, 499, 486, 519, 520, 1827, 496, 909, 286, 354, 522, 523, 81, 82, 523, 543, 544, 488, 454, 314, 514, 514, 131, 93, 447, 218, 195, 840, 246, 137, 1050, 693, 507, 257, 639, 634, 1299, 500, 628, 466, 335, 354, 675, 300, 514, 256, 94, 158, 769, 788, 746, 229, 1108, 817, 116, 439, 809, 166, 830, 321, 391, 1837, 219, 158, 339, 699, 149, 324, 524, 221, 539, 505, 447, 180, 183, 144, 690, 265, 574, 823, 616, 1528, 541, 515, 520, 484, 418, 324, 375, 123, 285, 766, 311, 397, 535, 698, 299, 419, 523, 450, 243, 771, 105, 1341, 261, 427, 549, 502, 1574, 346, 396, 1219, 1058, 414, 287, 564, 389, 364, 392, 160, 367, 364, 769, 493, 508, 748, 918, 666, 572, 766, 1602, 1571, 184, 956, 393, 1534, 745, 951, 311, 1162, 1333, 1024, 1488, 804, 383, 835, 419, 84, 967, 1624, 81, 1318, 313, 1513, 1602, 610, 199, 1627, 1523, 960, 809, 1188, 112, 1198, 1437, 417, 914, 331, 223, 215, 490, 414, 439, 225, 217, 479, 347, 1105, 252, 371, 148, 250, 492, 403, 360, 221, 441, 236, 537, 570, 1652, 301, 1737, 45, 128, 1758, 1658, 23, 364, 434, 383, 1657, 628, 335, 1695, 450, 975, 440, 301, 522, 777, 279, 89, 405, 1044, 303, 42, 212, 47, 96, 379, 986, 1071, 502, 539, 537, 181, 174, 212, 672, 554, 52, 209, 309, 640, 511, 563, 204, 1366, 376, 613, 481, 189, 391, 540, 519, 542, 418, 993, 303, 1044, 264, 365, 367, 416, 395, 907, 481, 423, 202, 32, 59, 1019, 279, 598, 687, 304, 426, 41, 200, 404, 18, 1172, 152, 267, 413, 888, 2169, 781, 432, 22, 377, 91, 267, 764, 749, 237, 376, 270, 366, 342, 125, 217, 1461, 312, 797, 547, 32, 776, 367, 820, 643, 235, 364, 381, 253, 560, 160, 770, 290, 327, 555, 358, 617, 420, 127, 317, 187, 392, 918, 781, 738, 252, 257, 70, 394, 227, 938, 307, 281, 392, 205, 470, 59, 491, 444, 421, 781, 626, 794, 40, 338, 634, 161, 230, 1454, 773, 87, 526, 283, 123, 49, 380, 373, 1010, 497, 859, 239, 370, 531, 406, 476, 381, 2032, 532, 348, 466, 387, 860, 477, 403, 167, 335, 1052, 211, 280, 373, 552, 266, 716, 284, 936, 381, 274, 179, 257, 404, 952, 381, 331, 579, 1452, 382, 348, 241, 41, 333, 340, 340, 1106, 236, 317, 283, 274, 1234, 233, 475, 275, 298, 139, 309, 811, 274, 405, 160, 113, 125, 707, 518, 1378, 819, 241, 265, 83, 372, 141, 481, 368, 121, 1458, 394, 816, 517, 186, 73, 226, 591, 887, 1011, 639, 489, 318, 1194, 491, 86, 476, 606, 369, 681, 389, 681, 452, 39, 611, 1256, 158, 561, 416, 554, 472, 1291, 131, 733, 83, 353, 1131, 435, 513, 692, 419, 1157, 763, 710, 430, 734, 1277, 1246, 529, 372, 168, 496, 71, 469, 363, 25, 397, 1226, 307, 309, 140, 222, 199, 267, 971, 216, 173, 877, 218, 211, 160, 251, 239, 211, 532, 218, 244, 534, 391, 375, 98, 351, 986, 486, 2010, 1768, 397, 1042, 648, 455, 603, 37, 611, 653, 585, 386, 515, 372, 563, 1592, 1543, 1823, 412, 502, 1836, 1492, 398, 1157, 766, 1620, 734, 1336, 473, 205, 805, 436, 234, 514, 167, 48, 281, 989, 333, 673, 386, 556, 408, 608, 156, 46, 580, 36, 400, 1942, 222, 556, 714, 457, 169, 740, 1838, 556, 319, 447, 345, 344, 610, 640, 1287, 1752, 247, 315, 267, 350, 499, 284, 1186, 145, 1772, 361, 443, 59, 41, 356, 823, 35, 479, 448, 105, 191, 361, 187, 440, 272, 56, 279, 394, 203, 106, 132, 160, 459, 445, 354, 440, 389, 138, 400, 884, 452, 453, 38, 56, 791, 445, 422, 100, 37, 274, 177, 635, 683, 1500, 241, 362, 97, 101, 25, 20, 193, 368, 620, 538, 226, 598, 203, 95, 459, 327, 963, 49, 1180, 322, 318, 291, 93, 131, 1318, 34, 32, 309, 374, 56, 290, 305, 47, 43, 573, 52, 1315, 88, 344, 385, 30, 180, 391, 42, 93, 363, 1060, 692, 488, 317, 63, 372, 445, 147, 94, 549, 30, 1220, 333, 91, 309, 501, 306, 457, 251, 494, 802, 206, 1279, 290, 218, 393, 350, 62, 273, 463, 418, 333, 382, 292, 98, 342, 206, 209, 896, 1624, 157, 669, 145, 375, 387, 1216, 328, 41, 427, 83, 1283, 639, 1405, 681, 315, 313, 474, 521, 764, 488, 462, 287, 52, 252, 311, 858, 792, 1379, 78, 247, 375, 329, 88, 495, 755, 1017, 459, 575, 699, 559, 73, 711, 215, 1229, 756, 261, 877, 705, 516, 887, 218, 690, 941, 1264, 517, 639, 393, 1000, 704, 248, 940, 698, 178, 464, 296, 859, 937, 759, 938, 1262, 762, 1196, 868, 179, 483, 1150, 429, 690, 615, 685, 124, 855, 872, 425, 211, 327, 172, 255, 232, 385, 713, 293, 253, 257, 176, 341, 77, 396, 965, 576, 703, 171, 980, 718, 885, 329, 871, 253, 1010, 882, 584, 852, 784, 633, 887, 1011, 760, 1033, 1020, 581, 782, 832, 1024, 964, 341, 263, 1258, 216, 243, 573, 491, 247, 759, 494, 234, 86, 1272, 1020, 239, 606, 677, 339, 751, 137, 1884, 429, 238, 1097, 1361, 379, 416, 71, 555, 1135, 1669, 962, 1990, 333, 76, 1657, 1548, 125, 342, 1811, 148, 301, 690, 1868, 894, 165, 284, 1167, 526, 911, 584, 663, 433, 911, 1194, 395, 325, 379, 135, 391, 609, 394, 1242, 609, 440, 1211, 158, 608, 485, 352, 1889, 263, 592, 361, 210, 247, 408, 411, 767, 377, 422, 311, 856, 441, 458, 426, 877, 572, 352, 873, 28, 515, 359, 851, 519, 70, 545, 465, 1762, 885, 1767, 895, 407, 518, 1922, 1598, 324, 59, 534, 65, 311, 461, 535, 351, 272, 435, 954, 1052, 1722, 339, 110, 1732, 430, 96, 602, 1768, 1745, 365, 1742, 311, 140, 412, 1753, 419, 611, 583, 426, 589, 620, 425, 134, 422, 105, 424, 400, 125, 1668, 418, 191, 331, 706, 724, 707, 331, 786, 168, 191, 118, 167, 77, 299, 1749, 190, 1669, 699, 971, 1694, 805, 980, 284, 410, 540, 725, 653, 63, 45, 67, 181, 354, 515, 555, 1527, 683, 436, 364, 410, 500, 644, 191, 327, 357, 519, 415, 526, 403, 423, 378, 447, 702, 1384, 176, 94, 442, 480, 335, 184, 1772, 341, 262, 346, 214, 1753, 491, 206, 222, 410, 287, 72, 313, 562, 505, 1088, 364, 212, 167, 492, 233, 49, 39, 919, 247, 310, 757, 223, 768, 306, 776, 294, 451, 277, 605, 1089, 507, 1061, 1469, 1061, 1739, 684, 976, 1502, 219, 1528, 203, 1050, 1207, 541, 74, 244, 416, 148, 70, 501, 364, 504, 332, 480, 412, 856, 1881, 247, 292, 908, 917, 480, 919, 547, 1882, 232, 657, 298, 107, 210, 618, 387, 86, 900, 387, 445, 1279, 1110, 81, 1004, 1051, 294, 269, 398, 842, 229, 213, 393, 325, 326, 1294, 560, 748, 169, 262, 440, 1350, 166, 938, 543, 1348, 323, 388, 83, 408, 26, 340, 377, 775, 1052, 249, 215, 84, 88, 288, 131, 436, 460, 388, 782, 390, 447, 35, 434, 61, 391, 790, 263, 398, 69, 51, 377, 63, 387, 936, 393, 91, 401, 654, 81, 38, 1004, 73, 879, 46, 776, 64, 85, 558, 509, 411, 287, 484, 40, 640, 734, 127, 385, 354, 287, 424, 81, 160, 70, 571, 184, 102, 159, 316, 389, 70, 709, 309, 437, 421, 194, 443, 278, 66, 399, 391, 45, 382, 490, 160, 423, 386, 408, 14, 433, 267, 385, 511, 616, 484, 184, 464, 562, 168, 679, 178, 118, 955, 482, 209, 168, 608, 259, 36, 982, 846, 90, 242, 90, 297, 85, 298, 546, 985, 259, 280, 47, 276, 260, 33, 87, 827, 52, 726, 726, 726, 726, 280, 287, 517, 1653, 981, 1449, 1654, 374, 1865, 56, 3474, 1829, 536, 558, 640, 1701, 248, 488, 650, 499, 405, 683, 915, 620, 84, 276, 269, 867, 259, 1908, 520, 2000, 555, 470, 426, 485, 712, 694, 533, 972, 35, 469, 484, 470, 539, 1475, 502, 509, 1999, 494, 574, 437, 482, 890, 446, 760, 627, 129, 121, 409, 129, 465, 245, 115, 1097, 130, 1100, 260, 1096, 690, 107, 1689, 232, 970, 726, 988, 1039, 1039, 194, 475, 1309, 138, 1794, 442, 1444, 222, 673, 268, 228, 1073, 696, 212, 806, 681, 889, 442, 367, 58, 549, 535, 1613, 1023, 231, 897, 80, 659, 196, 752, 480, 405, 1557, 673, 330, 822, 661, 1584, 1533, 118, 440, 251, 290, 568, 506, 512, 253, 713, 408, 246, 1702, 1077, 139, 1129, 1329, 1208, 1359, 847, 1315, 84, 1058, 1606, 1174, 1045, 972, 1627, 1751, 420, 1126, 183, 1202, 1295, 1302, 126, 623, 1055, 696, 1327, 700, 1523, 636, 965, 962, 977, 1180, 1079, 387, 49, 298, 103, 43, 43, 479, 215, 260, 35, 338, 36, 470, 352, 496, 545, 548, 496, 386, 493, 410, 368, 419, 743, 516, 449, 401, 476, 2054, 644, 326, 429, 282, 1467, 523, 290, 1168, 572, 596, 132, 368, 311, 286, 112, 419, 517, 332, 235, 408, 1678, 359, 691, 281, 334, 685, 342, 319, 104, 240, 321, 428, 206, 343, 163, 327, 461, 202, 871, 290, 524, 909, 295, 1651, 235, 125, 1138, 233, 239, 144, 378, 852, 144, 145, 253, 1040, 238, 431, 796, 117, 1052, 287, 190, 259, 754, 184, 618, 261, 300, 1234, 206, 357, 289, 1150, 443, 251, 393, 693, 95, 194, 200, 685, 40, 1158, 324, 847, 324, 209, 413, 58, 298, 73, 56, 69, 427, 75, 100, 749, 435, 753, 334, 373, 581, 341, 471, 797, 351, 616, 613, 239, 933, 1723, 993, 62, 85, 149, 79, 266, 475, 653, 516, 669, 573, 426, 589, 819, 315, 1006, 1282, 1730, 507, 117, 918, 184, 212, 537, 610, 592, 281, 188, 813, 578, 383, 263, 458, 486, 498, 270, 285, 271, 372, 452, 431, 359, 70, 490, 278, 278, 259, 370, 514, 79, 156, 229, 139, 488, 321, 62, 486, 483, 1151, 362, 289, 493, 490, 640, 266, 343, 471, 448, 503, 766, 368, 17, 40, 215, 485, 30, 362, 36, 352, 427, 42, 515, 304, 137, 299, 364, 418, 298, 153, 448, 49, 321, 161, 327, 148, 158, 295, 55, 136, 733, 40, 326, 217, 216, 172, 1143, 290, 434, 203, 878, 98, 1201, 149, 170, 250, 318, 224, 342, 302, 111, 294, 356, 149, 204, 249, 188, 300, 50, 290, 240, 292, 293, 200, 171, 319, 297, 401, 60, 378, 1678, 250, 342, 389, 347, 334, 336, 734, 509, 372, 356, 875, 90, 57, 414, 460, 360, 336, 339, 178, 462, 425, 337, 200, 193, 200, 50, 735, 892, 362, 334, 308, 432, 372, 368, 666, 201, 263, 384, 268, 547, 417, 105, 1079, 460, 282, 358, 238, 486, 846, 457, 327, 370, 85, 444, 214, 980, 306, 102, 265, 101, 324, 124, 993, 466, 256, 328, 521, 312, 1096, 224, 333, 332, 193, 102, 184, 318, 269, 346, 462, 100, 480, 338, 90, 146, 287, 487, 297, 708, 328, 1044, 214, 594, 553, 143, 332, 587, 587, 106, 708, 1034, 336, 1079, 567, 626, 525, 597, 94, 808, 1770, 155, 256, 404, 209, 275, 485, 335, 674, 551, 1192, 96, 466, 847, 1089, 114, 250, 297, 29, 194, 108, 246, 460, 268, 976, 554, 409, 315, 655, 322, 561, 578, 111, 617, 234, 375, 69, 77, 103, 383, 359, 941, 600, 624, 383, 569, 553, 314, 383, 230, 640, 383, 569, 139, 411, 847, 579, 566, 565, 1269, 507, 383, 44, 566, 592, 301, 184, 183, 308, 104, 391, 350, 583, 592, 493, 179, 230, 402, 187, 296, 270, 37, 308, 217, 119, 443, 141, 116, 405, 290, 108, 145, 368, 143, 296, 412, 305, 363, 298, 440, 70, 124, 476, 838, 367, 171, 477, 80, 265, 118, 29, 411, 311, 73, 302, 159, 194, 823, 83, 986, 42, 318, 823, 93, 816, 262, 431, 151, 45, 416, 303, 320, 36, 287, 364, 384, 309, 401, 311, 300, 513, 420, 254, 821, 259, 260, 1454, 293, 311, 111, 312, 521, 272, 409, 129, 422, 109, 333, 307, 601, 377, 122, 200, 46, 231, 257, 439, 1123, 302, 193, 19, 308, 292, 252, 17, 385, 38, 382, 58, 384, 189, 196, 58, 1503, 64, 376, 106, 294, 238, 49, 504, 410, 188, 84, 1282, 308, 84, 23, 156, 304, 655, 193, 57, 249, 168, 194, 287, 1209, 86, 129, 70, 272, 246, 247, 80, 186, 1617, 162, 136, 243, 33, 602, 131, 704, 541, 150, 1073, 706, 842, 2216, 315, 192, 91, 637, 109, 558, 108, 110, 1136, 198, 1528, 1525, 419, 619, 1303, 1619, 868, 371, 1552, 4335, 152, 2032, 337, 494, 138, 1886, 860, 2495, 1591, 893, 1256, 511, 564, 104, 95, 713, 863, 1900, 961, 551, 902, 677, 1551, 1074, 922, 3231, 2655, 251, 3550, 163, 3509, 248, 287, 626, 3971, 450, 1474, 175, 1214, 209, 57, 1109, 1892, 2177, 293, 1206, 1502, 1455, 1966, 840, 508, 1583, 644, 677, 120, 751, 658, 268, 1939, 141, 255, 171, 1313, 492, 492, 134, 577, 155, 70, 87, 249, 84, 149, 92, 190, 177, 435, 164, 2583, 690, 231, 2608, 1190, 418, 266, 1447, 1018, 71, 326, 271, 49, 325, 364, 265, 41, 115, 105, 103, 74, 354, 325, 127, 253, 1567, 128, 129, 255, 1608, 1555, 611, 1501, 3735, 1354, 954, 1739, 87, 290, 310, 335, 913, 73, 71, 71, 562, 875, 1626, 495, 67, 418, 535, 63, 1439, 1834, 828, 488, 816, 1497, 1135, 57, 1454, 619, 219, 616, 1324, 155, 92, 1038, 1436, 1306, 237, 113, 172, 167, 261, 510, 137, 1152, 183, 104, 1238, 96, 172, 344, 79, 1143, 1643, 149, 218, 123, 627, 294, 294, 312, 635, 635, 53, 558, 1443, 54, 772, 75, 498, 376, 1556, 1918, 422, 729, 702, 2591, 600, 1714, 623, 94, 430, 1647, 1247, 1566, 669, 1977, 1947, 1798, 1201, 558, 3547, 1073, 1714, 1915, 114, 1950, 1460, 1830, 1660, 1456, 1077, 141, 196, 382, 99, 1985, 1997, 244, 146, 1736, 1543, 125, 1643, 49, 386, 543, 196, 415, 133, 413, 1228, 346, 74, 470, 72, 601, 372, 1482, 877, 281, 319, 1407, 1352, 1601, 82, 586, 266, 3409, 411, 340, 2046, 712, 235, 1954, 878, 474, 2819, 977, 436, 372, 198, 2060, 499, 1045, 495, 1586, 337, 669, 254, 748, 119, 1528, 497, 404, 932, 741, 1087, 975, 848, 615, 357, 219, 1278, 162, 149, 590, 351, 129, 1225, 159, 1133, 410, 485, 752, 1652, 522, 3267, 323, 89, 202, 131, 66, 347, 1730, 927, 1740, 1406, 844, 1748, 135, 714, 1150, 1141, 430, 519, 416, 1145, 1789, 627, 66, 810, 279, 217, 592, 51, 633, 726, 766, 1664, 450, 129, 259, 2592, 1500, 1426, 1097, 616, 571, 450, 330, 464, 659, 114, 622, 72, 927, 935, 1949, 1346, 468, 373, 971, 1165, 589, 498, 286, 784, 913, 329, 472, 3316, 94, 1390, 343, 1238, 666, 1402, 446, 165, 191, 267, 229, 535, 169, 306, 168, 817, 181, 129, 1489, 649, 1389, 1902, 1327, 163, 398, 255, 669, 829, 1060, 385, 316, 604, 609, 391, 427, 503, 1599, 382, 1789, 1711, 992, 1025, 319, 1857, 980, 242, 308, 365, 1506, 372, 1493, 476, 1862, 735, 1508, 1822, 1063, 1070, 1397, 186, 1428, 198, 967, 1509, 1374, 271, 1400, 279, 1748, 1235, 1296, 115, 1201, 94, 696, 1379, 286, 426, 918, 131, 770, 628, 261, 1268, 1247, 531, 255, 305, 180, 604, 261, 1261, 577, 521, 549, 296, 159, 1647, 538, 390, 90, 1499, 5855, 240, 35, 1100, 1958, 383, 909, 2995, 1516, 537, 364, 202, 1712, 410, 742, 410, 1030, 410, 69, 537, 422, 410, 315, 627, 645, 761, 1315, 176, 198, 1363, 146, 269, 1292, 69, 188, 1431, 288, 522, 3539, 243, 1054, 949, 1025, 82, 844, 281, 142, 908, 236, 92, 856, 424, 1674, 1956, 82, 298, 309, 123, 73, 154, 170, 1542, 93, 739, 220, 837, 270, 183, 221, 461, 863, 704, 2882, 3064, 308, 494, 1266, 739, 554, 1391, 485, 460, 197, 1588, 177, 702, 584, 397, 186, 988, 152, 180, 177, 1270, 587, 151, 772, 105, 1518, 629, 165, 745, 280, 358, 1533, 1530, 620, 116, 1344, 649, 1029, 382, 1257, 205, 244, 319, 944, 105, 624, 974, 196, 714, 96, 98, 182, 1333, 397, 320, 1499, 936, 387, 1381, 79, 80, 256, 101, 182, 1461, 1273, 1703, 460, 1807, 272, 1777, 1670, 1258, 1962, 1528, 1119, 102, 449, 1189, 883, 1276, 126, 361, 421, 417, 307, 1223, 324, 3604, 727, 87, 1068, 1043, 85, 1359, 122, 473, 638, 1518, 967, 119, 476, 916, 1340, 575, 122, 803, 1632, 1351, 162, 1114, 963, 604, 1699, 256, 786, 4426, 1724, 1755, 3750, 92, 1749, 151, 2792, 201, 753, 1319, 1239, 576, 466, 55, 34, 1823, 396, 3862, 461, 144, 292, 54, 1498, 537, 297, 522, 350, 342, 1135, 56, 75, 1074, 228, 199, 2656, 1087, 649, 321, 240, 57, 503, 52, 517, 1414, 371, 424, 432, 1284, 462, 440, 150, 716, 170, 98, 1349, 290, 808, 881, 766, 570, 134, 918, 461, 1627, 748, 593, 253, 180, 301, 297, 763, 651, 227, 2149, 914, 511, 762, 972, 762, 665, 569, 794, 861, 920, 353, 411, 1450, 772, 689, 84, 396, 746, 474, 1889, 397, 149, 297, 1090, 347, 1109, 1951, 137, 476, 165, 607, 784, 511, 477, 678, 168, 867, 405, 1936, 667, 678, 595, 498, 332, 340, 241, 341, 1457, 199, 1677, 1319, 340, 662, 701, 5439, 616, 404, 393, 1851, 475, 690, 280, 577, 141, 401, 437, 414, 231, 201, 1216, 410, 391, 895, 116, 957, 1678, 206, 1940, 1657, 1482, 1512, 771, 385, 723, 1037, 135, 1633, 178, 253, 1568, 100, 1541, 990, 181, 659, 305, 1672, 990, 192, 1006, 172, 1634, 1784, 35, 150, 1496, 158, 205, 2018, 243, 187, 101, 1249, 607, 1258, 108, 1546, 100, 1208, 539, 120, 95, 144, 944, 1245, 485, 884, 601, 610, 1047, 741, 605, 574, 330, 456, 931, 1531, 1508, 474, 799, 1983, 1749, 2005, 890, 360, 1134, 1881, 788, 365, 393, 413, 274, 1304, 182, 203, 1454, 708, 86, 1230, 893, 1621, 2731, 595, 275, 1271, 396, 334, 1480, 2011, 2049, 1208, 507, 511, 891, 1043, 784, 29, 1065, 78, 145, 355, 546, 809, 416, 244, 1386, 293, 599, 83, 873, 48, 1469, 953, 798, 951, 838, 1569, 54, 373, 546, 1897, 619, 386, 54, 181, 595, 262, 471, 324, 1256, 206, 687, 633, 177, 591, 1156, 1739, 966, 1637, 896, 1155, 319, 1042, 1098, 1454, 657, 136, 277, 1509, 2320, 99, 442, 575, 993, 1066, 106, 224, 348, 1167, 606, 166, 238, 254, 218, 288, 936, 1649, 991, 875, 1646, 76, 350, 1193, 120, 130, 99, 640, 149, 110, 1302, 1467, 1901, 91, 1771, 1877, 689, 641, 291, 709, 1265, 628, 1743, 1702, 25, 247, 2802, 1380, 1702, 251, 243, 1059, 133, 257, 202, 249, 225, 389, 1175, 432, 248, 1437, 245, 328, 365, 1462, 2867, 183, 427, 477, 438, 822, 1861, 553, 1250, 1145, 252, 581, 452, 733, 1180, 162, 251, 110, 159, 556, 353, 596, 159, 1212, 181, 1358, 390, 896, 303, 464, 617, 1221, 580, 556, 204, 299, 134, 129, 1723, 291, 42, 620, 334, 52, 757, 527, 863, 334, 1374, 335, 907, 244, 146, 64, 64, 1051, 632, 150, 1930, 1892, 213, 1407, 1215, 1193, 1079, 97, 1567, 2427, 442, 740, 616, 831, 2111, 310, 323, 253, 442, 214, 537, 954, 214, 1008, 802, 639, 1571, 762, 484, 249, 1948, 986, 1467, 1691, 1743, 3789, 1909, 659, 705, 629, 250, 1375, 711, 740, 395, 795, 334, 1585, 179, 6594, 3470, 1417, 718, 133, 1568, 598, 1023, 1263, 1583, 6536, 1517, 104, 2341, 543, 62, 2328, 1149, 335, 1967, 65, 603, 447, 347, 2463, 618, 62, 66, 144, 197, 344, 239, 715, 496, 498, 835, 1659, 397, 552, 3720, 1359, 2302, 710, 578, 1279, 52, 1369, 1320, 1486, 1874, 1330, 1668, 426, 699, 390, 67, 406, 557, 538, 350, 200, 971, 756, 2349, 1431, 222, 232, 2263, 816, 160, 1053, 1018, 424, 435, 383, 1819, 236, 36, 604, 415, 550, 475, 788, 692, 674, 295, 357, 403, 188, 505, 1831, 1756, 1522, 169, 1937, 1035, 812, 256, 343, 894, 1477, 1011, 629, 1504, 1620, 1935, 1039, 169, 87, 623, 1779, 924, 1678, 704, 43, 3056, 2170, 420, 593, 455, 4464, 1500, 2886, 5625, 1167, 1203, 699, 3030, 1301, 4004, 1509, 354, 239, 190, 1893, 75, 1431, 1622, 75, 53, 55, 187, 286, 335, 1626, 1586, 2369, 150, 1601, 95, 406, 2995, 129, 572, 755, 107, 836, 1327, 384, 47, 1396, 1897, 263, 812, 323, 484, 199, 1451, 2944, 2546, 984, 1269, 299, 2579, 1495, 1406, 652, 404, 483, 956, 312, 168, 1381, 1938, 345, 513, 1173, 1167, 1111, 356, 299, 529, 506, 581, 400, 238, 194, 433, 258, 511, 582, 705, 1143, 4939, 625, 557, 1900, 100, 1550, 1755, 714, 735, 359, 520, 126, 1092, 490, 1058, 194, 260, 585, 675, 251, 257, 496, 219, 85, 1147, 503, 2166, 299, 544, 1559, 1541, 1922, 424, 2305, 5451, 3851, 56, 1293, 780, 200, 836, 271, 760, 3793, 3905, 1554, 36, 325, 374, 1390, 923, 414, 268, 754, 44, 590, 425, 401, 1942, 259, 587, 859, 118, 268, 158, 354, 849, 1586, 191, 145, 507, 370, 275, 1222, 447, 174, 427, 63, 352, 428, 101, 86, 231, 499, 272, 263, 116, 2003, 2101, 1605, 443, 977, 568, 1233, 512, 1182, 1243, 1319, 2184, 376, 407, 220, 275, 1851, 1565, 65, 507, 464, 427, 639, 1451, 1283, 509, 443, 178, 87, 67, 1776, 100, 365, 2024, 219, 728, 673, 155, 380, 59, 1354, 985, 423, 377, 1127, 1527, 853, 1325, 1858, 395, 654, 404, 360, 63, 679, 841, 846, 588, 659, 653, 480, 285, 1272, 42, 44, 642, 184, 44, 213, 645, 557, 644, 55, 1771, 65, 650, 210, 166, 270, 772, 44, 369, 1556, 221, 1585, 614, 523, 161, 187, 97, 1734, 182, 294, 1349, 1834, 633, 362, 498, 4005, 1432, 516, 2146, 1008, 580, 534, 1351, 4625, 1359, 672, 229, 12473, 1960, 1590, 1107, 130, 3380, 559, 1634, 1692, 559, 335, 1134, 1575, 61, 270, 366, 1826, 199, 361, 445, 473, 1685, 1195, 343, 479, 224, 861, 512, 533, 465, 556, 1052, 364, 1198, 158, 176, 1734, 1247, 1404, 1065, 282, 229, 1449, 1673, 227, 1534, 1643, 233, 1648, 44, 233, 459, 334, 821, 261, 1498, 136, 934, 886, 112, 3855, 584, 413, 171, 239, 1512, 164, 1213, 101, 543, 87, 1457, 315, 1948, 1656, 170, 230, 268, 356, 941, 275, 604, 883, 175, 1056, 251, 599, 639, 1095, 103, 1041, 670, 458, 292, 59, 798, 803, 335, 338, 434, 445, 216, 1118, 1203, 656, 1412, 422, 470, 330, 1425, 2044, 975, 357, 538, 71, 129, 121, 1508, 2001, 80, 709, 414, 703, 125, 133, 594, 130, 76, 108, 65, 100, 65, 65, 95, 24, 1188, 1716, 568, 1833, 446, 574, 339, 49, 571, 392, 397, 640, 527, 2869, 1647, 2869, 566, 672, 258, 454, 693, 410, 569, 376, 175, 951, 2547, 333, 1767, 70, 2397, 258, 923, 144, 437, 347, 346, 451, 1607, 1936, 1829, 1119, 42, 221, 173, 58, 293, 388, 266, 1165, 1246, 223, 264, 482, 129, 1467, 45, 267, 112, 201, 1114, 360, 232, 486, 73, 319, 435, 53, 1784, 2981, 43, 37, 816, 292, 66, 41, 1070, 334, 119, 530, 1696, 741, 464, 254, 484, 862, 261, 490, 326, 855, 490, 484, 403, 810, 318, 507, 1111, 459, 786, 131, 579, 739, 353, 101, 63, 339, 2810, 1357, 452, 880, 1731, 2959, 1855, 877, 196, 1066, 910, 1763, 4465, 1782, 3717, 649, 61, 1317, 1381, 1725, 229, 1678, 1559, 675, 1959, 1912, 1067, 1367, 99, 200, 679, 1817, 291, 744, 1919, 811, 1579, 39, 140, 398, 836, 149, 1326, 895, 896, 1157, 145, 1679, 690, 1964, 2315, 1212, 1238, 1088, 1579, 146, 1861, 1215, 146, 304, 1428, 974, 400, 1144, 771, 660, 1935, 1060, 798, 1062, 908, 798, 891, 4380, 3296, 1061, 829, 520, 802, 931, 781, 410, 1499, 962, 1346, 783, 954, 1463, 461, 926, 1056, 1669, 1203, 1842, 786, 715, 545, 93, 800, 119, 1095, 84, 744, 377, 2016, 2844, 4256, 85, 127, 1611, 715, 183, 1163, 126, 199, 615, 411, 377, 216, 593, 574, 172, 54, 1846, 461, 905, 509, 523, 753, 502, 1200, 626, 485, 1313, 639, 233, 903, 465, 132, 436, 84, 585, 783, 127, 995, 1335, 1339, 737, 401, 125, 1044, 843, 1493, 838, 1099, 1101, 134, 1122, 606, 335, 669, 819, 955, 224, 1291, 499, 104, 216, 593, 308, 984, 183, 540, 150, 60, 47, 1961, 1220, 1934, 57, 290, 251, 290, 884, 512, 72, 1569, 710, 851, 915, 765, 931, 2090, 172, 524, 1524, 1300, 626, 236, 547, 184, 462, 1437, 2120, 1713, 325, 1426, 144, 446, 1581, 92, 453, 557, 429, 155, 726, 788, 55, 182, 378, 147, 1545, 149, 115, 2673, 483, 138, 865, 4410, 1247, 572, 438, 1424, 110, 111, 763, 1193, 1705, 190, 1172, 924, 1409, 1406, 851, 132, 1409, 513, 1874, 869, 3333, 1868, 474, 670, 1966, 111, 74, 295, 874, 1012, 1074, 373, 1565, 677, 291, 781, 399, 428, 114, 252, 1124, 668, 628, 32, 87, 1105, 339, 1464, 265, 195, 386, 485, 1074, 599, 85, 651, 99, 201, 568, 207, 508, 338, 1107, 1975, 624, 568, 632, 329, 773, 296, 66, 339, 536, 1108, 941, 1538, 1552, 610, 1371, 564, 622, 268, 1310, 864, 1966, 1565, 640, 962, 403, 151, 145, 490, 329, 342, 654, 263, 914, 1933, 1796, 1145, 83, 512, 57, 484, 524, 117, 1124, 45, 374, 537, 121, 293, 121, 156, 208, 176, 154, 296, 1514, 658, 180, 166, 521, 331, 36, 194, 1647, 961, 47, 347, 1035, 1314, 289, 1431, 68, 324, 1836, 303, 297, 358, 1431, 303, 1449, 259, 535, 1010, 1205, 135, 1107, 82, 1706, 55, 82, 156, 473, 63, 467, 235, 47, 876, 605, 252, 133, 68, 950, 54, 375, 145, 340, 160, 309, 383, 130, 78, 216, 1698, 924, 819, 72, 1070, 44, 1954, 45, 79, 328, 1292, 1524, 190, 72, 1441, 587, 579, 193, 446, 292, 86, 76, 594, 103, 609, 98, 62, 493, 38, 38, 1794, 38, 37, 38, 50, 729, 556, 858, 1608, 989, 173, 408, 227, 746, 406, 259, 138, 713, 64, 634, 141, 1226, 55, 306, 1337, 576, 1021, 74, 952, 1673, 1041, 772, 1004, 963, 1730, 112, 1829, 1360, 233, 208, 953, 287, 442, 1531, 162, 1048, 157, 720, 439, 1672, 1791, 1688, 178, 176, 1128, 896, 1089, 187, 445, 309, 638, 82, 714, 385, 823, 97, 482, 187, 1806, 359, 750, 247, 110, 690, 285, 382, 181, 43, 395, 243, 639, 452, 269, 537, 716, 177, 480, 610, 992, 285, 286, 1215, 1021, 317, 385, 871, 277, 713, 536, 385, 988, 1092, 1536, 1548, 961, 867, 986, 1291, 1652, 142, 1131, 895, 246, 540, 159, 2084, 329, 499, 95, 438, 277, 540, 280, 481, 2039, 611, 54, 84, 558, 60, 1121, 656, 61, 959, 1082, 1922, 1150, 1962, 1014, 1661, 1462, 1153, 857, 729, 1664, 1538, 95, 314, 153, 577, 57, 57, 848, 130, 33, 378, 200, 428, 1500, 1378, 530, 530, 175, 1656, 71, 642, 516, 669, 473, 71, 967, 961, 98, 215, 751, 584, 1312, 193, 157, 230, 141, 1102, 2093, 431, 1139, 1535, 419, 535, 1174, 1068, 1881, 700, 53, 1425, 1089, 843, 510, 480, 1368, 1793, 382, 779, 1612, 121, 217, 572, 947, 276, 1179, 339, 285, 83, 1205, 868, 953, 324, 178, 653, 523, 704, 909, 506, 974, 60, 753, 145, 70, 971, 163, 309, 566, 419, 755, 492, 178, 705, 1972, 305, 645, 2020, 535, 119, 270, 919, 639, 179, 1429, 2552, 971, 1851, 1764, 716, 1757, 1556, 983, 1582, 1448, 100, 3504, 138, 987, 46, 72, 716, 741, 1483, 701, 795, 913, 1105, 111, 1151, 439, 600, 63, 961, 1412, 1407, 584, 790, 237, 4565, 578, 519, 596, 1809, 591, 152, 1994, 920, 613, 4158, 93, 531, 1000, 462, 275, 221, 690, 2365, 580, 657, 272, 143, 52, 121, 190, 714, 537, 358, 215, 175, 1174, 660, 1588, 195, 1326, 1423, 1944, 518, 189, 1464, 716, 1434, 127, 762, 751, 1993, 734, 1019, 885, 857, 1031, 1001, 673, 304, 339, 676, 420, 1357, 130, 410, 445, 1111, 1099, 746, 121, 554, 1336, 320, 851, 411, 1160, 747, 418, 1768, 1453, 387, 1067, 935, 472, 1465, 1031, 538, 39, 470, 1613, 449, 38, 1221, 538, 692, 170, 545, 542, 685, 914, 1891, 533, 1409, 588, 1317, 1452, 527, 257, 1311, 1138, 1265, 1208, 1066, 1367, 61, 794, 304, 374, 1608, 1381, 140, 546, 646, 1751, 180, 260, 836, 682, 552, 95, 1544, 114, 591, 1100, 88, 3996, 1104, 166, 942, 2099, 466, 2096, 270, 2099, 166, 1768, 372, 2099, 250, 2097, 1246, 225, 75, 647, 287, 4079, 1038, 329, 1055, 171, 1279, 27, 534, 318, 75, 114, 1889, 358, 1911, 681, 1009, 696, 996, 1639, 1723, 712, 60, 1748, 1244, 1998, 716, 374, 2013, 67, 552, 1020, 1006, 1589, 923, 1622, 1562, 1062, 1609, 1787, 1417, 304, 1667, 1773, 111, 1853, 2071, 73, 215, 246, 46, 612, 1898, 517, 273, 2007, 5880, 848, 391, 793, 268, 199, 497, 437, 971, 593, 427, 1168, 884, 273, 548, 133, 1057, 79, 680, 1197, 1497, 61, 1169, 561, 119, 113, 257, 3002, 1461, 93, 263, 58, 700, 40, 1338, 1324, 40, 535, 737, 376, 1086, 554, 1555, 181, 141, 351, 57, 299, 338, 1120, 653, 618, 87, 709, 89, 491, 91, 1125, 1903, 1835, 760, 937, 241, 412, 704, 169, 934, 896, 194, 410, 689, 211, 2053, 108, 2034, 1614, 702, 1761, 581, 664, 1177, 964, 483, 573, 1297, 323, 419, 825, 305, 1485, 3695, 1794, 1068, 1016, 125, 1321, 1028, 1695, 856, 501, 1447, 928, 515, 145, 1566, 1633, 1331, 358, 1272, 83, 1636, 738, 1083, 644, 853, 466, 647, 686, 1612, 253, 1275, 173, 591, 1515, 996, 442, 39, 1182, 1976, 861, 1629, 246, 80, 152, 298, 397, 250, 884, 496, 439, 280, 239, 739, 1027, 402, 1054, 108, 335, 492, 313, 247, 437, 1079, 1027, 1218, 558, 1566, 902, 567, 159, 494, 519, 216, 656, 495, 86, 628, 525, 196, 1458, 1869, 301, 633, 1830, 893, 783, 383, 1463, 720, 355, 343, 661, 779, 461, 829, 245, 190, 1626, 1249, 2041, 337, 349, 1797, 1592, 457, 84, 1380, 1474, 3361, 286, 109, 1803, 1989, 529, 4529, 742, 1262, 1176, 150, 141, 433, 1417, 5214, 120, 551, 484, 37, 705, 471, 706, 132, 882, 588, 173, 634, 537, 651, 535, 761, 94, 538, 256, 731, 170, 1339, 362, 133, 202, 458, 304, 924, 504, 2110, 728, 291, 1034, 105, 733, 1045, 269, 200, 670, 186, 1502, 305, 925, 148, 667, 400, 851, 314, 238, 556, 279, 1600, 137, 333, 406, 1137, 1758, 213, 169, 701, 582, 1144, 341, 1695, 129, 1025, 1679, 1685, 1471, 397, 2102, 163, 258, 1206, 257, 103, 1530, 194, 59, 922, 133, 64, 79, 1105, 770, 321, 83, 1507, 284, 1764, 1313, 392, 884, 78, 879, 253, 465, 494, 2376, 97, 1045, 592, 453, 104, 483, 344, 784, 1675, 319, 555, 780, 158, 248, 889, 1835, 809, 123, 1292, 139, 1832, 796, 1069, 1690, 128, 1296, 1331, 1481, 1164, 1841, 1796, 1037, 329, 652, 1751, 2558, 1229, 1310, 276, 41, 86, 1568, 1986, 2008, 263, 107, 158, 90, 865, 170, 1848, 1844, 1338, 1983, 496, 311, 1503, 387, 420, 124, 1871, 860, 1007, 94, 334, 1697, 487, 420, 146, 350, 462, 371, 154, 846, 193, 535, 80, 79, 276, 249, 433, 1067, 1809, 520, 1937, 394, 956, 68, 325, 393, 976, 87, 440, 1713, 139, 416, 470, 679, 377, 370, 1029, 83, 436, 557, 477, 804, 302, 780, 646, 79, 271, 608, 1744, 1859, 540, 226, 1838, 85, 540, 1005, 1002, 618, 1133, 1720, 1637, 175, 1303, 1477, 1607, 530, 1496, 1961, 1299, 830, 141, 1657, 723, 1635, 1671, 138, 100, 1675, 123, 1662, 431, 1680, 507, 891, 1789, 1521, 461, 906, 1131, 190, 235, 571, 151, 280, 536, 1082, 991, 2009, 353, 452, 383, 1361, 691, 169, 1244, 412, 241, 1210, 1095, 980, 413, 492, 954, 375, 463, 684, 593, 554, 114, 958, 909, 327, 651, 1785, 1147, 145, 1556, 1838, 443, 2090, 1790, 250, 30, 97, 730, 1417, 1148, 219, 250, 1012, 113, 1187, 583, 1497, 127, 615, 127, 296, 557, 480, 160, 1301, 1112, 1993, 1996, 2098, 1125, 1997, 1954, 151, 153, 153, 700, 605, 704, 433, 152, 1582, 1574, 7115, 1457, 685, 89, 928, 9, 116, 908, 107, 926, 1396, 667, 130, 193, 840, 1071, 1066, 416, 195, 359, 193, 172, 689, 1617, 99, 267, 1043, 378, 562, 78, 70, 451, 417, 39, 1014, 1977, 378, 558, 416, 1210, 407, 501, 735, 1470, 735, 146, 586, 844, 761, 6449, 6486, 844, 350, 440, 2177, 621, 932, 397, 439, 90, 381, 90, 1091, 773, 465, 828, 492, 367, 841, 523, 27, 2426, 140, 1639, 1804, 1678, 2171, 143, 374, 112, 448, 238, 49, 638, 766, 153, 186, 1522, 1806, 1420, 1151, 102, 1467, 113, 80, 209, 191, 109, 109, 102, 109, 122, 765, 427, 282, 709, 748, 747, 482, 455, 182, 221, 168, 747, 347, 378, 380, 568, 449, 663, 1504, 131, 183, 139, 643, 113, 92, 752, 647, 171, 361, 133, 888, 1091, 209, 716, 768, 324, 678, 1920, 153, 1283, 620, 1730, 197, 1036, 750, 1710, 1782, 2727, 1177, 3234, 1486, 182, 651, 636, 1886, 213, 595, 2255, 609, 332, 219, 316, 283, 484, 1558, 111, 86, 139, 244, 743, 235, 537, 125, 199, 448, 257, 864, 211, 915, 1047, 1597, 1591, 632, 803, 888, 628, 911, 1011, 942, 522, 338, 1119, 992, 1446, 714, 524, 762, 608, 531, 137, 1974, 191, 1183, 866, 2006, 196, 518, 67, 254, 114, 1962, 157, 205, 850, 78, 110, 177, 469, 823, 54, 659, 354, 209, 559, 339, 698, 185, 1390, 119, 358, 320, 649, 249, 745, 905, 138, 2896, 990, 167, 956, 1130, 2971, 1254, 213, 1618, 358, 1136, 1324, 1089, 1489, 1490, 1480, 1206, 1047, 1371, 327, 1111, 1801, 1320, 747, 1096, 1461, 393, 1047, 1140, 280, 1708, 1725, 313, 83, 467, 451, 710, 477, 276, 225, 150, 278, 1805, 1806, 980, 544, 770, 907, 950, 914, 44, 515, 975, 1056, 1540, 1647, 1814, 96, 1567, 966, 81, 317, 2030, 124, 360, 242, 1457, 43, 512, 3802, 835, 2021, 672, 1427, 472, 1300, 128, 472, 275, 4535, 1231, 1115, 651, 3193, 348, 4331, 1234, 251, 4338, 607, 706, 644, 1119, 1336, 632, 69, 4094, 296, 177, 1614, 267, 757, 868, 1034, 621, 1693, 1694, 1202, 707, 781, 442, 439, 1696, 909, 639, 1570, 1375, 166, 1005, 915, 204, 202, 1330, 1342, 561, 1957, 844, 495, 582, 1385, 653, 1074, 139, 610, 629, 565, 142, 1301, 57, 599, 555, 275, 627, 842, 1761, 695, 1824, 198, 1265, 246, 1145, 1581, 1074, 1446, 1598, 107, 142, 462, 1365, 1043, 690, 1472, 283, 620, 751, 960, 359, 1430, 886, 1632, 828, 872, 1428, 1007, 53, 1906, 190, 1509, 1570, 121, 48, 1408, 1453, 1005, 1006, 1714, 418, 991, 1651, 1584, 281, 2107, 1008, 268, 836, 1471, 941, 378, 1582, 1381, 292, 1106, 532, 4535, 295, 146, 253, 944, 1953, 395, 1326, 358, 517, 11319, 612, 294, 2852, 552, 551, 140, 1889, 303, 728, 1908, 1892, 1895, 1846, 1725, 1894, 2518, 1899, 2563, 2019, 1119, 226, 59, 1278, 776, 669, 1450, 737, 943, 115, 431, 1605, 86, 1265, 369, 657, 447, 1330, 797, 997, 1001, 781, 3120, 1394, 3338, 253, 1998, 546, 885, 790, 50, 62, 1543, 1114, 12372, 567, 1207, 512, 620, 1927, 515, 2263, 1098, 229, 1265, 1098, 1426, 203, 1572, 1850, 841, 1810, 1708, 1740, 421, 463, 1683, 308, 313, 457, 317, 1744, 574, 501, 543, 334, 1085, 992, 115, 519, 334, 269, 1594, 1624, 389, 167, 1372, 131, 257, 235, 1629, 1681, 593, 596, 960, 1565, 116, 554, 1444, 2504, 114, 156, 629, 1004, 513, 243, 213, 1447, 287, 246, 1309, 1001, 412, 2437, 1124, 721, 1092, 744, 905, 282, 767, 1271, 459, 705, 1300, 836, 1927, 652, 634, 4454, 429, 1874, 319, 1131, 506, 1355, 812, 1553, 2418, 1262, 1985, 833, 1378, 218, 236, 227, 862, 1103, 860, 548, 697, 525, 831, 286, 107, 365, 903, 197, 1743, 209, 775, 1405, 734, 338, 884, 214, 746, 466, 670, 1245, 604, 944, 1715, 1229, 1574, 1651, 1753, 1618, 1715, 833, 1676, 759, 37, 114, 1550, 1413, 546, 116, 726, 837, 1488, 757, 780, 150, 147, 1378, 249, 604, 1984, 295, 413, 192, 665, 397, 486, 1078, 347, 73, 1714, 239, 519, 129, 1806, 1008, 1866, 884, 73, 141, 1501, 370, 1962, 738, 359, 763, 188, 110, 130, 145, 360, 1963, 351, 1067, 101, 399, 36, 304, 724, 1424, 1301, 169, 86, 323, 517, 658, 261, 300, 824, 1288, 1656, 742, 67, 1757, 1436, 150, 1786, 2031, 818, 190, 1477, 1480, 344, 1615, 1951, 53, 839, 307, 538, 129, 619, 539, 194, 334, 1873, 457, 190, 512, 345, 537, 273, 298, 1454, 310, 543, 604, 1544, 1570, 545, 541, 2001, 551, 132, 388, 547, 833, 96, 174, 705, 69, 933, 1296, 1554, 823, 633, 242, 528, 263, 2087, 332, 1610, 775, 223, 775, 115, 1306, 209, 638, 1636, 2016, 1331, 1332, 69, 1478, 1740, 623, 269, 1955, 1083, 1145, 4013, 1166, 1149, 665, 1137, 116, 1042, 295, 156, 533, 621, 188, 2001, 740, 371, 220, 1011, 483, 1043, 518, 1135, 1481, 485, 1819, 762, 1693, 115, 520, 1809, 819, 1779, 142, 1653, 1610, 749, 78, 1273, 723, 1121, 544, 901, 83, 150, 204, 718, 1658, 273, 1051, 1919, 806, 1058, 1508, 1009, 992, 540, 1807, 1919, 1086, 915, 1812, 604, 912, 1139, 976, 413, 1018, 595, 1023, 853, 918, 752, 943, 236, 838, 156, 147, 1125, 1126, 142, 62, 1711, 1874, 1335, 166, 340, 241, 350, 322, 815, 232, 883, 1008, 1247, 257, 363, 1582, 797, 972, 1117, 243, 291, 1005, 528, 1627, 989, 373, 883, 1840, 184, 2041, 1580, 2015, 915, 155, 628, 686, 124, 1713, 889, 53, 198, 726, 597, 899, 236, 298, 109, 827, 948, 683, 824, 269, 1789, 105, 984, 1340, 787, 79, 624, 356, 519, 79, 646, 771, 145, 728, 1081, 187, 296, 88, 150, 171, 215, 1593, 666, 155, 1944, 1032, 504, 908, 767, 507, 1119, 741, 229, 666, 403, 1183, 97, 99, 202, 360, 1001, 280, 292, 781, 381, 1342, 443, 1105, 48, 1506, 1681, 1225, 758, 160, 1556, 1015, 669, 181, 1778, 1556, 1175, 1811, 824, 347, 708, 255, 1073, 1546, 173, 642, 694, 2043, 98, 97, 520, 561, 969, 1291, 595, 494, 162, 97, 536, 180, 526, 205, 634, 244, 187, 212, 319, 109, 679, 260, 1120, 396, 452, 405, 966, 977, 414, 726, 233, 429, 452, 268, 115, 950, 73, 122, 264, 256, 314, 641, 578, 436, 1765, 524, 222, 693, 80, 268, 258, 1066, 858, 189, 1364, 143, 1053, 211, 1756, 67, 512, 1609, 596, 227, 614, 276, 159, 162, 325, 1727, 107, 128, 62, 244, 68, 62, 1309, 231, 1314, 401, 153, 525, 486, 458, 378, 153, 614, 109, 178, 1020, 971, 1023, 374, 1459, 1012, 403, 987, 1016, 1105, 694, 118, 222, 70, 455, 105, 196, 110, 316, 209, 1323, 601, 207, 540, 388, 1414, 1253, 253, 226, 68, 394, 341, 469, 62, 275, 538, 1768, 67, 117, 702, 748, 1262, 142, 757, 706, 45, 1119, 397, 941, 2155, 1550, 1595, 2053, 169, 463, 455, 1928, 116, 214, 699, 301, 944, 1208, 833, 113, 1496, 1029, 148, 841, 711, 129, 1315, 706, 344, 731, 1643, 376, 588, 769, 152, 303, 929, 2454, 63, 1559, 639, 257, 1631, 1722, 1831, 94, 1083, 2087, 1193, 103, 75, 2008, 686, 1642, 879, 1906, 514, 601, 266, 2084, 120, 1681, 2062, 347, 810, 1689, 400, 735, 172, 400, 397, 600, 1406, 257, 515, 750, 568, 99, 961, 223, 397, 1446, 947, 726, 101, 1216, 1518, 223, 163, 119, 117, 353, 647, 427, 1005, 1917, 201, 134, 386, 431, 880, 1682, 1410, 1544, 496, 741, 242, 1700, 2340, 586, 1984, 232, 328, 239, 225, 1551, 1314, 245, 522, 374, 1213, 86, 1048, 1112, 197, 161, 643, 803, 668, 349, 322, 51, 555, 559, 1551, 1060, 383, 519, 476, 195, 415, 136, 178, 743, 237, 1339, 1185, 1171, 182, 219, 568, 712, 1311, 803, 62, 737, 448, 270, 953, 2004, 546, 1377, 392, 401, 626, 1053, 124, 622, 1457, 1353, 555, 585, 1484, 114, 368, 2063, 2055, 597, 1792, 286, 580, 326, 997, 309, 428, 800, 551, 475, 459, 518, 793, 1040, 420, 793, 283, 846, 223, 805, 1324, 496, 874, 558, 1662, 1028, 598, 553, 908, 188, 235, 561, 1167, 232, 609, 916, 962, 119, 290, 451, 269, 1873, 610, 449, 620, 969, 1254, 769, 1459, 1547, 685, 904, 956, 1402, 2567, 762, 384, 689, 114, 668, 209, 384, 221, 224, 1621, 31, 1975, 447, 633, 262, 180, 64, 1346, 1545, 110, 105, 293, 109, 275, 648, 1850, 297, 1532, 849, 191, 195, 1678, 832, 512, 1537, 674, 346, 825, 385, 451, 682, 1233, 1953, 1537, 1610, 428, 1901, 790, 1516, 1683, 1246, 706, 1241, 246, 1097, 257, 1276, 386, 432, 1057, 1742, 42, 1581, 1604, 132, 941, 1783, 1838, 286, 662, 1010, 1667, 663, 673, 816, 97, 1137, 111, 1946, 60, 390, 390, 1525, 551, 602, 463, 117, 1128, 968, 253, 1956, 1425, 180, 1311, 79, 786, 812, 820, 756, 862, 116, 4348, 240, 216, 347, 652, 734, 647, 83, 1302, 114, 1628, 965, 219, 868, 899, 1429, 632, 873, 917, 894, 602, 4970, 435, 1709, 52, 123, 1714, 164, 570, 1777, 257, 343, 300, 1548, 522, 73, 530, 1190, 1866, 195, 371, 1418, 898, 1179, 5124, 326, 1646, 1386, 1435, 335, 293, 127, 1345, 517, 1295, 303, 1090, 863, 425, 1836, 1923, 1345, 603, 378, 1017, 642, 636, 1366, 1285, 327, 53, 1008, 1403, 371, 1135, 1303, 1183, 350, 1847, 122, 896, 1263, 1705, 554, 145, 1566, 1968, 692, 50, 821, 431, 768, 1037, 669, 88, 1375, 1037, 750, 364, 250, 2286, 110, 69, 430, 120, 2283, 851, 96, 343, 1314, 79, 1155, 568, 1209, 167, 972, 916, 219, 1336, 766, 1023, 66, 1211, 631, 347, 1619, 925, 1752, 312, 55, 804, 205, 460, 1104, 755, 223, 671, 1279, 296, 1423, 1186, 1678, 539, 980, 1026, 986, 728, 247, 411, 655, 465, 148, 583, 71, 248, 1099, 1662, 206, 298, 237, 1390, 307, 1619, 1742, 596, 1043, 1383, 377, 1519, 1528, 1201, 1293, 153, 391, 712, 1173, 342, 1040, 1151, 1293, 98, 125, 76, 238, 1556, 36, 987, 447, 1054, 379, 332, 1127, 1639, 831, 1199, 1065, 907, 519, 328, 943, 313, 1395, 430, 44, 154, 727, 158, 1574, 1380, 158, 42, 1042, 1580, 2718, 365, 1323, 1570, 914, 156, 1015, 160, 64, 1422, 1073, 1381, 1027, 1032, 98, 564, 1242, 195, 1189, 598, 430, 1509, 1261, 1442, 276, 1392, 1371, 1412, 497, 1025, 986, 118, 1293, 225, 512, 1769, 228, 629, 754, 535, 1127, 630, 657, 162, 826, 328, 1161, 1480, 5457, 1146, 1460, 1937, 1413, 957, 1987, 1408, 1828, 1439, 465, 1395, 861, 1434, 1994, 1440, 777, 1438, 1271, 440, 1046, 743, 2031, 552, 1275, 1989, 1929, 96, 1741, 282, 425, 1587, 181, 483, 1290, 814, 228, 1935, 418, 284, 410, 336, 206, 1644, 572, 551, 425, 702, 853, 142, 2075, 476, 1629, 556, 574, 78, 294, 2398, 1825, 2031, 1772, 382, 336, 380, 1452, 1288, 1799, 478, 2059, 302, 465, 1178, 519, 1800, 1786, 1698, 1430, 544, 554, 1750, 304, 110, 1157, 437, 376, 245, 376, 471, 536, 434, 402, 592, 1069, 452, 462, 231, 1664, 1782, 1567, 1728, 975, 854, 331, 774, 388, 603, 911, 693, 177, 1201, 970, 901, 830, 872, 983, 532, 1666, 287, 364, 398, 739, 480, 80, 666, 662, 945, 143, 452, 1052, 276, 390, 354, 89, 1003, 1499, 1312, 1076, 795, 333, 299, 202, 1189, 1309, 598, 860, 435, 927, 356, 1284, 1902, 688, 375, 494, 67, 584, 902, 515, 1408, 405, 740, 1533, 1989, 498, 1621, 1487, 591, 86, 585, 2021, 2815, 1917, 730, 840, 5904, 944, 1288, 239, 3153, 915, 889, 1944, 533, 2624, 120, 706, 142, 1348, 1016, 105, 1489, 422, 403, 1056, 163, 1860, 319, 1628, 1510, 140, 193, 1864, 335, 131, 896, 1929, 323, 1338, 202, 300, 707, 2441, 1469, 158, 329, 444, 1904, 890, 124, 1246, 985, 293, 36, 1182, 823, 797, 272, 1485, 1762, 280, 1998, 1860, 113, 1817, 1884, 661, 1005, 644, 1109, 906, 984, 2068, 1807, 1498, 942, 1552, 593, 1282, 930, 186, 215, 670, 951, 273, 307, 420, 677, 594, 881, 139, 689, 201, 402, 472, 241, 37, 1062, 228, 1166, 343, 653, 148, 2420, 324, 2908, 104, 1988, 1053, 4739, 1244, 555, 173, 2803, 573, 5108, 519, 132, 1957, 104, 988, 472, 86, 528, 693, 728, 50, 87, 990, 992, 86, 992, 696, 438, 50, 994, 82, 789, 856, 32, 3212, 1037, 362, 3792, 63, 369, 2071, 32, 144, 1924, 3931, 1653, 2463 ], "xaxis": "x", "yaxis": "y" } ], "layout": { "barmode": "relative", "height": 400, "legend": { "title": { "text": "Category" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Descriptions Length Distribution" }, "width": 800, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Description Length" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "Density" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.histogram(\n", " data,\n", " x=\"description_length\",\n", " title=\"Descriptions Length Distribution\",\n", " **style_kwargs,\n", ")\n", "\n", "if is_custom_style:\n", " vis.style_background(fig)\n", "\n", "fig.update_xaxes(title=\"Description Length\")\n", "fig.update_yaxes(title=\"Density\")\n", "fig.update_layout(legend_title_text=\"Category\", width=800, height=400)\n", "\n", "fig.show()\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "a467dd11", "metadata": { "scrolled": false }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "bingroup": "x", "histnorm": "density", "hovertemplate": "category=Household
description_length=%{x}
density=%{y}", "legendgroup": "Household", "marker": { "color": "#636efa", "opacity": 1, "pattern": { "shape": "" } }, "name": "Household", "offsetgroup": "Household", "orientation": "v", "showlegend": true, "type": "histogram", "x": [ 1338, 346, 1316, 1091, 989, 1745, 1625, 1169, 616, 400, 609, 102, 1053, 343, 1781, 1739, 483, 1734, 1125, 357, 304, 1169, 438, 532, 55, 348, 329, 909, 391, 642, 412, 165, 879, 575, 536, 258, 323, 816, 559, 411, 923, 1712, 123, 57, 341, 58, 366, 760, 1286, 63, 1718, 427, 58, 786, 419, 80, 49, 522, 311, 93, 662, 294, 404, 805, 267, 287, 710, 213, 487, 350, 351, 489, 414, 977, 511, 152, 502, 475, 1245, 332, 359, 1473, 494, 331, 361, 490, 365, 367, 571, 305, 615, 105, 932, 86, 630, 299, 303, 298, 1414, 465, 651, 178, 623, 739, 627, 501, 340, 160, 435, 388, 110, 137, 375, 623, 191, 358, 551, 259, 193, 350, 1469, 245, 141, 393, 604, 596, 375, 652, 341, 447, 577, 322, 820, 473, 602, 334, 922, 653, 208, 233, 662, 106, 239, 1484, 3110, 370, 390, 32, 497, 765, 43, 893, 84, 324, 475, 63, 797, 527, 336, 444, 3226, 270, 249, 742, 42, 138, 174, 334, 254, 317, 62, 367, 552, 434, 851, 1373, 716, 1812, 54, 229, 312, 478, 1448, 782, 563, 1170, 419, 2155, 349, 269, 621, 968, 292, 1464, 526, 250, 799, 268, 515, 123, 353, 1454, 569, 794, 578, 489, 323, 1444, 342, 295, 40, 267, 715, 852, 216, 201, 158, 352, 630, 767, 635, 384, 781, 317, 577, 569, 960, 703, 710, 707, 702, 959, 699, 573, 710, 707, 999, 1098, 731, 1766, 347, 502, 564, 1271, 884, 997, 322, 471, 532, 581, 1095, 501, 993, 43, 1008, 980, 191, 560, 981, 216, 546, 255, 72, 478, 545, 313, 404, 450, 252, 407, 46, 350, 607, 258, 627, 513, 174, 1043, 570, 464, 1545, 512, 403, 832, 74, 649, 96, 226, 602, 672, 143, 231, 205, 802, 669, 219, 275, 972, 703, 476, 99, 1354, 1023, 605, 585, 576, 212, 116, 184, 739, 585, 1490, 912, 343, 956, 656, 924, 1434, 431, 1229, 1808, 578, 1847, 431, 616, 597, 51, 83, 107, 223, 227, 226, 220, 233, 1199, 1816, 855, 62, 788, 2833, 2167, 2858, 2822, 1818, 1782, 1274, 1725, 895, 1275, 206, 547, 675, 1056, 510, 894, 648, 889, 1087, 239, 134, 132, 141, 976, 1105, 364, 642, 550, 189, 600, 213, 637, 557, 436, 824, 78, 2003, 653, 1176, 832, 441, 2051, 1349, 509, 140, 399, 424, 381, 946, 416, 742, 691, 165, 818, 631, 752, 436, 872, 569, 847, 980, 1011, 597, 770, 717, 293, 520, 455, 467, 1103, 599, 743, 523, 91, 463, 292, 1981, 1005, 1933, 1878, 1350, 1972, 1960, 1976, 1954, 614, 1940, 1435, 1089, 746, 1958, 1933, 105, 302, 237, 577, 404, 63, 590, 1847, 1549, 57, 1554, 95, 379, 1511, 810, 295, 1533, 861, 326, 1422, 593, 942, 240, 2068, 1569, 1460, 2045, 66, 548, 740, 180, 413, 414, 324, 431, 130, 675, 198, 1083, 515, 229, 1917, 161, 419, 1380, 607, 671, 404, 120, 376, 671, 185, 166, 291, 514, 375, 145, 559, 765, 616, 344, 1772, 825, 1666, 492, 57, 370, 1244, 1300, 953, 191, 335, 118, 1355, 1761, 76, 551, 385, 719, 307, 183, 186, 373, 531, 1454, 336, 427, 828, 911, 191, 244, 254, 120, 1147, 853, 238, 336, 684, 156, 350, 1063, 350, 370, 758, 623, 1243, 451, 1370, 429, 426, 363, 141, 294, 294, 121, 572, 800, 297, 362, 490, 1118, 2094, 1660, 83, 1823, 1106, 53, 333, 1138, 1097, 328, 446, 74, 1862, 389, 1365, 538, 2044, 604, 1154, 667, 847, 1161, 644, 478, 425, 1610, 407, 655, 26, 671, 654, 721, 708, 642, 118, 189, 598, 149, 1260, 1293, 1273, 431, 1233, 40, 1522, 1251, 610, 739, 400, 691, 369, 753, 566, 358, 207, 535, 642, 424, 445, 173, 351, 673, 486, 105, 333, 549, 442, 78, 105, 143, 393, 1175, 467, 353, 207, 485, 213, 358, 358, 357, 810, 771, 919, 832, 1745, 236, 446, 628, 922, 588, 1945, 641, 784, 33, 1780, 2010, 522, 242, 109, 1651, 426, 1355, 95, 730, 250, 762, 952, 1008, 466, 474, 703, 281, 799, 732, 87, 190, 118, 1920, 734, 103, 1907, 1083, 313, 147, 604, 142, 582, 70, 819, 178, 336, 423, 1663, 505, 1297, 663, 340, 332, 180, 1922, 461, 913, 984, 1444, 330, 1010, 295, 373, 1603, 807, 426, 570, 893, 847, 241, 804, 975, 456, 675, 605, 831, 1457, 593, 785, 475, 702, 1523, 490, 451, 1042, 570, 619, 483, 534, 780, 319, 452, 833, 1500, 1038, 307, 804, 464, 1042, 483, 483, 1495, 483, 467, 482, 930, 833, 111, 1038, 466, 411, 483, 1212, 341, 644, 136, 1737, 657, 573, 1922, 638, 127, 553, 554, 712, 1168, 1040, 136, 600, 624, 653, 687, 1567, 1927, 632, 1932, 908, 113, 1930, 1752, 788, 1176, 636, 845, 1180, 326, 709, 188, 722, 104, 114, 225, 102, 326, 381, 442, 326, 660, 794, 90, 1530, 916, 366, 784, 849, 749, 917, 771, 806, 299, 777, 749, 762, 286, 1279, 517, 416, 749, 275, 136, 778, 98, 301, 864, 804, 758, 391, 1013, 689, 738, 624, 656, 421, 761, 507, 741, 627, 1186, 235, 850, 726, 368, 127, 1088, 377, 395, 857, 761, 384, 886, 672, 1028, 367, 312, 891, 376, 615, 278, 495, 1341, 193, 1499, 339, 184, 499, 89, 533, 521, 525, 527, 545, 541, 485, 570, 551, 528, 536, 314, 524, 183, 721, 1580, 27, 412, 245, 441, 875, 49, 959, 732, 955, 262, 89, 644, 170, 1074, 141, 467, 234, 179, 152, 188, 161, 334, 109, 218, 512, 725, 261, 516, 294, 29, 302, 426, 1288, 1956, 643, 2141, 2017, 982, 986, 1396, 2018, 977, 422, 798, 2027, 2018, 1245, 764, 1848, 1840, 981, 932, 935, 445, 447, 457, 1111, 1027, 1673, 762, 1879, 132, 33, 215, 738, 1227, 733, 202, 555, 297, 792, 670, 61, 679, 418, 677, 520, 201, 78, 34, 43, 343, 490, 430, 696, 1543, 506, 1157, 136, 697, 1072, 712, 858, 47, 58, 127, 114, 818, 335, 464, 95, 1545, 583, 705, 406, 678, 1000, 131, 64, 804, 458, 715, 1243, 797, 261, 1724, 1274, 656, 713, 958, 1466, 1001, 611, 999, 521, 789, 1731, 83, 1686, 336, 346, 82, 263, 426, 999, 261, 334, 319, 447, 454, 153, 903, 1403, 323, 269, 491, 425, 323, 777, 110, 606, 623, 879, 513, 670, 334, 879, 1506, 636, 162, 517, 518, 609, 712, 1487, 99, 49, 414, 85, 339, 384, 335, 371, 1285, 1094, 90, 899, 215, 641, 383, 53, 165, 219, 51, 532, 39, 1209, 420, 240, 650, 421, 668, 645, 283, 148, 401, 337, 379, 239, 620, 145, 127, 381, 1484, 71, 581, 381, 605, 839, 355, 626, 432, 882, 1735, 495, 571, 794, 676, 246, 780, 1634, 789, 993, 960, 1068, 92, 1926, 1902, 326, 550, 764, 582, 879, 446, 568, 140, 581, 1103, 916, 409, 180, 1612, 765, 92, 408, 770, 1856, 551, 627, 405, 106, 941, 393, 424, 877, 342, 850, 276, 331, 331, 791, 464, 270, 49, 43, 841, 881, 334, 754, 353, 116, 487, 759, 45, 753, 365, 148, 208, 1259, 633, 1079, 200, 580, 664, 1920, 1109, 234, 807, 367, 365, 1306, 2121, 365, 376, 1187, 134, 408, 418, 578, 433, 359, 369, 69, 417, 668, 1597, 368, 2139, 531, 1056, 1595, 205, 214, 134, 1613, 211, 74, 207, 1396, 1611, 1097, 1611, 2171, 205, 662, 194, 576, 2003, 2122, 1396, 2101, 1976, 1976, 1968, 1243, 1984, 472, 464, 728, 1378, 1291, 307, 506, 278, 184, 307, 100, 110, 90, 925, 96, 720, 588, 1707, 692, 962, 809, 456, 531, 38, 651, 343, 75, 1375, 298, 81, 379, 409, 1909, 159, 247, 605, 415, 378, 437, 612, 295, 853, 853, 107, 84, 419, 349, 776, 196, 883, 591, 162, 1103, 527, 1207, 657, 524, 97, 387, 811, 113, 762, 640, 177, 130, 326, 679, 777, 94, 778, 51, 877, 747, 868, 113, 863, 850, 758, 364, 1061, 444, 1085, 93, 1453, 278, 1016, 375, 817, 1544, 68, 95, 81, 790, 783, 1893, 886, 726, 1789, 290, 578, 952, 1528, 126, 220, 63, 779, 1440, 1228, 172, 817, 85, 1147, 931, 896, 220, 342, 1244, 1295, 419, 173, 435, 408, 624, 276, 480, 28, 166, 59, 1211, 337, 410, 271, 861, 828, 1905, 542, 92, 252, 836, 598, 1024, 400, 458, 1104, 604, 865, 485, 1749, 978, 369, 1456, 830, 453, 474, 456, 194, 616, 624, 346, 351, 337, 622, 386, 774, 440, 492, 245, 540, 550, 336, 379, 610, 59, 374, 1013, 208, 746, 494, 746, 493, 894, 1188, 899, 825, 702, 746, 820, 343, 374, 625, 756, 747, 41, 271, 259, 628, 408, 279, 408, 408, 386, 1031, 1217, 394, 215, 182, 261, 551, 68, 50, 1725, 204, 68, 470, 429, 204, 379, 901, 1732, 272, 415, 658, 911, 155, 44, 184, 45, 724, 44, 670, 141, 889, 396, 671, 1468, 287, 713, 588, 964, 1694, 516, 1730, 980, 647, 81, 920, 1538, 515, 174, 3114, 183, 1226, 429, 634, 333, 743, 793, 458, 550, 984, 396, 296, 472, 307, 141, 1805, 587, 1330, 1274, 392, 838, 627, 702, 695, 383, 438, 129, 410, 718, 83, 453, 743, 822, 880, 702, 161, 632, 664, 813, 1104, 636, 818, 88, 1007, 837, 126, 1241, 372, 391, 948, 581, 1081, 184, 407, 1222, 963, 552, 608, 77, 350, 1725, 597, 1459, 451, 1025, 948, 1033, 49, 1025, 429, 140, 174, 437, 65, 1963, 256, 37, 375, 767, 424, 268, 571, 523, 258, 760, 299, 109, 1149, 641, 541, 339, 565, 225, 775, 350, 472, 560, 536, 689, 617, 96, 1211, 279, 472, 183, 590, 104, 324, 547, 512, 692, 556, 524, 586, 73, 1340, 1997, 477, 500, 311, 295, 667, 862, 786, 344, 71, 37, 35, 922, 325, 381, 593, 349, 243, 206, 242, 228, 203, 166, 818, 427, 1017, 466, 1005, 65, 628, 431, 1609, 359, 55, 791, 719, 900, 912, 769, 147, 1674, 739, 693, 348, 850, 409, 726, 1150, 108, 232, 1260, 401, 1278, 622, 690, 823, 1282, 191, 341, 1170, 1498, 437, 703, 55, 170, 339, 1599, 1301, 65, 488, 168, 1745, 567, 212, 255, 1250, 255, 391, 487, 490, 477, 228, 563, 357, 215, 1470, 953, 1525, 300, 887, 1203, 260, 679, 1668, 1237, 391, 353, 402, 304, 451, 741, 1957, 753, 476, 405, 431, 643, 744, 388, 487, 614, 491, 375, 384, 415, 1308, 541, 783, 691, 1501, 281, 377, 388, 819, 584, 691, 1864, 683, 536, 322, 279, 121, 744, 528, 140, 2026, 720, 1021, 142, 1888, 1353, 515, 58, 153, 141, 1711, 371, 248, 1071, 683, 191, 297, 132, 1022, 384, 133, 785, 325, 238, 217, 798, 264, 385, 154, 2064, 346, 755, 769, 66, 400, 356, 161, 1932, 394, 326, 434, 851, 501, 793, 2390, 914, 793, 393, 911, 436, 1021, 440, 459, 1487, 96, 268, 309, 1100, 1355, 125, 884, 601, 476, 1106, 645, 364, 132, 319, 123, 67, 424, 490, 278, 922, 639, 241, 1392, 638, 866, 249, 162, 102, 578, 432, 160, 538, 253, 662, 503, 917, 333, 269, 658, 113, 330, 622, 477, 1020, 1115, 363, 1538, 351, 1005, 343, 654, 709, 887, 202, 655, 252, 290, 583, 102, 954, 551, 670, 638, 939, 1780, 545, 67, 898, 201, 202, 294, 1039, 711, 1442, 109, 76, 3538, 88, 1021, 1292, 103, 1994, 1113, 996, 1495, 146, 1067, 285, 915, 564, 444, 298, 78, 86, 39, 307, 4782, 417, 987, 944, 49, 221, 87, 195, 670, 325, 1028, 229, 787, 350, 1076, 973, 491, 1282, 392, 980, 1161, 1934, 1373, 245, 269, 768, 536, 270, 689, 118, 319, 871, 742, 479, 879, 219, 2518, 384, 895, 187, 412, 716, 1561, 342, 708, 509, 657, 257, 158, 564, 632, 107, 1052, 524, 534, 793, 465, 464, 1796, 1539, 448, 733, 183, 1495, 384, 179, 91, 69, 1845, 1246, 954, 1147, 871, 217, 900, 421, 105, 435, 639, 397, 2901, 2946, 1169, 955, 35, 169, 357, 182, 116, 420, 137, 635, 802, 797, 313, 300, 133, 590, 351, 181, 647, 435, 1187, 45, 645, 636, 372, 1110, 1071, 747, 336, 1269, 336, 399, 309, 606, 281, 458, 47, 528, 998, 686, 590, 979, 2166, 820, 794, 431, 1136, 337, 598, 942, 1019, 627, 544, 1021, 310, 609, 563, 356, 240, 646, 554, 67, 655, 311, 493, 1059, 529, 1104, 438, 870, 490, 262, 344, 312, 156, 410, 415, 184, 320, 977, 601, 453, 636, 632, 847, 224, 1784, 507, 402, 232, 536, 534, 198, 1206, 356, 568, 567, 564, 548, 378, 897, 959, 927, 1172, 390, 306, 888, 529, 984, 697, 942, 766, 560, 783, 320, 1443, 850, 754, 535, 846, 842, 672, 1332, 272, 548, 783, 658, 361, 79, 904, 1704, 1028, 468, 366, 324, 969, 205, 467, 978, 221, 49, 1189, 1108, 499, 615, 72, 1147, 585, 140, 596, 84, 1099, 155, 585, 982, 721, 617, 525, 176, 407, 453, 294, 508, 430, 316, 221, 661, 575, 761, 431, 718, 442, 220, 344, 1247, 44, 371, 1402, 390, 440, 433, 1605, 1351, 83, 2054, 1024, 221, 568, 376, 408, 425, 558, 295, 1659, 542, 274, 272, 281, 596, 396, 587, 584, 472, 410, 534, 1695, 96, 482, 1616, 1073, 677, 409, 604, 2051, 538, 1134, 996, 333, 454, 312, 704, 995, 88, 390, 811, 1498, 985, 291, 721, 539, 307, 793, 425, 324, 484, 410, 475, 485, 695, 287, 803, 1348, 558, 410, 98, 96, 324, 325, 1295, 160, 595, 880, 201, 412, 315, 694, 47, 473, 1000, 345, 53, 95, 267, 708, 190, 509, 704, 698, 673, 350, 400, 820, 887, 1203, 460, 962, 116, 817, 184, 228, 387, 1292, 172, 511, 494, 785, 977, 1011, 989, 1088, 1020, 996, 996, 998, 993, 982, 129, 908, 903, 1072, 286, 881, 1012, 845, 330, 387, 1409, 53, 73, 127, 308, 833, 1680, 37, 735, 566, 1573, 421, 357, 615, 972, 245, 808, 632, 562, 605, 334, 243, 303, 383, 1192, 203, 167, 524, 202, 359, 671, 725, 417, 84, 39, 279, 1019, 1398, 695, 641, 396, 424, 403, 483, 430, 566, 308, 745, 918, 83, 492, 266, 399, 911, 430, 431, 406, 36, 638, 236, 1123, 533, 1625, 466, 99, 223, 511, 34, 963, 157, 777, 594, 1878, 571, 1258, 665, 278, 1503, 579, 235, 209, 892, 750, 728, 714, 219, 474, 1576, 330, 769, 1072, 161, 300, 1292, 1069, 397, 1099, 1054, 1068, 1024, 229, 1107, 401, 1085, 1069, 1080, 1089, 1098, 1002, 985, 934, 722, 1202, 1546, 798, 949, 914, 1501, 865, 690, 901, 1708, 355, 92, 1188, 345, 624, 1876, 1069, 285, 709, 376, 344, 1715, 1077, 1095, 1828, 683, 72, 308, 155, 170, 84, 1040, 720, 830, 753, 858, 970, 227, 414, 74, 250, 1191, 314, 767, 715, 392, 653, 546, 1077, 1080, 359, 328, 136, 569, 238, 519, 507, 261, 575, 330, 113, 333, 160, 358, 1284, 737, 162, 833, 266, 997, 795, 422, 782, 1516, 282, 188, 398, 699, 754, 689, 567, 700, 732, 693, 567, 143, 650, 803, 645, 276, 804, 234, 523, 200, 827, 370, 794, 354, 482, 874, 362, 643, 509, 85, 138, 409, 87, 139, 340, 779, 836, 777, 710, 405, 789, 426, 814, 387, 810, 448, 440, 587, 626, 797, 883, 1301, 749, 798, 300, 910, 1361, 1594, 811, 675, 656, 1146, 251, 828, 1111, 194, 1196, 1217, 635, 311, 218, 223, 1152, 329, 641, 674, 220, 660, 792, 1112, 614, 277, 193, 429, 174, 805, 407, 357, 347, 576, 1144, 203, 150, 97, 372, 349, 558, 82, 862, 62, 908, 270, 1082, 576, 46, 1032, 1805, 1320, 559, 240, 794, 247, 295, 712, 651, 618, 966, 245, 513, 316, 896, 2001, 645, 531, 409, 562, 607, 1789, 726, 72, 232, 260, 117, 114, 469, 139, 523, 168, 528, 62, 1050, 1234, 1028, 639, 79, 630, 664, 358, 222, 961, 268, 1025, 302, 1291, 1279, 3172, 341, 585, 363, 66, 655, 646, 434, 1280, 343, 421, 264, 893, 497, 2025, 490, 116, 1080, 386, 329, 349, 1118, 754, 809, 402, 240, 372, 462, 318, 127, 90, 395, 929, 921, 147, 1086, 395, 83, 481, 420, 1992, 61, 59, 736, 1358, 1527, 180, 218, 714, 1368, 450, 1752, 1265, 1715, 769, 1124, 733, 127, 1119, 1041, 383, 210, 202, 100, 377, 97, 696, 387, 92, 699, 201, 1179, 51, 277, 302, 147, 566, 441, 197, 227, 1457, 755, 147, 463, 255, 401, 270, 204, 325, 484, 50, 329, 1025, 257, 133, 168, 377, 412, 166, 164, 166, 405, 94, 747, 652, 270, 372, 380, 148, 196, 1469, 231, 336, 672, 138, 129, 237, 450, 666, 232, 389, 221, 625, 364, 149, 212, 165, 200, 119, 199, 598, 204, 253, 616, 958, 321, 693, 280, 1304, 942, 697, 244, 695, 84, 696, 1507, 701, 648, 357, 762, 132, 592, 186, 641, 439, 826, 171, 328, 711, 753, 137, 572, 679, 495, 1593, 1287, 726, 516, 387, 540, 249, 281, 432, 1392, 170, 516, 392, 561, 431, 394, 578, 145, 111, 104, 194, 996, 115, 270, 607, 108, 633, 321, 301, 87, 116, 45, 122, 218, 218, 614, 421, 131, 260, 381, 141, 1056, 629, 168, 305, 191, 194, 1085, 799, 490, 394, 1300, 415, 1823, 467, 427, 113, 87, 434, 538, 199, 355, 349, 241, 651, 1622, 455, 172, 181, 45, 38, 1345, 1016, 668, 211, 500, 129, 939, 598, 700, 295, 123, 1220, 1834, 796, 1439, 476, 938, 584, 833, 1576, 1385, 718, 330, 235, 1837, 405, 962, 1226, 321, 831, 1495, 361, 710, 1005, 158, 379, 120, 1005, 104, 192, 1512, 72, 355, 976, 760, 965, 550, 343, 304, 173, 222, 26, 271, 427, 758, 497, 777, 949, 367, 205, 829, 798, 814, 132, 384, 844, 443, 82, 48, 55, 276, 537, 577, 497, 809, 669, 180, 267, 495, 1567, 459, 383, 487, 645, 437, 438, 829, 646, 457, 518, 663, 903, 665, 448, 518, 637, 641, 302, 469, 50, 304, 69, 255, 762, 515, 148, 2311, 138, 459, 591, 1328, 2286, 898, 402, 523, 419, 336, 350, 191, 495, 998, 405, 255, 316, 837, 671, 533, 447, 161, 459, 1623, 962, 403, 740, 984, 950, 976, 986, 946, 129, 86, 1028, 1043, 366, 374, 361, 1098, 155, 454, 385, 365, 1017, 1566, 374, 148, 162, 162, 1845, 613, 276, 161, 354, 456, 777, 853, 811, 820, 353, 1014, 497, 286, 677, 940, 158, 151, 60, 213, 184, 771, 522, 180, 1477, 1431, 951, 323, 1555, 164, 237, 183, 1501, 897, 1191, 71, 439, 1069, 245, 222, 206, 244, 233, 69, 68, 2172, 232, 972, 359, 1565, 1621, 557, 1799, 1663, 559, 1675, 1599, 1127, 1182, 75, 1850, 1841, 1822, 1938, 92, 94, 143, 308, 1843, 1931, 1942, 1777, 136, 547, 508, 325, 336, 125, 512, 342, 340, 541, 467, 1688, 88, 498, 531, 488, 496, 82, 307, 182, 1297, 1804, 95, 494, 333, 494, 509, 1648, 572, 745, 737, 774, 502, 401, 1402, 66, 946, 1557, 459, 310, 973, 93, 91, 209, 273, 685, 382, 606, 401, 538, 443, 349, 282, 1346, 860, 243, 562, 274, 544, 619, 603, 464, 339, 383, 1104, 111, 283, 294, 560, 223, 202, 543, 430, 1350, 1508, 231, 95, 521, 406, 951, 214, 493, 599, 659, 1346, 542, 1109, 626, 334, 336, 341, 346, 963, 212, 343, 593, 557, 632, 281, 177, 215, 1332, 547, 927, 471, 865, 814, 391, 620, 601, 529, 1864, 389, 423, 616, 172, 454, 415, 187, 90, 1169, 809, 381, 1540, 1378, 94, 1125, 1386, 375, 172, 372, 1652, 634, 363, 92, 479, 1462, 226, 97, 623, 1699, 379, 556, 598, 1727, 1996, 2008, 1993, 97, 215, 226, 596, 333, 2153, 597, 1569, 237, 910, 1541, 322, 479, 1245, 239, 591, 459, 494, 418, 1750, 584, 427, 429, 422, 132, 1235, 398, 429, 385, 432, 554, 444, 1229, 1122, 1660, 1621, 333, 1104, 1543, 445, 60, 311, 181, 1931, 1163, 428, 2019, 2127, 1927, 767, 67, 1212, 376, 64, 80, 182, 2026, 635, 514, 323, 181, 473, 97, 176, 2006, 175, 1243, 478, 821, 1628, 1125, 1733, 1111, 1142, 679, 343, 572, 584, 778, 810, 84, 602, 892, 381, 70, 102, 463, 237, 381, 88, 47, 749, 114, 245, 497, 644, 47, 61, 530, 535, 710, 346, 147, 514, 361, 352, 542, 1038, 818, 372, 99, 1727, 511, 372, 386, 322, 545, 364, 121, 758, 827, 386, 1196, 109, 408, 116, 553, 1376, 549, 921, 2180, 374, 552, 421, 913, 256, 573, 306, 317, 641, 259, 201, 508, 410, 261, 1813, 247, 717, 1497, 542, 732, 1289, 581, 966, 488, 480, 1778, 1277, 279, 246, 259, 415, 1169, 1940, 734, 1008, 1092, 547, 581, 554, 1009, 1148, 770, 445, 1010, 1587, 921, 1009, 994, 1010, 448, 516, 186, 541, 382, 479, 140, 480, 1158, 548, 1432, 370, 542, 511, 374, 419, 415, 545, 456, 289, 408, 501, 549, 302, 1913, 1395, 371, 502, 100, 1350, 633, 1192, 81, 45, 285, 80, 613, 86, 401, 557, 705, 738, 648, 559, 745, 959, 210, 891, 410, 713, 307, 258, 632, 1636, 348, 748, 666, 751, 891, 68, 277, 73, 137, 1712, 1800, 192, 1110, 116, 543, 971, 248, 131, 68, 414, 150, 507, 235, 69, 677, 221, 252, 150, 304, 288, 689, 665, 58, 62, 196, 634, 1741, 309, 197, 1854, 1278, 1712, 1782, 1747, 154, 85, 367, 391, 482, 1225, 147, 259, 50, 493, 633, 483, 442, 630, 632, 631, 498, 352, 585, 478, 469, 464, 446, 458, 1623, 477, 220, 55, 93, 454, 91, 196, 133, 1149, 473, 1570, 81, 408, 554, 178, 101, 467, 356, 175, 196, 520, 128, 1032, 223, 131, 328, 364, 304, 268, 341, 331, 157, 248, 179, 906, 395, 913, 1518, 36, 110, 961, 518, 308, 1787, 30, 1681, 240, 803, 1176, 258, 182, 669, 930, 1382, 84, 2234, 158, 732, 297, 1307, 856, 548, 1096, 730, 739, 337, 1304, 849, 860, 1615, 645, 425, 1780, 897, 353, 411, 407, 436, 343, 1621, 508, 1099, 871, 1223, 1216, 454, 351, 1368, 1378, 871, 1236, 1652, 1042, 808, 533, 653, 423, 65, 903, 1274, 348, 80, 923, 1136, 1107, 580, 1038, 193, 268, 453, 146, 375, 677, 690, 313, 1045, 419, 256, 109, 1035, 303, 730, 890, 1008, 554, 1159, 191, 1146, 90, 67, 1225, 556, 921, 153, 983, 66, 169, 223, 502, 1003, 87, 177, 683, 1845, 946, 449, 1569, 390, 508, 549, 979, 112, 782, 605, 867, 1256, 632, 1059, 1055, 774, 1278, 331, 1788, 637, 236, 75, 255, 767, 955, 635, 322, 594, 519, 1035, 193, 328, 335, 248, 641, 842, 337, 840, 1433, 86, 230, 773, 255, 159, 180, 350, 187, 367, 623, 896, 120, 220, 1581, 641, 410, 1785, 935, 585, 476, 514, 260, 1561, 1572, 474, 986, 477, 561, 237, 536, 448, 407, 416, 1624, 1365, 620, 341, 468, 713, 1420, 525, 236, 714, 348, 393, 397, 486, 403, 480, 547, 492, 289, 448, 104, 807, 107, 392, 57, 352, 449, 389, 488, 237, 2200, 148, 526, 1115, 497, 849, 110, 108, 531, 609, 1435, 270, 543, 138, 1294, 246, 746, 797, 707, 93, 491, 814, 730, 991, 520, 273, 251, 364, 414, 1325, 403, 223, 768, 406, 392, 110, 221, 637, 407, 860, 665, 698, 393, 730, 278, 440, 176, 1705, 2040, 721, 1732, 440, 1588, 1577, 1800, 613, 1268, 654, 1404, 317, 602, 359, 273, 1329, 565, 1062, 1328, 111, 584, 1123, 865, 188, 787, 408, 423, 276, 509, 408, 216, 873, 742, 110, 366, 297, 865, 1480, 813, 1452, 67, 1359, 965, 975, 68, 61, 1313, 1306, 1469, 64, 463, 1219, 451, 112, 496, 635, 416, 472, 506, 437, 921, 1198, 465, 379, 607, 193, 833, 400, 340, 687, 578, 943, 508, 265, 473, 261, 280, 443, 490, 404, 384, 704, 364, 1173, 1274, 384, 967, 182, 487, 399, 397, 368, 164, 273, 272, 249, 72, 76, 682, 378, 446, 249, 630, 679, 72, 73, 535, 394, 295, 322, 151, 435, 1160, 942, 581, 361, 726, 201, 247, 1383, 151, 1268, 1195, 1527, 371, 149, 757, 121, 180, 60, 111, 1201, 1505, 472, 1406, 494, 317, 1943, 1168, 1006, 758, 830, 274, 137, 61, 845, 95, 517, 735, 769, 1932, 721, 3017, 266, 1073, 360, 805, 1449, 305, 338, 145, 835, 1161, 811, 485, 527, 392, 1798, 555, 592, 1282, 394, 1082, 146, 1874, 220, 390, 362, 132, 110, 2197, 529, 138, 349, 1246, 130, 854, 404, 50, 128, 368, 875, 344, 207, 354, 374, 232, 294, 757, 963, 353, 1122, 608, 588, 184, 554, 448, 89, 621, 578, 905, 437, 1611, 43, 189, 376, 177, 303, 1359, 1740, 353, 92, 70, 363, 473, 177, 1455, 269, 327, 982, 235, 707, 238, 75, 653, 76, 1860, 314, 84, 517, 588, 633, 667, 784, 815, 571, 221, 311, 648, 171, 624, 61, 467, 575, 634, 635, 716, 75, 128, 446, 255, 664, 785, 673, 291, 802, 611, 448, 439, 592, 88, 275, 659, 52, 205, 65, 115, 368, 533, 1019, 398, 545, 83, 469, 971, 377, 533, 973, 857, 1460, 1231, 469, 1233, 202, 135, 118, 426, 723, 1143, 933, 439, 400, 147, 469, 435, 1474, 908, 1233, 405, 131, 868, 436, 810, 506, 423, 385, 500, 465, 497, 729, 422, 966, 443, 514, 1191, 179, 1205, 31, 1159, 440, 553, 61, 477, 92, 472, 436, 826, 1057, 243, 777, 284, 488, 515, 228, 625, 342, 634, 314, 712, 277, 284, 381, 466, 363, 162, 622, 1076, 132, 134, 585, 150, 509, 4988, 1217, 390, 102, 1018, 96, 82, 83, 171, 197, 403, 43, 44, 627, 208, 1018, 999, 212, 203, 202, 853, 551, 118, 410, 45, 207, 721, 118, 332, 731, 214, 285, 874, 67, 79, 1655, 669, 564, 1264, 901, 532, 150, 896, 988, 163, 1369, 752, 1193, 155, 377, 1014, 926, 758, 702, 984, 1498, 51, 828, 31, 1445, 839, 314, 655, 392, 1128, 44, 41, 1175, 186, 402, 1074, 59, 1026, 509, 565, 1043, 410, 463, 684, 476, 1316, 705, 105, 376, 361, 95, 577, 608, 350, 587, 274, 815, 882, 298, 133, 157, 649, 559, 1420, 200, 1156, 946, 1199, 794, 1014, 1030, 788, 335, 988, 47, 682, 276, 419, 810, 1579, 89, 545, 400, 684, 125, 544, 455, 199, 582, 1409, 677, 652, 447, 1797, 848, 351, 518, 277, 762, 766, 231, 1916, 440, 933, 764, 289, 1372, 287, 306, 196, 175, 1045, 482, 245, 882, 233, 338, 556, 587, 507, 497, 299, 204, 177, 333, 136, 175, 597, 593, 1394, 407, 247, 316, 1831, 125, 278, 114, 1268, 569, 157, 344, 904, 557, 1420, 1966, 1984, 731, 1015, 1415, 68, 399, 647, 125, 319, 961, 1152, 1207, 103, 136, 1818, 1205, 121, 1966, 1257, 478, 80, 1117, 1141, 1865, 267, 846, 756, 530, 1119, 964, 270, 988, 490, 221, 1088, 471, 706, 852, 515, 884, 1347, 184, 1755, 916, 1092, 273, 197, 249, 1847, 80, 628, 902, 293, 734, 272, 145, 457, 590, 889, 698, 199, 611, 738, 779, 285, 489, 413, 272, 599, 1207, 490, 1144, 538, 472, 1179, 354, 1260, 713, 1356, 831, 840, 195, 977, 368, 1234, 1089, 345, 419, 400, 139, 1248, 313, 225, 1178, 300, 34, 848, 1087, 365, 94, 1347, 540, 26, 385, 468, 218, 1260, 33, 464, 393, 263, 524, 407, 522, 273, 155, 1040, 230, 228, 249, 239, 148, 428, 130, 199, 245, 414, 221, 384, 351, 346, 300, 145, 1861, 115, 194, 309, 606, 293, 833, 759, 819, 510, 984, 792, 1043, 1398, 1783, 589, 519, 65, 70, 998, 1951, 63, 1656, 731, 698, 1903, 796, 756, 879, 649, 323, 1636, 548, 447, 712, 667, 1050, 1588, 1662, 1036, 1029, 484, 937, 701, 484, 423, 1029, 456, 510, 711, 468, 921, 943, 170, 1100, 1089, 332, 1087, 581, 511, 329, 1132, 529, 335, 604, 510, 452, 461, 432, 1442, 627, 1204, 2021, 1628, 425, 86, 548, 537, 524, 375, 382, 44, 341, 1353, 416, 198, 491, 96, 371, 303, 473, 570, 1355, 58, 566, 587, 1060, 227, 311, 1064, 1108, 1337, 251, 643, 613, 621, 544, 859, 776, 1302, 1291, 440, 578, 110, 800, 1334, 647, 1458, 1637, 1170, 51, 637, 739, 213, 763, 379, 337, 438, 953, 718, 675, 1182, 129, 1132, 118, 851, 674, 1818, 817, 509, 745, 629, 869, 824, 875, 1133, 141, 978, 599, 446, 642, 249, 771, 1889, 773, 651, 1349, 615, 477, 1561, 635, 466, 1383, 1114, 1422, 332, 739, 432, 832, 218, 125, 161, 1354, 158, 448, 181, 790, 297, 173, 366, 414, 1068, 251, 672, 60, 344, 591, 481, 376, 360, 457, 995, 396, 407, 899, 504, 457, 145, 1064, 171, 248, 158, 273, 530, 222, 535, 203, 1428, 921, 543, 300, 473, 361, 303, 1194, 287, 950, 494, 928, 683, 507, 623, 646, 94, 413, 442, 605, 451, 438, 95, 601, 662, 389, 410, 349, 1244, 502, 292, 25, 676, 751, 1507, 901, 634, 236, 745, 627, 795, 170, 259, 328, 220, 1444, 104, 668, 1182, 413, 1210, 238, 362, 288, 1293, 435, 1088, 167, 203, 559, 188, 210, 1413, 890, 763, 299, 1363, 252, 100, 276, 318, 735, 426, 327, 266, 428, 335, 239, 251, 293, 502, 249, 1304, 413, 212, 427, 275, 479, 480, 185, 857, 349, 1167, 114, 189, 653, 734, 276, 541, 656, 982, 350, 959, 263, 787, 304, 618, 980, 271, 542, 751, 762, 346, 386, 297, 2018, 348, 353, 856, 773, 546, 755, 886, 310, 599, 1171, 1080, 338, 607, 1899, 975, 346, 608, 526, 807, 411, 620, 778, 498, 1025, 929, 840, 356, 1272, 56, 488, 609, 488, 797, 654, 691, 632, 644, 530, 1028, 645, 733, 294, 546, 244, 98, 27, 106, 1722, 52, 50, 699, 132, 574, 1103, 26, 1273, 486, 301, 259, 1945, 259, 341, 1897, 457, 441, 654, 1106, 851, 598, 903, 855, 256, 257, 242, 316, 743, 996, 1041, 432, 449, 171, 548, 1086, 299, 518, 205, 817, 844, 1101, 658, 933, 1635, 605, 999, 262, 670, 612, 598, 574, 599, 1332, 158, 168, 452, 412, 1305, 637, 1898, 103, 360, 285, 932, 646, 1241, 408, 759, 631, 711, 631, 871, 318, 443, 921, 449, 251, 219, 383, 215, 546, 247, 262, 344, 445, 967, 999, 628, 439, 536, 203, 428, 976, 595, 68, 187, 146, 365, 72, 84, 460, 519, 969, 1034, 227, 1457, 409, 252, 1170, 932, 324, 922, 409, 1074, 932, 413, 570, 395, 306, 411, 919, 315, 226, 566, 277, 298, 364, 686, 102, 552, 340, 499, 441, 215, 327, 1545, 111, 217, 105, 835, 723, 1797, 552, 684, 689, 1097, 448, 1005, 345, 1089, 685, 1069, 957, 1439, 287, 688, 1509, 1419, 654, 758, 309, 512, 1092, 1018, 336, 1030, 499, 567, 1049, 173, 507, 107, 1075, 333, 808, 740, 511, 363, 90, 510, 809, 84, 287, 744, 324, 117, 596, 309, 179, 1413, 737, 767, 187, 289, 318, 740, 263, 1689, 341, 487, 575, 886, 1434, 493, 805, 184, 635, 156, 50, 164, 1606, 410, 879, 756, 325, 358, 272, 280, 343, 323, 320, 827, 225, 349, 301, 216, 132, 410, 294, 471, 516, 83, 235, 767, 1372, 1254, 1254, 927, 1448, 92, 1010, 987, 870, 683, 858, 1118, 224, 96, 285, 1305, 3835, 430, 41, 475, 279, 645, 602, 1193, 1186, 252, 568, 433, 511, 113, 412, 1161, 374, 1145, 467, 90, 61, 418, 588, 442, 778, 342, 291, 385, 360, 3899, 239, 73, 147, 285, 1173, 34, 400, 971, 75, 1205, 135, 640, 276, 149, 135, 352, 967, 298, 186, 285, 289, 82, 654, 211, 338, 96, 837, 447, 814, 358, 59, 286, 920, 28, 24, 394, 1032, 409, 577, 322, 732, 427, 167, 801, 431, 455, 1150, 281, 184, 239, 1189, 1545, 720, 736, 437, 450, 366, 739, 265, 938, 1814, 438, 433, 367, 615, 2072, 255, 662, 384, 113, 204, 593, 351, 771, 291, 524, 641, 899, 625, 392, 1202, 382, 196, 99, 213, 835, 659, 328, 393, 713, 1198, 1149, 790, 1173, 1231, 48, 433, 549, 590, 978, 744, 1708, 776, 80, 81, 748, 437, 1190, 707, 484, 604, 357, 163, 373, 598, 587, 841, 68, 694, 159, 581, 518, 926, 296, 1132, 431, 447, 210, 248, 1297, 488, 35, 733, 742, 1426, 382, 364, 1222, 1119, 1619, 464, 360, 80, 125, 97, 360, 910, 746, 1436, 737, 567, 711, 73, 219, 1609, 1863, 805, 446, 355, 940, 572, 403, 1023, 1340, 242, 516, 2051, 126, 60, 516, 302, 60, 855, 552, 1069, 928, 146, 2066, 1170, 1161, 456, 1083, 664, 444, 510, 566, 367, 586, 378, 586, 503, 84, 483, 1165, 586, 331, 74, 596, 576, 1199, 509, 45, 382, 1059, 485, 581, 243, 336, 895, 584, 605, 1055, 230, 705, 956, 179, 523, 586, 655, 1485, 158, 78, 836, 787, 290, 998, 792, 186, 392, 1922, 600, 603, 600, 537, 493, 1479, 770, 2009, 486, 1447, 2503, 287, 475, 1370, 532, 215, 807, 737, 729, 398, 818, 552, 186, 103, 219, 206, 84, 332, 241, 629, 276, 73, 608, 1243, 134, 586, 739, 1016, 1543, 868, 1104, 1356, 1188, 840, 472, 756, 1120, 586, 1721, 993, 1098, 2070, 282, 202, 1458, 807, 186, 442, 564, 1187, 1253, 1076, 1467, 1657, 515, 1374, 619, 1757, 438, 475, 253, 380, 248, 1481, 1305, 917, 1179, 55, 1484, 359, 1146, 329, 38, 182, 979, 556, 426, 156, 620, 260, 889, 1329, 740, 592, 262, 61, 862, 969, 805, 312, 1334, 157, 224, 299, 1213, 582, 1068, 305, 312, 1825, 1248, 1219, 450, 625, 669, 277, 172, 523, 629, 608, 385, 442, 1165, 1901, 247, 810, 194, 1169, 435, 596, 239, 223, 86, 168, 578, 147, 109, 145, 506, 348, 394, 90, 130, 93, 644, 345, 781, 945, 340, 1142, 567, 492, 431, 486, 942, 212, 92, 241, 526, 695, 725, 139, 343, 944, 410, 292, 476, 709, 918, 570, 783, 263, 92, 1784, 1318, 325, 414, 282, 518, 270, 459, 757, 377, 310, 513, 390, 269, 966, 685, 200, 45, 770, 1083, 669, 804, 131, 394, 934, 365, 57, 203, 1075, 520, 871, 283, 1570, 393, 1232, 457, 239, 948, 1208, 216, 1561, 508, 709, 1085, 1025, 726, 2180, 339, 603, 657, 478, 2041, 677, 1796, 809, 294, 645, 882, 1580, 441, 1381, 1572, 530, 497, 91, 98, 551, 310, 1411, 446, 1327, 357, 750, 1246, 803, 122, 652, 442, 472, 546, 1194, 828, 691, 41, 41, 1114, 567, 416, 761, 713, 720, 730, 135, 869, 263, 277, 484, 527, 1126, 1156, 391, 66, 1164, 433, 794, 166, 818, 372, 348, 676, 546, 695, 411, 1191, 802, 693, 710, 385, 459, 99, 1011, 1134, 342, 374, 1807, 214, 1185, 437, 81, 487, 429, 646, 595, 998, 235, 592, 754, 448, 1682, 236, 468, 644, 110, 1413, 508, 424, 75, 983, 453, 893, 456, 62, 122, 621, 220, 462, 80, 716, 276, 559, 878, 469, 355, 516, 486, 659, 198, 523, 331, 233, 990, 515, 55, 935, 579, 720, 228, 545, 239, 395, 785, 1033, 67, 495, 227, 370, 2119, 587, 93, 725, 506, 266, 1164, 795, 1569, 508, 454, 1017, 145, 1389, 1389, 1826, 771, 599, 755, 490, 422, 609, 766, 1277, 783, 109, 1852, 602, 592, 641, 1337, 1942, 89, 4810, 259, 521, 525, 221, 910, 978, 1475, 355, 228, 133, 471, 88, 590, 1995, 1185, 782, 1958, 1386, 520, 338, 1288, 506, 304, 1035, 788, 120, 1079, 1627, 836, 1203, 340, 583, 310, 1149, 1584, 1941, 961, 1547, 538, 1503, 400, 586, 1363, 777, 1459, 1221, 904, 1735, 1203, 1018, 1059, 659, 630, 624, 1013, 387, 335, 954, 1087, 197, 1232, 462, 552, 335, 586, 808, 1061, 1474, 2010, 430, 469, 1072, 228, 686, 813, 859, 102, 160, 198, 225, 229, 592, 312, 483, 1221, 830, 534, 734, 501, 1167, 623, 139, 427, 241, 346, 805, 253, 147, 193, 1669, 792, 905, 913, 530, 202, 365, 281, 592, 367, 1202, 1769, 269, 16, 230, 987, 1911, 1448, 749, 193, 215, 594, 138, 1163, 1311, 265, 304, 578, 301, 1376, 150, 297, 439, 572, 1331, 506, 1072, 1371, 331, 35, 1396, 919, 1288, 406, 77, 1384, 172, 538, 585, 961, 1738, 237, 1078, 4069, 285, 864, 1025, 307, 553, 565, 1438, 431, 93, 744, 1694, 968, 279, 511, 598, 147, 1489, 266, 806, 1099, 373, 388, 57, 627, 1256, 384, 259, 773, 208, 1271, 1284, 136, 1277, 713, 499, 701, 215, 194, 225, 689, 253, 724, 608, 898, 275, 381, 1065, 854, 1352, 246, 116, 521, 67, 396, 655, 581, 665, 381, 98, 576, 975, 695, 315, 1213, 945, 1944, 535, 1012, 964, 218, 1996, 999, 114, 974, 978, 941, 854, 928, 720, 681, 490, 42, 995, 162, 318, 553, 800, 265, 966, 1828, 1235, 632, 323, 525, 390, 275, 125, 782, 195, 333, 1089, 133, 1081, 135, 134, 438, 248, 788, 921, 1080, 107, 1031, 142, 618, 524, 744, 558, 1429, 481, 962, 312, 104, 307, 508, 497, 424, 256, 686, 681, 634, 859, 749, 365, 236, 1101, 267, 123, 92, 269, 868, 430, 476, 358, 42, 114, 132, 87, 285, 320, 587, 459, 332, 118, 144, 86, 87, 1571, 103, 453, 48, 491, 435, 554, 187, 52, 221, 316, 177, 249, 608, 591, 173, 458, 138, 764, 1279, 132, 139, 1702, 193, 63, 185, 1053, 1049, 320, 149, 348, 1296, 472, 143, 150, 48, 1589, 645, 1586, 348, 169, 1576, 158, 224, 964, 89, 362, 184, 847, 191, 1542, 681, 1218, 1159, 1142, 338, 81, 437, 1899, 1580, 1614, 310, 607, 351, 132, 325, 1544, 181, 1533, 888, 862, 494, 104, 519, 1768, 461, 576, 155, 155, 370, 1551, 316, 1879, 270, 158, 307, 1307, 796, 137, 1463, 3026, 110, 630, 886, 675, 440, 128, 107, 443, 1580, 1225, 158, 385, 367, 1632, 179, 894, 188, 457, 1390, 831, 367, 99, 1518, 1968, 506, 239, 251, 264, 245, 95, 98, 210, 483, 466, 919, 992, 902, 188, 105, 883, 257, 293, 534, 142, 847, 383, 1198, 1323, 181, 601, 642, 426, 365, 1276, 825, 956, 1308, 1187, 986, 1245, 235, 193, 480, 1134, 522, 1368, 1117, 912, 424, 990, 2708, 1833, 607, 215, 1107, 79, 56, 698, 1256, 1306, 267, 892, 1370, 1014, 359, 564, 1704, 425, 934, 663, 383, 765, 1340, 322, 795, 1805, 452, 1023, 1184, 1251, 850, 1303, 1308, 278, 627, 454, 1027, 1502, 585, 1953, 1795, 1508, 239, 659, 845, 695, 1091, 420, 1437, 433, 1073, 763, 1003, 707, 410, 1504, 748, 508, 236, 490, 463, 416, 206, 637, 1564, 541, 336, 803, 91, 1239, 1087, 1635, 825, 791, 1162, 913, 852, 401, 638, 896, 845, 547, 1058, 786, 810, 1078, 1103, 719, 624, 509, 268, 571, 464, 69, 362, 192, 1374, 1343, 777, 344, 1054, 456, 502, 380, 694, 605, 502, 1651, 1239, 981, 601, 1623, 1374, 306, 1330, 586, 376, 509, 131, 606, 469, 499, 911, 957, 412, 431, 372, 445, 1662, 484, 1198, 520, 835, 1212, 644, 279, 1327, 325, 1277, 361, 738, 549, 532, 322, 1401, 101, 706, 80, 321, 477, 584, 217, 1330, 823, 85, 339, 447, 78, 1505, 175, 484, 84, 1344, 1394, 38, 255, 49, 149, 553, 228, 286, 400, 397, 1080, 1327, 1600, 454, 1533, 1487, 1227, 315, 1512, 131, 617, 1247, 278, 682, 1285, 1212, 458, 107, 963, 839, 517, 123, 1220, 1261, 213, 1412, 708, 705, 430, 824, 197, 204, 214, 829, 244, 170, 393, 291, 119, 598, 109, 511, 364, 249, 319, 92, 975, 115, 240, 1062, 175, 510, 1082, 371, 674, 167, 395, 266, 543, 1422, 357, 692, 417, 377, 759, 385, 611, 393, 1816, 42, 210, 300, 189, 208, 1334, 208, 358, 243, 305, 370, 212, 1672, 176, 466, 1682, 417, 1638, 385, 1675, 1627, 2057, 480, 837, 325, 392, 381, 455, 219, 168, 220, 401, 625, 139, 447, 308, 543, 752, 133, 489, 238, 258, 1019, 320, 402, 305, 403, 462, 401, 116, 612, 941, 119, 80, 1453, 355, 451, 566, 563, 252, 1473, 430, 646, 135, 811, 813, 107, 633, 690, 1156, 136, 88, 539, 503, 387, 358, 105, 44, 734, 62, 502, 293, 865, 114, 1303, 725, 317, 182, 223, 967, 197, 268, 282, 656, 367, 476, 633, 1066, 256, 337, 54, 546, 852, 437, 1414, 367, 852, 705, 882, 334, 1173, 1579, 384, 507, 444, 386, 454, 530, 438, 1260, 132, 581, 155, 991, 32, 316, 546, 879, 839, 285, 293, 877, 30, 285, 26, 240, 214, 389, 440, 721, 611, 1004, 193, 246, 71, 625, 1090, 1092, 969, 148, 1007, 531, 1397, 1422, 1100, 253, 566, 431, 241, 341, 507, 424, 743, 44, 1091, 1091, 292, 1100, 1095, 71, 1093, 162, 1095, 1519, 1209, 577, 340, 1068, 370, 66, 139, 265, 454, 276, 70, 245, 1087, 106, 104, 70, 612, 166, 778, 619, 761, 347, 112, 1047, 166, 737, 669, 939, 882, 175, 255, 563, 327, 960, 610, 419, 1087, 424, 405, 662, 253, 204, 425, 632, 399, 1109, 912, 242, 383, 339, 419, 367, 303, 309, 385, 106, 281, 440, 227, 39, 54, 668, 427, 457, 542, 386, 593, 136, 61, 478, 458, 1075, 561, 1261, 1278, 391, 530, 464, 248, 1520, 231, 2018, 538, 983, 2571, 338, 224, 483, 499, 2014, 1200, 294, 1296, 900, 890, 145, 271, 1089, 914, 622, 995, 1007, 985, 289, 580, 129, 124, 834, 1060, 715, 923, 917, 602, 232, 170, 517, 892, 685, 277, 2559, 203, 529, 363, 257, 551, 627, 447, 465, 125, 472, 609, 1424, 1181, 619, 603, 401, 752, 686, 155, 69, 170, 250, 956, 596, 554, 1668, 530, 490, 325, 417, 868, 1442, 25, 1002, 163, 117, 214, 80, 387, 147, 1409, 1673, 1163, 1197, 298, 523, 324, 1034, 692, 717, 198, 755, 267, 131, 148, 1584, 386, 181, 1375, 184, 1002, 64, 337, 232, 593, 1800, 387, 481, 220, 698, 83, 853, 718, 717, 479, 2163, 251, 255, 906, 704, 290, 531, 276, 302, 1274, 328, 390, 746, 1272, 360, 495, 265, 409, 44, 718, 385, 259, 293, 532, 2528, 298, 361, 68, 66, 1579, 268, 325, 265, 410, 706, 714, 203, 212, 713, 948, 703, 1075, 1204, 748, 1392, 212, 816, 968, 566, 446, 498, 51, 354, 103, 571, 151, 287, 301, 657, 964, 597, 66, 658, 841, 555, 542, 379, 784, 610, 343, 166, 136, 125, 323, 1086, 887, 319, 397, 691, 1463, 1546, 700, 531, 254, 51, 1419, 1186, 76, 60, 63, 1780, 438, 324, 228, 244, 1345, 559, 641, 270, 374, 629, 192, 221, 563, 1317, 247, 767, 707, 201, 200, 559, 558, 366, 471, 486, 442, 80, 362, 494, 307, 217, 480, 748, 655, 409, 1489, 299, 885, 476, 814, 619, 410, 635, 249, 159, 586, 711, 420, 449, 41, 478, 1207, 672, 57, 90, 383, 649, 1730, 952, 946, 942, 860, 350, 230, 851, 193, 1511, 182, 948, 273, 952, 1830, 368, 782, 225, 923, 203, 233, 310, 937, 2115, 1199, 124, 202, 202, 41, 732, 1099, 82, 951, 78, 1934, 1353, 1132, 751, 647, 198, 83, 830, 940, 465, 951, 403, 874, 1369, 364, 4016, 1415, 1747, 322, 864, 956, 1367, 537, 954, 956, 1374, 683, 1151, 138, 858, 637, 386, 703, 646, 946, 945, 820, 757, 1310, 339, 862, 305, 855, 341, 1700, 950, 230, 987, 210, 1655, 236, 138, 332, 788, 114, 1413, 647, 1590, 791, 287, 780, 241, 164, 658, 180, 2017, 1519, 1990, 1641, 434, 1726, 1924, 1725, 322, 2013, 1072, 934, 154, 204, 1896, 227, 554, 679, 942, 948, 553, 494, 939, 137, 493, 1362, 108, 679, 1362, 526, 264, 71, 96, 859, 943, 1712, 435, 1744, 965, 150, 1721, 72, 96, 843, 74, 855, 241, 976, 76, 415, 358, 1319, 1503, 492, 814, 243, 947, 779, 243, 346, 1081, 1515, 992, 314, 622, 643, 663, 97, 1569, 1592, 168, 1041, 853, 141, 396, 1373, 228, 268, 374, 1430, 100, 659, 379, 285, 1724, 1185, 448, 367, 421, 492, 1102, 81, 1459, 540, 1282, 377, 947, 966, 951, 834, 259, 229, 873, 1365, 77, 960, 761, 398, 328, 699, 950, 872, 224, 861, 184, 1730, 292, 519, 79, 211, 853, 1547, 871, 1007, 331, 1464, 638, 483, 43, 1788, 817, 347, 1222, 275, 609, 2005, 927, 1271, 504, 759, 70, 1237, 657, 114, 1120, 381, 1010, 1052, 1737, 295, 573, 1915, 92, 474, 140, 87, 1089, 1797, 838, 874, 167, 350, 689, 1801, 376, 67, 1031, 1362, 344, 480, 716, 445, 49, 1295, 249, 833, 338, 573, 493, 180, 358, 333, 535, 217, 180, 1603, 740, 720, 771, 330, 1413, 69, 669, 887, 262, 236, 588, 758, 1843, 611, 253, 71, 932, 546, 379, 1637, 85, 1833, 531, 337, 407, 165, 300, 258, 362, 235, 340, 889, 1881, 1169, 270, 564, 84, 338, 232, 337, 357, 221, 521, 609, 961, 256, 714, 239, 589, 1020, 89, 675, 387, 1273, 537, 645, 284, 736, 310, 106, 311, 846, 1272, 1274, 3039, 154, 271, 747, 153, 474, 672, 497, 473, 160, 728, 163, 409, 956, 270, 122, 873, 160, 145, 726, 186, 1347, 469, 695, 543, 522, 2148, 1325, 188, 2058, 1571, 3409, 2370, 1809, 3672, 638, 580, 53, 30, 473, 1363, 791, 140, 480, 1926, 1240, 807, 1926, 407, 322, 362, 107, 254, 1273, 497, 347, 1407, 160, 224, 445, 374, 253, 624, 467, 717, 700, 429, 560, 256, 198, 582, 866, 64, 4001, 278, 499, 509, 63, 247, 209, 859, 225, 182, 247, 367, 548, 495, 828, 305, 280, 994, 488, 128, 287, 1192, 968, 388, 635, 1311, 330, 304, 1895, 1301, 573, 386, 819, 605, 415, 469, 842, 597, 433, 474, 419, 1595, 439, 188, 141, 179, 160, 185, 115, 524, 1071, 238, 475, 178, 132, 604, 155, 1948, 304, 1145, 273, 624, 1330, 1323, 1121, 603, 91, 1941, 1478, 56, 1948, 1284, 965, 901, 1520, 639, 1247, 120, 1126, 290, 81, 522, 756, 495, 588, 284, 944, 1523, 550, 658, 897, 1168, 390, 1263, 486, 1600, 281, 266, 557, 1504, 508, 954, 659, 1883, 1201, 1518, 990, 1666, 1925, 1960, 347, 1077, 1089, 755, 273, 238, 846, 74, 210, 825, 80, 388, 438, 257, 429, 806, 753, 850, 57, 398, 1328, 1255, 567, 1315, 443, 550, 439, 421, 489, 776, 1871, 126, 1796, 162, 451, 991, 692, 502, 893, 610, 84, 99, 493, 259, 678, 228, 309, 236, 550, 266, 1070, 891, 1495, 251, 440, 1256, 766, 71, 3979, 262, 243, 320, 130, 327, 2154, 1897, 704, 62, 377, 177, 1657, 124, 1357, 483, 458, 279, 2009, 627, 466, 1233, 309, 514, 321, 309, 1740, 50, 1031, 767, 389, 110, 476, 671, 376, 252, 360, 105, 255, 382, 1475, 271, 359, 812, 257, 1496, 1394, 3701, 761, 354, 447, 401, 101, 967, 46, 412, 272, 496, 844, 3202, 379, 645, 1262, 222, 416, 228, 807, 901, 317, 294, 1167, 1624, 238, 373, 84, 393, 1239, 135, 49, 728, 1172, 105, 1704, 332, 508, 320, 849, 265, 490, 573, 319, 927, 219, 276, 473, 2655, 1587, 41, 241, 1446, 264, 2114, 573, 196, 97, 195, 617, 382, 919, 304, 41, 181, 799, 974, 505, 596, 1696, 973, 673, 2015, 982, 1906, 687, 1914, 1079, 1365, 235, 377, 636, 225, 934, 1951, 1186, 1656, 350, 562, 566, 571, 495, 597, 987, 271, 721, 1400, 911, 303, 1224, 650, 491, 308, 702, 129, 585, 364, 449, 252, 314, 1769, 2633, 1894, 794, 825, 718, 771, 246, 252, 1542, 213, 2036, 669, 226, 1173, 127, 686, 674, 960, 1705, 60, 587, 78, 909, 326, 350, 352, 554, 921, 1437, 116, 255, 445, 205, 406, 427, 464, 1531, 384, 618, 891, 598, 468, 319, 600, 177, 595, 188, 1274, 206, 1372, 527, 166, 271, 51, 188, 3963, 403, 288, 18, 72, 328, 45, 226, 312, 36, 181, 57, 645, 53, 84, 86, 908, 224, 294, 412, 499, 130, 490, 650, 374, 1043, 647, 733, 205, 1228, 1005, 1750, 1026, 183, 174, 408, 1880, 118, 256, 368, 207, 1502, 159, 200, 1241, 1954, 957, 557, 225, 201, 357, 3538, 409, 679, 427, 349, 272, 822, 481, 116, 764, 558, 259, 636, 469, 597, 557, 282, 126, 1713, 281, 710, 317, 2690, 444, 222, 1482, 1293, 166, 1084, 1879, 2099, 870, 825, 295, 3799, 1002, 589, 591, 1086, 486, 220, 1204, 50, 142, 73, 154, 772, 636, 425, 1506, 531, 35, 247, 362, 347, 71, 389, 993, 167, 864, 246, 386, 544, 831, 320, 1421, 410, 29, 715, 51, 707, 502, 625, 288, 791, 1090, 1597, 320, 38, 332, 63, 421, 59, 1801, 195, 580, 459, 246, 1094, 768, 304, 576, 1725, 503, 1330, 903, 400, 1527, 607, 395, 245, 1155, 459, 86, 1912, 407, 1377, 708, 194, 356, 1167, 979, 139, 93, 1024, 4977, 1323, 476, 445, 693, 180, 715, 698, 321, 248, 1005, 260, 244, 241, 571, 458, 1175, 344, 1865, 318, 236, 450, 39, 176, 318, 323, 1544, 152, 754, 340, 170, 1377, 312, 357, 774, 217, 212, 1069, 128, 216, 3427, 333, 598, 1069, 1636, 303, 162, 59, 299, 482, 286, 500, 233, 324, 145, 262, 2387, 360, 874, 493, 651, 1000, 838, 621, 1225, 596, 741, 159, 521, 82, 926, 910, 570, 771, 350, 1078, 573, 363, 330, 217, 1318, 520, 189, 1488, 359, 1956, 1632, 941, 1651, 981, 534, 1949, 538, 389, 916, 2031, 1072, 247, 165, 275, 828, 261, 432, 931, 955, 762, 968, 1394, 201, 101, 587, 1353, 729, 1319, 1319, 837, 116, 1270, 1930, 332, 412, 306, 481, 428, 1447, 608, 303, 608, 1053, 731, 1353, 661, 342, 1348, 1169, 172, 215, 1364, 1771, 1144, 687, 337, 690, 605, 332, 782, 287, 795, 1466, 758, 102, 443, 136, 756, 752, 445, 734, 725, 994, 98, 733, 82, 665, 183, 1207, 702, 887, 685, 469, 657, 659, 2086, 278, 880, 137, 202, 406, 316, 1146, 216, 465, 138, 1502, 1791, 1586, 1692, 1893, 1267, 539, 986, 340, 1461, 1436, 52, 1031, 1318, 314, 181, 3099, 888, 1821, 120, 589, 2003, 1456, 90, 411, 1498, 722, 412, 1413, 162, 126, 577, 243, 427, 900, 498, 185, 243, 356, 554, 1740, 595, 285, 1056, 521, 311, 1619, 1623, 590, 1106, 1806, 553, 153, 745, 900, 1135, 202, 976, 905, 3277, 260, 587, 92, 700, 292, 333, 1318, 144, 312, 413, 171, 83, 448, 648, 849, 384, 660, 604, 1166, 282, 91, 585, 422, 226, 225, 536, 1076, 233, 971, 1063, 180, 85, 467, 290, 1005, 657, 1276, 606, 3550, 1525, 1265, 1187, 1040, 1923, 648, 914, 165, 1019, 169, 448, 400, 363, 403, 587, 102, 299, 339, 729, 1231, 122, 253, 188, 760, 379, 394, 281, 1273, 692, 585, 214, 378, 154, 112, 545, 687, 211, 718, 179, 356, 189, 823, 661, 65, 63, 1739, 119, 1213, 1634, 244, 1049, 1726, 632, 549, 1604, 316, 949, 573, 82, 182, 63, 321, 692, 387, 1746, 81, 244, 1744, 492, 1744, 2101, 1746, 372, 72, 900, 321, 322, 383, 441, 327, 905, 68, 902, 316, 464, 695, 76, 1390, 894, 902, 246, 377, 411, 904, 74, 69, 95, 73, 140, 1682, 1588, 69, 69, 65, 74, 130, 72, 149, 73, 92, 658, 675, 690, 618, 278, 46, 313, 186, 2035, 285, 4511, 452, 1626, 302, 518, 312, 456, 554, 232, 392, 333, 628, 193, 206, 284, 102, 400, 177, 544, 793, 1997, 2067, 2037, 65, 1708, 115, 751, 538, 495, 642, 344, 400, 371, 132, 684, 1552, 1055, 1733, 1924, 1650, 1158, 1004, 1879, 931, 1112, 968, 289, 152, 220, 172, 898, 477, 459, 181, 967, 122, 824, 1402, 1005, 1112, 678, 1109, 1121, 720, 171, 800, 1035, 286, 669, 642, 711, 680, 362, 864, 161, 621, 407, 108, 2086, 436, 1013, 3282, 1330, 477, 1054, 1827, 42, 46, 596, 598, 263, 429, 629, 1638, 1416, 541, 1310, 1539, 562, 562, 285, 222, 372, 355, 752, 519, 287, 1091, 1449, 319, 1266, 134, 816, 2038, 571, 1040, 296, 1150, 493, 898, 382, 1002, 341, 493, 1115, 647, 451, 491, 446, 588, 203, 175, 125, 105, 317, 119, 118, 112, 488, 231, 358, 101, 256, 86, 401, 538, 2936, 256, 496, 543, 453, 654, 518, 1929, 857, 376, 2355, 307, 285, 89, 2795, 1905, 95, 1352, 1448, 1325, 761, 1855, 433, 1949, 1718, 52, 373, 709, 111, 836, 539, 412, 50, 2368, 553, 696, 870, 1276, 558, 506, 1975, 666, 125, 601, 1006, 4782, 118, 118, 36, 545, 1270, 1351, 1040, 1687, 67, 238, 1299, 172, 809, 1417, 3955, 1259, 651, 856, 843, 845, 1551, 1378, 1609, 1532, 1492, 1622, 1550, 4793, 915, 1492, 1263, 1428, 1527, 519, 1322, 1612, 101, 64, 678, 1034, 670, 1644, 101, 1321, 1070, 1700, 1193, 2771, 2747, 945, 547, 1465, 1470, 460, 1785, 170, 49, 1542, 1853, 324, 77, 1310, 3263, 1298, 744, 528, 324, 580, 127, 858, 493, 1799, 2010, 521, 58, 652, 797, 771, 550, 774, 110, 79, 118, 593, 265, 205, 109, 556, 3198, 815, 968, 1483, 204, 431, 36, 899, 429, 54, 219, 367, 712, 252, 427, 599, 391, 381, 547, 1812, 672, 54, 406, 330, 1182, 104, 4360, 66, 1082, 1344, 75, 133, 68, 332, 1946, 1911, 633, 413, 1343, 501, 599, 571, 135, 745, 1127, 695, 378, 267, 77, 3322, 76, 191, 4368, 375, 748, 353, 697, 83, 675, 144, 391, 601, 765, 299, 775, 295, 116, 297, 432, 124, 1011, 431, 544, 168, 390, 42, 1772, 250, 376, 32, 152, 39, 197, 230, 746, 782, 444, 364, 1091, 1635, 940, 680, 213, 232, 77, 950, 270, 304, 432, 480, 1646, 887, 1290, 806, 268, 203, 274, 261, 61, 1690, 313, 188, 1193, 417, 1051, 1207, 213, 1382, 1539, 732, 144, 271, 1109, 140, 1348, 415, 950, 966, 259, 1106, 858, 546, 54, 683, 54, 123, 673, 547, 218, 987, 834, 189, 313, 64, 836, 437, 1673, 1212, 1481, 57, 558, 1526, 1952, 441, 2116, 1070, 1322, 1852, 718, 901, 1336, 533, 932, 644, 1370, 280, 568, 1454, 1461, 489, 431, 488, 241, 152, 254, 62, 190, 41, 1178, 78, 1525, 349, 669, 789, 1521, 1956, 540, 1936, 624, 579, 120, 2670, 594, 922, 126, 388, 477, 824, 338, 496, 1360, 515, 370, 216, 91, 75, 887, 376, 2442, 371, 537, 540, 2950, 299, 618, 309, 914, 422, 464, 210, 53, 322, 191, 303, 529, 121, 658, 687, 260, 1487, 552, 710, 475, 820, 150, 514, 740, 437, 709, 189, 715, 1844, 720, 968, 1526, 432, 1347, 1374, 1352, 677, 2011, 635, 688, 210, 1711, 1730, 1539, 562, 607, 198, 665, 121, 239, 4779, 124, 464, 905, 1385, 1059, 1169, 105, 1103, 1382, 677, 1915, 694, 99, 215, 1758, 1641, 1080, 763, 712, 842, 555, 287, 1353, 258, 71, 92, 191, 1523, 678, 1564, 35, 631, 303, 848, 1332, 83, 333, 90, 440, 405, 403, 55, 82, 132, 523, 343, 989, 655, 965, 391, 229, 252, 100, 218, 211, 256, 277, 306, 1036, 605, 1343, 244, 1770, 237, 3279, 911, 2482, 348, 224, 89, 1412, 904, 598, 1746, 912, 2706, 246, 56, 582, 190, 59, 1204, 563, 283, 1935, 433, 157, 2075, 482, 755, 1281, 1222, 616, 1179, 544, 742, 253, 710, 373, 1190, 580, 1229, 583, 566, 233, 621, 769, 130, 1009, 844, 1019, 894, 547, 522, 559, 1008, 1235, 485, 353, 652, 525, 613, 251, 966, 1038, 1527, 1347, 781, 449, 200, 454, 392, 131, 503, 179, 729, 378, 152, 300, 392, 576, 256, 210, 223, 164, 631, 522, 1004, 1945, 884, 628, 1101, 613, 233, 70, 77, 1263, 575, 383, 302, 302, 664, 979, 191, 1515, 1248, 39, 693, 978, 1156, 975, 148, 364, 888, 394, 1770, 129, 336, 199, 776, 253, 252, 332, 996, 771, 197, 1796, 1883, 211, 243, 247, 152, 190, 244, 740, 1016, 452, 151, 153, 1081, 336, 995, 983, 836, 969, 453, 1050, 431, 238, 861, 1350, 1257, 171, 1255, 148, 392, 291, 653, 2218, 1098, 298, 1242, 285, 635, 394, 724, 68, 1352, 178, 731, 156, 111, 75, 69, 379, 232, 1842, 197, 56, 33, 137, 270, 320, 112, 78, 501, 306, 481, 110, 97, 654, 79, 56, 347, 309, 171, 356, 880, 469, 527, 603, 718, 799, 74, 433, 847, 276, 321, 589, 513, 33, 300, 870, 573, 277, 636, 669, 620, 116, 1155, 609, 1342, 121, 633, 624, 120, 924, 619, 553, 57, 324, 543, 632, 1324, 963, 131, 230, 491, 1070, 758, 1073, 618, 1055, 340, 580, 2030, 1542, 145, 504, 953, 2013, 74, 119, 110, 439, 613, 534, 615, 110, 1551, 133, 613, 362, 611, 757, 1880, 719, 169, 790, 459, 761, 476, 231, 62, 335, 214, 308, 161, 865, 146, 92, 1888, 114, 179, 1689, 918, 1000, 1103, 294, 447, 867, 1546, 2710, 1129, 772, 589, 56, 1578, 760, 184, 85, 88, 189, 150, 125, 89, 162, 1971, 81, 95, 323, 202, 585, 433, 77, 312, 311, 311, 165, 151, 86, 97, 203, 1262, 1034, 625, 545, 865, 451, 596, 99, 440, 444, 829, 592, 1091, 106, 447, 285, 750, 1180, 603, 168, 241, 1195, 525, 138, 260, 206, 743, 254, 342, 1153, 273, 489, 828, 1673, 170, 131, 418, 1842, 515, 951, 793, 945, 876, 289, 137, 1180, 702, 299, 1660, 799, 1874, 638, 815, 784, 404, 902, 476, 648, 1314, 983, 495, 458, 418, 273, 89, 773, 45, 814, 293, 373, 656, 483, 877, 477, 219, 474, 564, 80, 828, 509, 177, 411, 896, 732, 524, 235, 806, 909, 955, 736, 717, 834, 842, 200, 718, 535, 148, 391, 1036, 528, 987, 609, 482, 87, 1566, 697, 1383, 690, 1964, 453, 617, 755, 1373, 104, 427, 504, 1699, 440, 904, 136, 296, 1390, 36, 980, 169, 233, 811, 217, 216, 166, 1133, 458, 216, 436, 294, 1107, 438, 224, 120, 224, 842, 262, 794, 622, 388, 687, 465, 691, 653, 830, 1285, 657, 686, 533, 539, 378, 646, 365, 532, 522, 525, 478, 190, 91, 619, 711, 1639, 237, 496, 185, 292, 345, 267, 322, 246, 982, 650, 168, 402, 505, 270, 707, 205, 429, 620, 626, 407, 315, 579, 527, 1219, 569, 451, 266, 99, 522, 353, 613, 334, 441, 629, 85, 464, 152, 153, 152, 496, 314, 171, 313, 1535, 348, 352, 1001, 211, 179, 167, 137, 280, 340, 54, 990, 191, 46, 498, 279, 85, 1272, 51, 277, 1128, 507, 44, 49, 88, 107, 105, 1499, 823, 1903, 297, 103, 329, 2206, 510, 55, 216, 1105, 107, 816, 1074, 246, 694, 678, 107, 114, 495, 1165, 1048, 217, 348, 294, 335, 553, 1772, 182, 266, 1229, 202, 535, 1112, 232, 674, 294, 405, 672, 470, 302, 167, 184, 546, 232, 455, 651, 313, 672, 203, 53, 1643, 204, 155, 1373, 1091, 1193, 648, 1123, 300, 2037, 627, 618, 657, 681, 1035, 458, 1126, 1260, 502, 538, 1545, 161, 517, 1053, 654, 551, 301, 759, 239, 558, 108, 235, 540, 518, 555, 567, 204, 518, 901, 658, 1333, 1410, 315, 270, 356, 697, 222, 386, 1722, 549, 552, 43, 754, 1027, 75, 53, 866, 96, 481, 566, 549, 549, 755, 1205, 136, 1312, 297, 1140, 121, 414, 1188, 150, 977, 121, 486, 991, 1264, 1081, 278, 1386, 133, 343, 130, 297, 214, 276, 340, 403, 341, 304, 648, 128, 202, 396, 389, 1169, 167, 156, 167, 2137, 1769, 343, 1762, 173, 668, 185, 132, 720, 661, 397, 488, 516, 691, 668, 851, 171, 652, 256, 151, 972, 871, 182, 367, 380, 1044, 1159, 923, 1567, 697, 759, 1249, 695, 170, 1289, 362, 767, 439, 134, 188, 388, 96, 427, 193, 86, 525, 620, 1436, 449, 888, 1038, 1274, 1760, 335, 1713, 889, 1997, 1490, 46, 1474, 1906, 608, 1192, 1797, 1892, 201, 475, 114, 620, 75, 536, 587, 163, 126, 71, 276, 56, 69, 65, 624, 53, 71, 685, 130, 614, 96, 577, 199, 822, 628, 267, 59, 928, 606, 103, 235, 1236, 1532, 70, 84, 85, 212, 86, 685, 736, 81, 607, 71, 54, 199, 1649, 829, 759, 768, 271, 647, 72, 534, 436, 67, 137, 442, 415, 1628, 450, 111, 75, 206, 68, 510, 512, 1439, 82, 151, 214, 264, 920, 1043, 1535, 1027, 881, 628, 628, 687, 722, 1340, 637, 579, 557, 105, 629, 577, 1981, 560, 1813, 593, 865, 1861, 264, 89, 129, 314, 198, 224, 561, 295, 202, 223, 1313, 115, 200, 151, 89, 548, 219, 331, 557, 1132, 306, 148, 515, 122, 347, 416, 536, 72, 738, 184, 313, 119, 132, 906, 518, 738, 279, 320, 327, 1059, 2052, 1234, 751, 667, 286, 1750, 307, 361, 327, 426, 114, 105, 1370, 581, 194, 226, 133, 207, 177, 373, 216, 302, 232, 1867, 510, 360, 663, 260, 289, 258, 324, 213, 523, 64, 126, 287, 101, 619, 313, 275, 223, 73, 241, 167, 954, 863, 239, 777, 593, 740, 98, 491, 267, 279, 1614, 203, 162, 850, 199, 270, 995, 798, 734, 134, 459, 701, 412, 864, 301, 625, 347, 552, 603, 288, 1271, 455, 455, 224, 603, 454, 86, 2038, 294, 682, 1310, 203, 993, 1310, 111, 233, 1338, 997, 1310, 317, 941, 210, 163, 186, 332, 329, 994, 872, 219, 217, 214, 605, 283, 1079, 1074, 374, 2095, 1407, 1029, 1082, 931, 1364, 1052, 750, 1224, 295, 853, 833, 763, 1112, 77, 1946, 1001, 980, 1001, 954, 973, 1946, 1112, 110, 243, 213, 296, 1075, 940, 1610, 660, 287, 1888, 137, 1090, 764, 37, 1229, 214, 134, 870, 95, 179, 295, 304, 230, 827, 455, 1678, 95, 681, 778, 410, 105, 475, 137, 569, 214, 420, 352, 578, 119, 200, 301, 711, 444, 1083, 629, 885, 1445, 759, 825, 102, 407, 636, 1122, 55, 727, 778, 490, 1020, 805, 695, 1158, 121, 642, 224, 169, 660, 77, 590, 285, 154, 1982, 450, 258, 151, 252, 167, 762, 110, 116, 340, 1262, 209, 565, 636, 302, 570, 317, 193, 839, 180, 1144, 809, 283, 471, 1057, 761, 465, 1460, 367, 657, 65, 1171, 669, 1505, 190, 210, 514, 700, 219, 111, 432, 736, 310, 666, 491, 329, 668, 514, 369, 127, 281, 93, 2746, 1227, 720, 2695, 907, 252, 137, 166, 1278, 856, 414, 634, 642, 709, 617, 1821, 958, 36, 1006, 822, 599, 122, 879, 265, 1486, 4407, 861, 983, 1665, 165, 929, 181, 251, 158, 887, 604, 37, 380, 2661, 46, 1259, 309, 585, 508, 571, 1205, 372, 970, 318, 1033, 53, 253, 76, 209, 147, 344, 1916, 182, 451, 2626, 167, 207, 159, 601, 205, 1010, 181, 2923, 765, 1787, 1736, 588, 493, 905, 481, 99, 341, 66, 43, 706, 614, 111, 438, 115, 790, 76, 283, 43, 199, 909, 84, 99, 284, 1201, 357, 48, 2516, 1344, 1341, 696, 425, 1342, 1313, 1347, 1339, 1363, 1311, 221, 590, 342, 2120, 320, 227, 611, 1068, 475, 389, 53, 216, 1483, 1701, 1185, 394, 1146, 1969, 1064, 1970, 74, 414, 706, 169, 522, 1695, 781, 129, 473, 290, 652, 982, 502, 503, 173, 1793, 429, 148, 314, 1081, 136, 543, 944, 157, 258, 142, 690, 160, 364, 1568, 880, 288, 297, 873, 81, 416, 625, 329, 900, 142, 353, 670, 633, 413, 360, 377, 687, 389, 491, 496, 826, 520, 754, 1687, 1072, 1035, 4257, 754, 737, 1718, 1125, 696, 27, 346, 584, 1265, 244, 802, 1296, 544, 71, 633, 480, 633, 1354, 374, 1633, 577, 219, 219, 539, 305, 1833, 212, 522, 233, 288, 703, 1042, 389, 163, 236, 1236, 1056, 1059, 1337, 120, 97, 639, 92, 386, 536, 1550, 444, 59, 365, 207, 90, 1046, 423, 664, 535, 3477, 134, 443, 104, 205, 387, 125, 182, 200, 189, 469, 69, 2053, 518, 1275, 211, 1274, 211, 177, 584, 772, 1314, 198, 194, 1277, 407, 957, 984, 1585, 284, 1207, 561, 185, 273, 543, 569, 38, 277, 667, 906, 30, 899, 42, 338, 430, 930, 272, 8, 1035, 750, 51, 514, 259, 498, 210, 1693, 269, 340, 379, 580, 195, 509, 1102, 481, 384, 744, 539, 332, 168, 1584, 490, 159, 159, 557, 347, 428, 96, 1126, 57, 224, 531, 189, 439, 680, 350, 1373, 354, 68, 1652, 528, 592, 497, 543, 337, 504, 499, 581, 513, 758, 1440, 507, 437, 658, 806, 130, 245, 497, 406, 325, 1663, 1253, 221, 228, 499, 439, 815, 440, 593, 817, 232, 839, 204, 781, 1081, 828, 252, 887, 1080, 94, 1040, 1684, 1927, 65, 37, 643, 403, 165, 1561, 594, 570, 932, 461, 923, 557, 460, 333, 350, 817, 273, 1039, 101, 175, 653, 224, 261, 303, 536, 1761, 566, 383, 903, 448, 773, 1200, 154, 153, 1707, 1241, 1362, 1523, 857, 343, 315, 1608, 1044, 235, 1172, 199, 1880, 710, 1070, 372, 754, 1060, 532, 877, 283 ], "xaxis": "x4", "yaxis": "y4" }, { "alignmentgroup": "True", "bingroup": "x", "histnorm": "density", "hovertemplate": "category=Books
description_length=%{x}
density=%{y}", "legendgroup": "Books", "marker": { "color": "#EF553B", "opacity": 1, "pattern": { "shape": "" } }, "name": "Books", "offsetgroup": "Books", "orientation": "v", "showlegend": true, "type": "histogram", "x": [ 1128, 44, 777, 2287, 488, 1013, 136, 425, 54, 12, 2980, 302, 444, 1505, 1545, 472, 3893, 40, 264, 1205, 850, 41, 83, 336, 225, 30, 751, 23, 100, 326, 316, 337, 295, 300, 306, 344, 223, 54, 368, 241, 243, 28, 479, 338, 539, 216, 211, 47, 1065, 525, 29, 54, 37, 488, 544, 40, 530, 156, 521, 881, 29, 374, 3738, 1326, 392, 2235, 899, 637, 1348, 817, 458, 44, 1522, 927, 736, 986, 41, 1970, 455, 857, 334, 2471, 1552, 485, 133, 1196, 628, 445, 3309, 2504, 1249, 4413, 65, 52, 819, 3073, 894, 994, 1446, 810, 753, 670, 845, 435, 479, 1799, 51, 266, 2067, 4908, 516, 867, 973, 28, 1220, 2546, 742, 826, 2061, 748, 36, 31, 420, 1404, 137, 1591, 590, 458, 516, 1039, 455, 1893, 426, 378, 502, 4221, 99, 203, 42, 52, 331, 1562, 333, 29, 30, 234, 70, 134, 1307, 693, 143, 1831, 38, 1348, 92, 137, 446, 33, 1273, 50, 1116, 68, 48, 155, 792, 924, 940, 653, 402, 1948, 84, 107, 3465, 21, 41, 2668, 2334, 2041, 2176, 4464, 1646, 2181, 998, 870, 532, 1907, 358, 48, 381, 1362, 54, 55, 461, 812, 31, 305, 175, 495, 60, 551, 104, 102, 673, 1820, 46, 27, 457, 947, 992, 887, 115, 130, 59, 1332, 582, 1618, 339, 446, 1693, 52, 128, 356, 744, 614, 1574, 443, 26, 2373, 1308, 426, 276, 560, 1027, 1492, 753, 680, 1085, 1240, 3659, 823, 459, 19, 78, 99, 36, 844, 96, 259, 742, 44, 159, 514, 2956, 642, 1277, 4248, 1550, 18, 1251, 627, 1134, 22, 37, 42, 636, 1063, 1987, 25, 1798, 840, 1582, 376, 1011, 558, 363, 319, 687, 1450, 134, 1672, 1034, 20, 1205, 43, 1285, 26, 22, 1686, 1109, 431, 259, 262, 517, 538, 1535, 653, 1135, 1427, 107, 1516, 763, 568, 2159, 3364, 835, 507, 67, 482, 1468, 4009, 30, 1454, 654, 1144, 787, 401, 404, 706, 2577, 76, 418, 31, 546, 504, 2060, 76, 313, 977, 1853, 70, 55, 642, 11, 87, 1801, 1899, 531, 1727, 1275, 481, 418, 477, 398, 1651, 13, 1991, 1165, 1696, 8, 39, 1750, 34, 1497, 823, 15, 1040, 2871, 14, 612, 1587, 45, 1213, 32, 608, 38, 59, 1801, 1707, 32, 597, 9, 3847, 1575, 2993, 1226, 649, 4746, 73, 1855, 982, 4233, 1497, 365, 28, 2399, 983, 297, 70, 215, 499, 473, 3150, 1338, 69, 1152, 2331, 1296, 3104, 124, 1451, 33, 993, 10, 62, 665, 825, 1802, 2619, 586, 151, 33, 1787, 549, 14, 67, 14, 592, 235, 15, 21, 146, 427, 1072, 67, 694, 196, 726, 359, 603, 972, 243, 258, 771, 422, 691, 49, 41, 309, 292, 611, 41, 445, 280, 743, 1736, 277, 190, 472, 1533, 201, 148, 906, 4514, 1581, 2187, 238, 598, 992, 622, 1389, 1527, 35, 817, 199, 273, 1474, 282, 470, 66, 615, 486, 1220, 755, 702, 404, 411, 114, 1867, 240, 20, 787, 84, 667, 667, 41, 357, 18, 494, 46, 74, 73, 306, 1473, 17, 151, 1324, 355, 280, 296, 473, 813, 2093, 65, 79, 651, 679, 125, 533, 3736, 2320, 895, 108, 11, 27, 1847, 431, 778, 654, 16, 435, 436, 44, 29, 28, 20, 863, 461, 1012, 1036, 189, 1717, 1996, 25, 218, 420, 685, 483, 762, 254, 409, 490, 333, 426, 90, 32, 315, 222, 436, 332, 614, 1072, 197, 467, 546, 4748, 409, 405, 223, 557, 322, 69, 14, 33, 883, 41, 65, 1068, 1063, 40, 334, 1033, 71, 32, 62, 62, 1071, 324, 59, 69, 696, 1098, 904, 364, 2045, 395, 63, 1421, 25, 663, 1261, 213, 572, 361, 361, 27, 296, 32, 876, 2072, 781, 238, 3416, 61, 32, 420, 206, 104, 31, 21, 1098, 527, 18, 70, 948, 77, 1937, 395, 52, 588, 2711, 74, 135, 91, 720, 1036, 82, 65, 48, 186, 1274, 24, 304, 283, 4330, 313, 1094, 2649, 2893, 22, 543, 263, 38, 616, 29, 381, 425, 532, 74, 562, 1425, 581, 1857, 144, 20, 734, 475, 27, 532, 32, 876, 93, 41, 20, 40, 31, 274, 566, 810, 2652, 36, 31, 34, 1042, 16, 1147, 1902, 2982, 34, 21, 373, 95, 525, 20, 849, 2533, 575, 1230, 2078, 8, 689, 193, 1061, 477, 34, 388, 581, 95, 48, 47, 1658, 96, 493, 370, 749, 1954, 3354, 707, 101, 1116, 183, 1117, 405, 103, 265, 319, 444, 933, 79, 810, 44, 815, 889, 457, 690, 1094, 61, 779, 903, 666, 810, 2337, 423, 30, 1087, 4928, 1917, 764, 1345, 43, 40, 2556, 21, 2556, 367, 518, 1685, 933, 539, 1993, 86, 1080, 21, 1989, 988, 1364, 1661, 65, 458, 465, 304, 69, 699, 1636, 1350, 765, 1113, 1346, 528, 299, 869, 1053, 32, 56, 29, 461, 125, 83, 62, 718, 37, 30, 1259, 1792, 73, 423, 36, 144, 48, 532, 635, 583, 2134, 488, 533, 414, 628, 756, 55, 225, 493, 502, 52, 56, 1252, 1331, 1157, 60, 479, 623, 753, 64, 419, 425, 585, 2792, 375, 1998, 2833, 22, 2829, 2496, 683, 551, 421, 1075, 46, 1704, 2973, 58, 2832, 68, 418, 46, 25, 42, 2469, 39, 804, 29, 1626, 27, 447, 1639, 781, 323, 801, 68, 811, 17, 448, 395, 68, 70, 80, 811, 397, 685, 3479, 20, 522, 1763, 29, 1518, 30, 2444, 563, 52, 75, 43, 917, 31, 86, 1041, 1371, 478, 1291, 583, 255, 298, 1039, 32, 2026, 74, 1211, 302, 30, 673, 458, 59, 1625, 405, 94, 63, 53, 44, 130, 29, 131, 22, 607, 1872, 763, 2034, 1125, 848, 610, 37, 3765, 2060, 4137, 3142, 245, 398, 1926, 1725, 2044, 1004, 1621, 4061, 520, 613, 486, 2073, 31, 218, 709, 443, 34, 25, 44, 161, 2076, 952, 51, 96, 34, 1221, 38, 722, 932, 1534, 1702, 60, 630, 808, 100, 359, 32, 1555, 32, 778, 328, 681, 27, 1027, 463, 60, 65, 1315, 18, 1319, 2907, 750, 52, 90, 2596, 672, 2992, 488, 727, 2973, 424, 965, 1323, 118, 18, 2685, 3063, 1884, 473, 572, 557, 349, 606, 534, 104, 410, 78, 1042, 22, 8, 769, 349, 2487, 2581, 332, 625, 1231, 950, 935, 58, 712, 1569, 1566, 285, 441, 130, 2479, 35, 516, 1062, 167, 1864, 1260, 1463, 1707, 196, 129, 1128, 68, 45, 1173, 51, 38, 26, 302, 1006, 726, 51, 28, 2619, 57, 18, 25, 874, 944, 28, 2386, 201, 44, 793, 148, 50, 31, 716, 1055, 44, 93, 718, 27, 955, 71, 397, 1572, 431, 21, 34, 147, 579, 2501, 60, 1301, 51, 1307, 49, 2304, 1023, 397, 694, 680, 393, 1188, 509, 536, 352, 347, 239, 770, 817, 501, 565, 910, 504, 867, 49, 582, 506, 1618, 2101, 53, 3883, 37, 1022, 1021, 1579, 57, 72, 157, 2126, 41, 125, 532, 19, 4884, 84, 35, 1412, 2315, 2057, 32, 367, 897, 101, 1312, 29, 810, 621, 604, 25, 25, 1517, 293, 612, 32, 686, 44, 1587, 653, 167, 25, 285, 4330, 32, 654, 146, 675, 1047, 4171, 9, 468, 1071, 38, 96, 1733, 109, 108, 594, 857, 473, 383, 73, 726, 42, 53, 409, 66, 540, 677, 21, 68, 2078, 2878, 20, 26, 2024, 14, 53, 2101, 430, 2693, 604, 20, 21, 2069, 349, 717, 572, 21, 1889, 1741, 570, 1098, 390, 3139, 798, 1090, 767, 46, 727, 584, 45, 4184, 1011, 3205, 1251, 319, 707, 501, 67, 2368, 632, 3564, 286, 595, 15, 372, 167, 38, 761, 596, 2752, 667, 1235, 128, 883, 1302, 81, 2131, 698, 2932, 834, 483, 124, 157, 1504, 260, 387, 300, 63, 1019, 403, 505, 139, 1391, 45, 88, 1649, 2983, 50, 43, 649, 704, 219, 716, 55, 971, 460, 472, 26, 500, 276, 80, 118, 340, 670, 1080, 1083, 46, 84, 72, 301, 67, 119, 1061, 1068, 64, 708, 63, 59, 187, 1090, 57, 66, 1055, 89, 108, 1064, 1048, 103, 1060, 598, 67, 1931, 103, 177, 1889, 36, 29, 1067, 85, 95, 103, 1086, 63, 78, 83, 1073, 1064, 87, 36, 1582, 37, 813, 84, 80, 712, 169, 769, 80, 1731, 1470, 718, 602, 66, 399, 409, 1212, 337, 492, 185, 518, 1143, 138, 35, 58, 1954, 40, 62, 496, 143, 34, 139, 1359, 64, 479, 1882, 302, 1064, 2019, 41, 123, 41, 46, 742, 176, 12, 875, 1100, 1030, 1131, 1052, 28, 682, 722, 41, 35, 705, 110, 718, 87, 90, 65, 681, 118, 35, 94, 72, 94, 96, 83, 846, 95, 96, 318, 682, 975, 65, 58, 59, 72, 54, 2083, 825, 825, 83, 39, 39, 945, 59, 869, 78, 1066, 1056, 1049, 1060, 1094, 66, 1068, 61, 93, 1238, 421, 81, 1059, 1090, 1073, 693, 21, 25, 1053, 1769, 23, 1071, 1064, 1069, 1086, 1091, 404, 1062, 1148, 1779, 92, 40, 1693, 64, 1818, 101, 129, 484, 874, 14, 34, 197, 64, 1765, 96, 87, 790, 85, 1037, 91, 100, 30, 56, 820, 66, 38, 77, 50, 366, 768, 633, 48, 1026, 59, 1006, 90, 29, 806, 58, 1068, 301, 69, 52, 1490, 1188, 1042, 81, 248, 491, 74, 99, 1054, 77, 343, 111, 754, 81, 111, 76, 85, 129, 112, 143, 140, 702, 173, 86, 832, 90, 73, 335, 312, 68, 202, 124, 35, 144, 694, 2519, 119, 424, 3576, 149, 488, 1254, 31, 947, 537, 937, 3504, 1941, 30, 588, 164, 224, 49, 136, 66, 141, 1722, 1137, 317, 392, 78, 313, 2049, 75, 164, 605, 1124, 540, 1482, 3068, 2223, 269, 129, 1067, 946, 319, 258, 4197, 1325, 2399, 292, 2008, 71, 92, 93, 1213, 32, 310, 87, 89, 76, 687, 94, 820, 111, 35, 68, 101, 40, 662, 101, 65, 81, 83, 738, 79, 70, 72, 424, 59, 77, 838, 78, 1397, 97, 1066, 118, 76, 120, 82, 1898, 302, 68, 61, 41, 126, 121, 94, 81, 65, 987, 102, 498, 90, 106, 53, 58, 51, 33, 50, 64, 162, 508, 534, 647, 1058, 671, 1094, 1060, 92, 489, 683, 1057, 74, 28, 69, 827, 54, 23, 173, 233, 1078, 1300, 75, 670, 1109, 937, 1203, 297, 2053, 439, 1603, 386, 1268, 70, 389, 1474, 123, 58, 1422, 1864, 279, 1175, 727, 797, 20, 43, 668, 104, 452, 74, 50, 28, 37, 56, 480, 50, 28, 1851, 54, 30, 540, 74, 787, 762, 597, 64, 63, 43, 139, 79, 59, 56, 107, 1235, 27, 41, 52, 1651, 1249, 805, 53, 283, 258, 562, 2134, 49, 1240, 3210, 126, 39, 852, 640, 41, 67, 789, 38, 55, 36, 794, 793, 1196, 34, 1186, 39, 1221, 1885, 769, 1173, 75, 159, 975, 700, 822, 721, 706, 785, 1638, 167, 1153, 613, 741, 712, 44, 698, 108, 54, 1089, 176, 356, 1045, 1154, 523, 1045, 53, 30, 24, 556, 42, 38, 359, 2022, 59, 29, 138, 33, 988, 63, 233, 1051, 24, 51, 76, 674, 24, 676, 638, 16, 1071, 773, 477, 56, 766, 96, 80, 50, 89, 43, 587, 98, 696, 167, 267, 1546, 759, 61, 311, 1096, 91, 1047, 286, 1110, 836, 549, 1052, 87, 62, 694, 606, 1348, 52, 298, 22, 72, 32, 89, 66, 1192, 55, 1491, 40, 54, 1271, 1337, 29, 633, 478, 537, 18, 425, 779, 606, 77, 69, 75, 28, 97, 65, 31, 22, 44, 1070, 1053, 18, 1067, 49, 54, 814, 1031, 67, 327, 58, 1898, 608, 476, 56, 383, 603, 683, 50, 88, 72, 205, 602, 1059, 48, 15, 52, 211, 278, 159, 488, 233, 106, 397, 72, 1248, 681, 106, 203, 244, 169, 678, 230, 40, 307, 328, 325, 109, 235, 1290, 556, 83, 97, 163, 30, 46, 638, 182, 474, 81, 988, 1696, 29, 51, 25, 47, 41, 461, 24, 37, 73, 31, 52, 29, 74, 16, 100, 149, 21, 75, 691, 680, 620, 111, 57, 82, 34, 1670, 651, 98, 104, 730, 124, 170, 58, 1046, 57, 67, 755, 71, 1055, 1100, 1085, 106, 1088, 1067, 1093, 1052, 316, 567, 60, 530, 2362, 3227, 3805, 1488, 41, 1466, 3198, 846, 31, 817, 539, 2503, 688, 3442, 1257, 98, 533, 2371, 195, 3363, 922, 4789, 206, 558, 1169, 1479, 541, 30, 596, 61, 98, 434, 1308, 473, 2058, 1781, 3474, 613, 630, 1293, 1317, 426, 89, 620, 84, 84, 503, 75, 566, 47, 317, 69, 664, 90, 689, 694, 202, 2060, 1538, 665, 319, 40, 422, 926, 39, 57, 40, 2946, 1245, 575, 35, 26, 8, 1094, 2137, 768, 378, 859, 43, 1744, 80, 43, 1979, 75, 287, 58, 338, 1050, 75, 61, 1098, 115, 1037, 56, 1779, 38, 848, 895, 3354, 897, 839, 1770, 3216, 4059, 419, 448, 445, 2022, 2100, 805, 46, 1728, 52, 1371, 841, 29, 1027, 323, 669, 22, 21, 24, 27, 7, 970, 72, 820, 1860, 1341, 223, 411, 902, 366, 25, 439, 89, 130, 603, 1188, 400, 477, 1192, 333, 419, 3131, 39, 2217, 127, 3532, 642, 2562, 4366, 2221, 268, 21, 669, 1197, 596, 1382, 1050, 374, 374, 366, 3078, 667, 714, 1240, 1296, 1997, 206, 36, 1051, 1077, 1067, 182, 91, 663, 81, 131, 390, 1235, 21, 636, 3130, 38, 55, 74, 2482, 1579, 564, 98, 624, 1549, 1222, 1247, 51, 1353, 1953, 1253, 1585, 1168, 580, 18, 3421, 1431, 101, 2328, 3734, 1942, 474, 1089, 773, 1667, 1704, 87, 547, 14, 31, 2230, 406, 1747, 713, 873, 2487, 3458, 11, 699, 1315, 160, 1106, 357, 947, 2998, 43, 905, 483, 556, 1130, 1514, 639, 766, 917, 820, 1073, 991, 620, 795, 135, 782, 934, 1072, 466, 63, 1498, 76, 20, 449, 1272, 298, 1441, 1015, 324, 96, 1629, 736, 1743, 236, 2191, 324, 961, 591, 1654, 982, 151, 188, 132, 1532, 41, 41, 40, 949, 720, 32, 323, 1532, 1382, 127, 214, 23, 2421, 30, 1332, 104, 1165, 3304, 853, 548, 258, 29, 729, 648, 2791, 97, 3795, 498, 494, 872, 29, 944, 3324, 32, 1291, 42, 385, 2508, 550, 809, 441, 22, 467, 2922, 47, 987, 1254, 121, 91, 38, 774, 1260, 1268, 1690, 425, 619, 1721, 1118, 51, 2319, 40, 58, 959, 1246, 1378, 67, 1033, 141, 17, 419, 16, 166, 831, 3571, 599, 2223, 2055, 118, 507, 4129, 3490, 2177, 1361, 429, 587, 1603, 758, 1016, 837, 1112, 827, 1225, 749, 897, 761, 739, 537, 26, 1184, 50, 804, 423, 443, 742, 47, 261, 39, 330, 750, 377, 280, 431, 742, 750, 748, 248, 67, 440, 847, 86, 299, 428, 738, 392, 750, 1439, 981, 924, 275, 1248, 32, 2192, 66, 19, 499, 747, 2231, 2029, 1229, 2010, 1273, 1809, 326, 988, 53, 23, 618, 72, 58, 441, 773, 1265, 1114, 211, 2079, 549, 112, 49, 55, 454, 767, 57, 133, 425, 55, 155, 237, 81, 636, 890, 1998, 45, 1146, 192, 437, 127, 2865, 942, 1643, 949, 366, 913, 344, 1556, 315, 562, 151, 116, 1671, 730, 1260, 141, 179, 514, 471, 165, 484, 483, 132, 127, 1034, 667, 1811, 1685, 1855, 520, 17, 1704, 89, 1080, 44, 20, 46, 1079, 94, 94, 1702, 88, 29, 39, 630, 40, 1884, 1709, 762, 38, 754, 628, 344, 785, 78, 45, 36, 2273, 1452, 2261, 119, 1400, 58, 41, 200, 2908, 1441, 27, 31, 58, 3041, 162, 119, 56, 1624, 543, 2250, 78, 687, 2910, 2487, 58, 61, 1759, 565, 638, 416, 517, 52, 1048, 296, 701, 1715, 72, 1133, 255, 3779, 2449, 902, 399, 998, 243, 28, 704, 998, 1080, 4641, 501, 1944, 359, 1170, 4118, 64, 30, 1880, 1370, 1032, 17, 34, 71, 140, 1570, 50, 35, 149, 71, 328, 2061, 53, 2075, 36, 3063, 178, 24, 168, 144, 398, 22, 22, 54, 43, 386, 273, 38, 522, 96, 24, 14, 177, 551, 806, 32, 54, 799, 1768, 81, 59, 2516, 38, 594, 1379, 15, 1054, 2944, 57, 729, 463, 1421, 616, 413, 35, 442, 736, 628, 45, 4242, 346, 418, 57, 174, 153, 381, 1310, 499, 1438, 23, 2814, 1301, 134, 88, 1301, 723, 75, 2436, 52, 52, 52, 66, 63, 1109, 403, 136, 1065, 1398, 1598, 32, 781, 24, 21, 40, 653, 4845, 4996, 324, 772, 307, 243, 85, 520, 1737, 2939, 1658, 468, 3086, 2182, 1055, 443, 23, 784, 59, 21, 51, 17, 419, 586, 1387, 10, 23, 1977, 1212, 1009, 64, 647, 520, 644, 326, 202, 1509, 1381, 907, 28, 1244, 675, 397, 106, 2825, 3461, 183, 2393, 1526, 402, 288, 2972, 29, 1045, 21, 2594, 2560, 700, 1023, 1211, 340, 1116, 169, 436, 322, 2822, 1276, 1294, 610, 1676, 849, 921, 798, 1389, 2036, 1025, 54, 1582, 463, 1581, 57, 72, 1656, 532, 444, 368, 1079, 55, 245, 1174, 1882, 1763, 67, 19, 521, 18, 956, 1548, 250, 3329, 1045, 1505, 2034, 667, 395, 928, 244, 1168, 61, 696, 450, 397, 1020, 808, 12, 1792, 1024, 525, 35, 3594, 1016, 37, 431, 1695, 1529, 299, 542, 42, 42, 396, 55, 868, 342, 416, 914, 85, 90, 1855, 416, 4254, 261, 10, 385, 51, 23, 328, 885, 482, 729, 360, 101, 433, 1442, 97, 588, 1419, 93, 594, 353, 434, 68, 17, 31, 383, 2062, 2052, 617, 412, 239, 257, 1277, 486, 1020, 678, 2278, 24, 719, 60, 95, 495, 1531, 145, 1431, 31, 1364, 575, 2088, 1839, 52, 219, 1468, 639, 91, 1477, 70, 1275, 1515, 537, 212, 207, 1706, 299, 992, 606, 61, 1142, 77, 1852, 635, 594, 50, 1216, 37, 477, 306, 41, 768, 952, 2153, 49, 405, 845, 2851, 545, 463, 528, 45, 82, 41, 34, 257, 423, 89, 1122, 295, 42, 852, 370, 173, 58, 23, 3243, 4347, 382, 20, 62, 49, 689, 487, 716, 1768, 596, 746, 794, 451, 805, 1894, 580, 745, 3176, 23, 73, 39, 74, 21, 67, 412, 955, 86, 515, 45, 107, 942, 68, 505, 102, 650, 108, 1320, 144, 548, 90, 167, 159, 71, 428, 26, 22, 55, 39, 44, 28, 264, 41, 1871, 105, 1481, 1034, 988, 234, 1305, 502, 512, 322, 395, 1324, 151, 1230, 712, 17, 1794, 1616, 1163, 4194, 1092, 4183, 1549, 1083, 1180, 78, 917, 1059, 660, 2708, 1073, 697, 17, 1175, 2731, 1142, 73, 818, 57, 96, 105, 826, 518, 996, 1104, 1005, 490, 2671, 1754, 2020, 25, 1695, 768, 574, 61, 82, 49, 2707, 23, 673, 2556, 1396, 2538, 614, 62, 475, 43, 36, 265, 53, 77, 18, 529, 21, 2074, 64, 3828, 3454, 1078, 35, 1438, 461, 680, 314, 66, 15, 18, 2052, 583, 49, 405, 1016, 532, 957, 348, 61, 202, 1531, 32, 2192, 1162, 927, 1709, 902, 677, 1724, 1922, 276, 802, 78, 1177, 1160, 27, 696, 68, 35, 39, 1270, 1955, 766, 715, 262, 649, 555, 277, 2302, 594, 35, 361, 54, 176, 879, 32, 460, 585, 18, 67, 579, 3256, 240, 131, 61, 410, 134, 190, 594, 85, 53, 639, 25, 738, 56, 686, 71, 88, 1134, 610, 1787, 137, 829, 69, 780, 99, 380, 361, 935, 731, 169, 47, 586, 1291, 972, 237, 935, 91, 1191, 111, 60, 138, 33, 1081, 55, 462, 21, 1081, 849, 261, 1420, 469, 99, 1124, 28, 81, 373, 2236, 3885, 458, 468, 13, 558, 1061, 721, 3859, 81, 227, 550, 1994, 20, 476, 46, 121, 1070, 1037, 1035, 52, 455, 58, 37, 1596, 69, 78, 1046, 55, 59, 948, 44, 1768, 312, 76, 2809, 74, 570, 4429, 2268, 437, 2447, 2192, 4032, 1461, 2982, 2407, 1607, 932, 3611, 1121, 449, 2276, 250, 3631, 197, 2385, 1099, 203, 157, 48, 2379, 298, 480, 622, 1855, 729, 1067, 288, 398, 564, 1828, 25, 1102, 24, 66, 2459, 591, 1505, 27, 1227, 730, 193, 504, 704, 676, 1159, 629, 574, 111, 728, 393, 526, 711, 692, 1424, 703, 17, 148, 367, 2498, 1335, 3051, 74, 1124, 4, 3006, 1309, 741, 2739, 775, 490, 1405, 1029, 1117, 493, 1667, 1315, 352, 2943, 1891, 2119, 872, 3119, 1500, 725, 1664, 65, 460, 861, 1119, 802, 836, 3628, 30, 560, 3083, 743, 1246, 2196, 1932, 1373, 2267, 634, 1039, 714, 989, 9, 1655, 970, 930, 31, 1116, 12, 558, 1513, 8, 1122, 630, 3143, 13, 821, 1723, 11, 1306, 9, 604, 12, 3584, 851, 11, 523, 2464, 1897, 1224, 23, 25, 1456, 62, 800, 36, 2991, 1473, 978, 341, 980, 54, 427, 545, 34, 66, 1585, 1751, 21, 1848, 190, 825, 1452, 58, 270, 20, 226, 468, 90, 209, 329, 1010, 679, 238, 460, 431, 407, 179, 50, 62, 63, 1791, 31, 59, 466, 1661, 24, 29, 846, 1455, 260, 1419, 121, 2869, 2187, 215, 22, 2307, 4921, 59, 2383, 20, 2317, 21, 38, 77, 33, 19, 339, 1295, 58, 365, 473, 2387, 1104, 98, 447, 712, 1054, 639, 559, 4999, 101, 57, 2375, 244, 461, 525, 1069, 4242, 1467, 21, 1584, 96, 326, 2574, 2773, 96, 276, 373, 718, 24, 1108, 489, 100, 1086, 180, 1711, 114, 2802, 84, 315, 426, 61, 1474, 515, 107, 27, 131, 2137, 283, 89, 1723, 2073, 973, 525, 2038, 520, 670, 363, 1035, 83, 103, 83, 111, 392, 381, 579, 365, 172, 185, 686, 888, 155, 214, 753, 403, 1183, 849, 94, 326, 26, 386, 4437, 1235, 77, 877, 635, 507, 548, 277, 4435, 240, 538, 32, 237, 1287, 228, 534, 1279, 533, 373, 228, 27, 80, 1448, 873, 1796, 564, 1910, 272, 1628, 434, 471, 1061, 24, 111, 3173, 723, 736, 32, 2817, 54, 4618, 686, 1488, 630, 1190, 300, 67, 56, 383, 87, 2475, 1189, 1080, 139, 1227, 883, 3438, 2189, 418, 7, 1817, 833, 623, 108, 59, 23, 34, 1791, 36, 155, 3332, 1074, 764, 532, 562, 774, 2077, 192, 2848, 423, 4028, 1087, 27, 616, 239, 406, 945, 671, 695, 69, 186, 479, 359, 1799, 339, 1567, 793, 391, 67, 225, 673, 1013, 722, 820, 560, 529, 66, 522, 819, 1182, 1452, 445, 1533, 1405, 884, 2997, 1647, 41, 983, 1420, 4023, 3077, 55, 4, 1060, 958, 328, 112, 297, 601, 30, 504, 19, 4666, 40, 1905, 31, 31, 827, 376, 66, 391, 312, 335, 376, 232, 2391, 1301, 1061, 1469, 428, 187, 323, 722, 1101, 965, 966, 230, 1606, 586, 1024, 539, 11, 1557, 46, 577, 2433, 560, 2632, 2185, 3454, 2926, 50, 2867, 965, 623, 2055, 724, 2175, 996, 32, 506, 566, 2505, 29, 1384, 602, 52, 85, 77, 146, 203, 105, 21, 361, 1038, 1517, 968, 47, 933, 806, 512, 40, 624, 221, 2827, 613, 165, 725, 66, 275, 247, 31, 70, 157, 317, 1287, 64, 3051, 126, 3037, 356, 331, 801, 1185, 671, 1166, 166, 1219, 1114, 827, 1031, 557, 158, 411, 584, 35, 45, 178, 58, 44, 46, 99, 282, 2702, 782, 351, 665, 74, 131, 89, 598, 144, 88, 345, 1034, 63, 115, 204, 103, 1116, 492, 397, 37, 1083, 445, 279, 1632, 632, 403, 631, 531, 140, 39, 1418, 678, 1156, 627, 23, 36, 312, 1334, 155, 2449, 1630, 1521, 938, 23, 392, 1767, 853, 3441, 4085, 591, 440, 834, 55, 60, 2190, 75, 589, 42, 547, 45, 16, 1150, 43, 610, 1876, 563, 61, 2051, 907, 692, 1206, 796, 144, 578, 80, 25, 144, 101, 214, 46, 421, 432, 34, 330, 23, 71, 43, 2403, 1625, 4355, 1065, 172, 19, 1127, 15, 65, 131, 1115, 38, 15, 1782, 29, 44, 19, 1330, 22, 45, 60, 606, 954, 1074, 441, 50, 283, 1127, 32, 144, 71, 296, 37, 1001, 17, 536, 161, 1168, 41, 51, 41, 2621, 856, 60, 3731, 26, 122, 71, 637, 1683, 37, 117, 479, 140, 994, 148, 1822, 1654, 832, 1733, 925, 645, 335, 62, 52, 779, 23, 182, 147, 169, 413, 1497, 465, 610, 37, 1055, 1114, 353, 173, 843, 53, 2012, 1100, 1224, 1957, 1327, 826, 801, 898, 839, 976, 3499, 385, 640, 40, 26, 1961, 105, 887, 22, 1474, 1743, 1298, 390, 599, 119, 1035, 346, 1445, 478, 1739, 1287, 352, 430, 2828, 448, 1943, 680, 1166, 3430, 1025, 1256, 683, 31, 2574, 1994, 1276, 1845, 1568, 3385, 27, 1933, 30, 144, 73, 162, 277, 607, 4449, 528, 1510, 348, 2358, 2485, 370, 810, 3076, 606, 624, 515, 87, 4189, 602, 791, 109, 47, 3645, 1058, 321, 59, 39, 1672, 86, 509, 36, 158, 61, 794, 625, 110, 72, 44, 35, 48, 872, 494, 1047, 389, 740, 49, 94, 45, 58, 2112, 1467, 2141, 174, 1062, 46, 679, 1257, 1224, 48, 29, 64, 862, 73, 324, 73, 2773, 1289, 554, 581, 614, 60, 146, 1786, 1731, 56, 62, 21, 28, 45, 52, 2063, 2813, 690, 2315, 27, 62, 3002, 1401, 71, 437, 505, 552, 557, 75, 3685, 28, 60, 372, 3480, 11, 105, 62, 1885, 694, 3195, 106, 1943, 2000, 168, 2392, 390, 547, 2467, 52, 505, 50, 1253, 1178, 58, 758, 1898, 51, 2055, 46, 549, 3224, 167, 38, 47, 587, 3254, 4401, 3297, 1250, 165, 59, 875, 1211, 454, 74, 309, 41, 323, 328, 537, 484, 905, 769, 59, 64, 107, 98, 542, 290, 3451, 1363, 94, 757, 732, 88, 36, 51, 755, 809, 39, 85, 90, 121, 908, 28, 29, 646, 49, 1277, 409, 1010, 50, 95, 281, 614, 129, 1776, 489, 551, 107, 418, 71, 990, 66, 536, 75, 25, 63, 43, 29, 336, 2420, 55, 34, 196, 3931, 39, 18, 1442, 23, 1664, 28, 1033, 597, 266, 225, 27, 128, 34, 1064, 1067, 137, 1149, 129, 886, 450, 76, 61, 53, 56, 25, 41, 701, 1040, 199, 580, 1058, 163, 1216, 119, 666, 25, 260, 200, 939, 28, 286, 70, 290, 1495, 49, 97, 49, 1518, 274, 270, 507, 1009, 429, 41, 939, 107, 177, 82, 62, 26, 44, 728, 34, 41, 1825, 1532, 57, 475, 152, 1058, 92, 878, 71, 61, 35, 88, 985, 90, 825, 49, 433, 1112, 27, 173, 103, 54, 253, 44, 16, 265, 150, 1991, 2836, 188, 96, 26, 149, 540, 45, 33, 44, 1047, 40, 1416, 19, 408, 631, 777, 18, 414, 35, 4893, 1949, 526, 1171, 496, 2306, 569, 941, 1237, 631, 12, 333, 727, 73, 818, 625, 81, 16, 157, 683, 79, 176, 771, 929, 590, 555, 260, 1082, 728, 1433, 1541, 1523, 58, 266, 1293, 3172, 651, 2823, 1646, 1718, 3588, 383, 1064, 2360, 4193, 1784, 1230, 2148, 980, 1083, 2882, 351, 4374, 377, 2145, 1181, 1192, 31, 42, 2545, 257, 179, 609, 1203, 80, 58, 8, 56, 47, 770, 1732, 21, 4778, 25, 24, 522, 816, 1901, 929, 1003, 573, 2211, 1641, 142, 1162, 91, 71, 17, 934, 2945, 15, 1003, 3493, 459, 3737, 532, 69, 614, 1660, 472, 620, 158, 134, 90, 65, 1018, 58, 371, 636, 243, 816, 665, 171, 72, 509, 125, 4231, 1402, 3212, 351, 649, 1470, 701, 666, 683, 1191, 520, 152, 658, 449, 585, 744, 36, 392, 712, 41, 18, 169, 88, 590, 128, 1674, 448, 461, 104, 737, 31, 34, 1008, 908, 67, 46, 2171, 1161, 119, 684, 485, 486, 2169, 37, 917, 320, 15, 778, 556, 64, 18, 18, 33, 728, 2332, 21, 1350, 713, 223, 2899, 17, 45, 1176, 17, 67, 32, 114, 52, 15, 1368, 793, 105, 1060, 44, 1161, 925, 105, 57, 617, 1377, 44, 746, 28, 42, 1376, 1864, 105, 55, 17, 574, 1160, 20, 2024, 22, 349, 23, 998, 488, 1065, 576, 513, 48, 3183, 2918, 1584, 523, 452, 903, 865, 84, 146, 644, 301, 38, 51, 82, 1028, 981, 980, 1568, 200, 1402, 978, 978, 507, 1055, 64, 363, 13, 111, 279, 1020, 1478, 1234, 1657, 1344, 1251, 74, 1542, 78, 1312, 105, 3430, 302, 1714, 81, 1543, 1482, 405, 760, 2322, 684, 2105, 740, 145, 694, 75, 1368, 720, 811, 75, 16, 425, 1541, 4876, 369, 621, 791, 57, 998, 694, 1425, 2286, 4789, 985, 584, 1003, 477, 2160, 2654, 1221, 494, 419, 212, 61, 714, 687, 432, 55, 689, 914, 41, 52, 2155, 382, 422, 1181, 607, 1221, 326, 13, 1201, 589, 18, 33, 70, 47, 1292, 104, 431, 66, 77, 79, 71, 73, 1392, 185, 144, 126, 2175, 352, 3333, 924, 631, 38, 269, 1914, 913, 784, 405, 28, 1533, 781, 552, 420, 60, 602, 1651, 2314, 1054, 24, 679, 514, 15, 914, 2050, 4460, 903, 54, 1766, 82, 825, 26, 15, 2239, 987, 657, 82, 790, 1992, 2768, 1040, 1948, 51, 27, 43, 24, 936, 162, 364, 434, 777, 1977, 434, 216, 607, 109, 476, 59, 124, 489, 371, 499, 284, 734, 326, 102, 512, 302, 127, 326, 145, 405, 465, 139, 315, 437, 1848, 572, 1864, 2490, 542, 521, 61, 979, 423, 35, 755, 975, 286, 84, 51, 554, 13, 101, 403, 255, 799, 325, 877, 1432, 16, 838, 710, 255, 61, 94, 22, 94, 923, 437, 115, 34, 109, 106, 66, 279, 202, 118, 91, 35, 72, 89, 416, 56, 44, 1452, 196, 463, 768, 1191, 20, 1565, 263, 62, 175, 43, 98, 935, 45, 85, 56, 36, 542, 1564, 65, 392, 1093, 572, 1013, 65, 801, 432, 536, 178, 782, 40, 2433, 96, 1751, 838, 150, 275, 2401, 2395, 1272, 348, 128, 49, 1567, 254, 360, 4963, 45, 2696, 2049, 65, 614, 54, 384, 50, 1438, 2680, 3552, 605, 299, 574, 512, 3159, 1195, 4532, 1488, 526, 45, 1198, 486, 36, 1276, 24, 51, 1020, 78, 831, 314, 281, 627, 279, 38, 880, 142, 181, 571, 23, 204, 3693, 103, 821, 18, 616, 85, 872, 1007, 2487, 266, 898, 1324, 224, 2221, 309, 408, 985, 289, 1226, 48, 847, 41, 461, 136, 59, 136, 192, 36, 947, 51, 1941, 42, 954, 95, 98, 62, 493, 1472, 1089, 67, 57, 428, 1261, 289, 22, 31, 23, 1380, 660, 265, 1096, 1072, 4520, 2542, 1371, 1254, 2753, 2711, 408, 1004, 89, 49, 331, 639, 993, 2095, 31, 2048, 376, 50, 559, 114, 608, 334, 765, 460, 868, 882, 883, 885, 48, 887, 721, 890, 2301, 138, 85, 65, 58, 42, 1035, 44, 987, 366, 4376, 225, 55, 1352, 190, 58, 32, 191, 201, 98, 958, 169, 22, 567, 2668, 1476, 185, 62, 44, 2576, 1033, 1735, 1369, 1607, 262, 1820, 79, 25, 1001, 503, 130, 695, 237, 739, 1482, 171, 1367, 456, 1092, 1121, 247, 2817, 41, 39, 982, 208, 158, 182, 314, 4632, 157, 1747, 405, 404, 71, 355, 96, 364, 40, 1124, 1824, 548, 282, 154, 745, 273, 340, 167, 53, 37, 1547, 1585, 1091, 376, 4277, 23, 50, 401, 2055, 66, 759, 2104, 846, 110, 1253, 627, 1404, 50, 1277, 1035, 85, 55, 17, 2389, 501, 38, 2655, 36, 1528, 4118, 4922, 17, 1359, 32, 1991, 706, 925, 842, 2855, 862, 1664, 473, 1206, 32, 375, 297, 605, 154, 139, 28, 30, 1075, 36, 97, 401, 668, 433, 135, 143, 1501, 3164, 75, 24, 774, 71, 55, 333, 715, 134, 117, 42, 4957, 2507, 47, 66, 1440, 274, 289, 1499, 27, 334, 62, 316, 211, 31, 315, 1458, 119, 462, 41, 724, 32, 59, 2842, 637, 299, 325, 210, 40, 996, 41, 48, 29, 20, 61, 263, 1404, 295, 685, 152, 994, 1714, 53, 1826, 455, 49, 59, 1239, 536, 366, 75, 200, 1785, 93, 197, 126, 2333, 38, 50, 1064, 46, 63, 51, 80, 2058, 44, 100, 208, 569, 2445, 36, 148, 120, 69, 50, 828, 115, 197, 45, 471, 114, 183, 360, 29, 401, 31, 2569, 38, 112, 146, 84, 180, 230, 404, 98, 1610, 36, 105, 45, 231, 25, 1876, 416, 148, 574, 503, 52, 299, 757, 454, 40, 1429, 193, 472, 71, 290, 41, 1351, 31, 608, 786, 527, 933, 501, 106, 196, 1092, 1173, 567, 401, 718, 535, 414, 402, 573, 480, 810, 403, 68, 705, 1062, 1062, 412, 2102, 35, 1066, 82, 38, 2634, 101, 436, 212, 289, 70, 1333, 74, 41, 290, 57, 794, 2287, 975, 1651, 348, 1891, 1453, 532, 111, 1356, 1375, 447, 9, 9, 1919, 1642, 789, 508, 1654, 52, 141, 95, 23, 491, 111, 165, 930, 53, 72, 77, 60, 1218, 476, 295, 42, 54, 1178, 1434, 44, 44, 390, 132, 62, 595, 638, 792, 500, 298, 75, 79, 496, 1889, 198, 198, 92, 40, 531, 44, 79, 57, 518, 105, 764, 278, 595, 39, 35, 1599, 212, 3028, 42, 1019, 176, 93, 123, 85, 142, 58, 734, 74, 88, 30, 100, 251, 41, 85, 175, 818, 2026, 36, 27, 2653, 2652, 416, 41, 126, 38, 21, 308, 77, 741, 213, 212, 257, 3829, 34, 309, 3458, 3923, 1143, 115, 36, 833, 410, 1555, 25, 716, 1522, 314, 16, 260, 1990, 38, 177, 528, 39, 132, 41, 223, 492, 97, 464, 735, 36, 2536, 30, 108, 399, 37, 123, 445, 1092, 418, 76, 4695, 1524, 34, 539, 2167, 41, 249, 166, 741, 40, 686, 779, 74, 780, 41, 3367, 71, 370, 111, 158, 515, 31, 561, 166, 532, 106, 919, 917, 1156, 280, 497, 501, 503, 506, 506, 95, 508, 21, 149, 991, 1544, 221, 288, 208, 57, 64, 253, 1708, 676, 2446, 2383, 317, 2139, 663, 131, 30, 120, 1343, 2385, 2075, 1117, 1110, 1063, 1066, 42, 52, 57, 333, 1069, 1062, 1129, 56, 51, 42, 1073, 199, 58, 48, 69, 1062, 59, 883, 63, 389, 487, 787, 218, 698, 420, 736, 699, 1259, 219, 199, 702, 334, 510, 560, 648, 180, 368, 983, 1281, 500, 143, 992, 692, 178, 198, 502, 172, 473, 714, 680, 1158, 167, 232, 238, 227, 1972, 234, 2065, 227, 2083, 281, 225, 2030, 225, 229, 165, 60, 23, 677, 515, 71, 64, 93, 25, 1060, 35, 693, 712, 1057, 59, 14, 330, 710, 1053, 52, 61, 57, 73, 73, 1079, 62, 65, 73, 1078, 67, 73, 1079, 1105, 1105, 1076, 73, 1074, 67, 1053, 69, 690, 56, 1690, 61, 103, 65, 1060, 50, 52, 65, 57, 1690, 109, 96, 32, 525, 85, 90, 71, 45, 42, 655, 30, 101, 79, 30, 93, 93, 100, 891, 86, 893, 930, 894, 872, 939, 935, 958, 932, 945, 876, 891, 880, 946, 874, 327, 53, 31, 44, 85, 89, 94, 21, 896, 48, 12, 93, 94, 665, 41, 79, 68, 2009, 48, 1525, 69, 41, 41, 41, 1536, 1536, 36, 36, 34, 41, 66, 792, 65, 61, 92, 102, 63, 85, 92, 89, 88, 79, 71, 99, 90, 124, 1074, 78, 40, 37, 223, 122, 70, 84, 63, 103, 85, 61, 114, 150, 130, 965, 137, 154, 112, 43, 40, 112, 32, 90, 35, 1628, 106, 1934, 76, 412, 31, 45, 1483, 271, 489, 47, 30, 793, 1029, 900, 130, 23, 13, 31, 1289, 1554, 684, 466, 402, 39, 55, 63, 103, 87, 1073, 936, 45, 1339, 155, 94, 2793, 48, 1058, 475, 793, 63, 1537, 68, 980, 73, 25, 1059, 125, 14, 108, 84, 27, 566, 24, 105, 111, 17, 34, 185, 609, 33, 146, 45, 1372, 24, 771, 708, 24, 20, 849, 100, 20, 85, 63, 17, 28, 41, 44, 31, 96, 64, 21, 1053, 43, 69, 136, 59, 1057, 1063, 52, 68, 64, 46, 39, 32, 65, 55, 49, 121, 34, 33, 71, 1247, 1934, 1297, 1936, 3344, 821, 407, 2076, 2086, 36, 3121, 556, 2629, 868, 72, 36, 72, 1072, 74, 1074, 33, 1062, 400, 3007, 49, 143, 46, 50, 26, 1028, 8, 712, 1029, 31, 571, 37, 35, 258, 473, 1050, 22, 1036, 1045, 15, 30, 66, 938, 93, 226, 904, 661, 1064, 1403, 870, 1050, 46, 155, 356, 1049, 361, 1039, 8, 60, 525, 9, 2204, 26, 48, 1078, 997, 3697, 435, 560, 1528, 334, 3541, 549, 20, 66, 1083, 1057, 58, 60, 2144, 1041, 1044, 1122, 2416, 1043, 1156, 323, 209, 470, 34, 470, 30, 151, 1034, 39, 50, 814, 2280, 51, 40, 137, 12, 261, 1141, 396, 1085, 67, 874, 1383, 1041, 320, 149, 39, 497, 226, 454, 36, 39, 82, 389, 31, 1480, 70, 21, 2170, 1114, 38, 1332, 338, 1108, 12, 2032, 961, 1671, 1621, 16, 3139, 723, 2751, 2328, 1523, 2941, 1753, 1270, 818, 1250, 1175, 1937, 658, 1796, 2684, 2187, 316, 1518, 319, 1284, 2238, 3986, 887, 2189, 55, 801, 827, 585, 2833, 302, 3460, 1230, 337, 1982, 699, 906, 584, 334, 3462, 2979, 27, 569, 2285, 2807, 912, 1060, 7, 1236, 160, 23, 22, 647, 69, 4866, 4942, 14, 55, 1972, 1327, 762, 6, 24, 59, 112, 19, 316, 3979, 38, 802, 709, 1847, 2040, 3456, 2365, 114, 1433, 1809, 720, 45, 1095, 58, 2868, 109, 61, 1383, 550, 61, 2771, 84, 734, 703, 708, 167, 288, 60, 456, 1173, 844, 1196, 48, 1143, 581, 460, 553, 194, 1255, 534, 336, 715, 1028, 1599, 1724, 54, 561, 910, 2782, 3895, 2450, 870, 137, 779, 50, 85, 1884, 2710, 1804, 1189, 45, 1034, 144, 2291, 32, 1715, 57, 121, 64, 649, 37, 477, 499, 1307, 1846, 1342, 83, 653, 626, 360, 26, 21, 252, 9, 25, 3801, 24, 2150, 839, 215, 2325, 1926, 2694, 2731, 3938, 2654, 530, 51, 1297, 1032, 3922, 4908, 1169, 808, 3774, 157, 1327, 840, 65, 1407, 743, 2503, 823, 152, 1188, 1118, 20, 207, 37, 54, 33, 2576, 15, 53, 39, 929, 54, 1312, 1414, 620, 1510, 1533, 14, 4673, 4205, 130, 1025, 40, 53, 1169, 1557, 562, 346, 45, 1232, 13, 784, 1584, 645, 1559, 482, 1041, 609, 394, 1146, 791, 2095, 153, 146, 1055, 952, 109, 1416, 139, 376, 3657, 304, 1008, 348, 18, 179, 1054, 169, 4740, 1324, 1715, 2338, 718, 49, 574, 18, 129, 1898, 1332, 4855, 978, 42, 46, 421, 1557, 536, 361, 185, 1079, 79, 746, 1777, 103, 408, 61, 272, 1409, 710, 184, 1899, 99, 761, 743, 759, 30, 1631, 159, 637, 314, 2336, 66, 68, 25, 312, 243, 105, 896, 32, 439, 20, 71, 13, 313, 153, 26, 1043, 46, 1582, 1212, 1113, 83, 130, 267, 888, 23, 445, 92, 57, 66, 1131, 15, 1018, 57, 150, 1766, 1761, 991, 1950, 236, 593, 1073, 434, 120, 44, 794, 1667, 633, 559, 1457, 26, 55, 71, 1011, 599, 965, 811, 48, 1753, 550, 300, 2875, 688, 35, 1716, 891, 381, 1163, 414, 69, 789 ], "xaxis": "x3", "yaxis": "y3" }, { "alignmentgroup": "True", "bingroup": "x", "histnorm": "density", "hovertemplate": "category=Clothing & Accessories
description_length=%{x}
density=%{y}", "legendgroup": "Clothing & Accessories", "marker": { "color": "#00cc96", "opacity": 1, "pattern": { "shape": "" } }, "name": "Clothing & Accessories", "offsetgroup": "Clothing & Accessories", "orientation": "v", "showlegend": true, "type": "histogram", "x": [ 774, 233, 76, 54, 64, 298, 154, 373, 329, 1084, 483, 450, 441, 343, 443, 498, 491, 525, 385, 392, 100, 1091, 480, 505, 716, 268, 194, 1138, 425, 245, 877, 337, 379, 181, 865, 36, 192, 1686, 85, 550, 333, 325, 346, 345, 371, 633, 831, 344, 195, 477, 327, 223, 1074, 136, 1222, 599, 1233, 407, 708, 1199, 215, 356, 97, 599, 1143, 599, 393, 158, 281, 361, 178, 719, 221, 499, 390, 525, 72, 4, 488, 104, 405, 978, 994, 134, 196, 326, 257, 131, 205, 146, 231, 510, 338, 1384, 631, 267, 580, 249, 1028, 444, 483, 656, 449, 549, 1849, 115, 272, 437, 65, 183, 221, 255, 257, 892, 68, 546, 246, 806, 255, 304, 393, 595, 307, 910, 458, 168, 108, 557, 52, 396, 257, 394, 519, 185, 140, 308, 71, 665, 477, 82, 256, 360, 98, 641, 641, 179, 805, 181, 91, 1052, 162, 349, 1029, 1108, 518, 221, 358, 298, 95, 365, 261, 200, 1149, 805, 537, 498, 108, 90, 213, 705, 346, 348, 123, 780, 874, 883, 374, 49, 544, 86, 741, 139, 856, 236, 271, 935, 166, 338, 23, 329, 1083, 121, 159, 673, 919, 1283, 51, 684, 292, 491, 164, 304, 120, 116, 189, 36, 948, 27, 1274, 164, 457, 205, 439, 210, 100, 316, 1474, 210, 483, 97, 209, 210, 208, 825, 376, 484, 459, 491, 467, 823, 250, 317, 1058, 767, 329, 1018, 464, 164, 320, 157, 512, 682, 65, 136, 121, 166, 320, 295, 165, 59, 67, 310, 132, 154, 55, 36, 381, 1092, 481, 230, 1673, 290, 150, 517, 880, 1112, 155, 363, 516, 825, 757, 154, 141, 486, 285, 244, 293, 232, 141, 242, 277, 145, 154, 160, 299, 25, 196, 109, 157, 147, 37, 91, 144, 83, 52, 187, 147, 78, 151, 203, 23, 418, 52, 69, 146, 137, 539, 141, 130, 146, 110, 105, 189, 192, 173, 166, 137, 647, 398, 1318, 609, 626, 620, 55, 66, 408, 358, 755, 396, 601, 250, 66, 439, 152, 402, 386, 75, 31, 354, 551, 275, 670, 624, 247, 469, 134, 468, 178, 148, 117, 522, 1975, 353, 39, 826, 446, 897, 213, 156, 259, 390, 449, 377, 323, 324, 494, 309, 225, 68, 314, 338, 356, 300, 642, 319, 378, 497, 395, 293, 648, 292, 353, 385, 323, 384, 271, 605, 375, 324, 457, 356, 338, 400, 317, 231, 537, 1190, 1159, 534, 1631, 1885, 913, 216, 113, 1120, 736, 36, 63, 1162, 362, 220, 194, 81, 863, 223, 971, 530, 435, 1941, 576, 1511, 393, 397, 646, 72, 82, 555, 477, 1962, 286, 468, 550, 495, 375, 187, 23, 1455, 366, 715, 1426, 62, 369, 57, 336, 24, 77, 139, 104, 225, 23, 141, 140, 138, 224, 59, 198, 46, 296, 106, 33, 650, 184, 139, 355, 109, 60, 147, 224, 256, 130, 53, 331, 15, 277, 181, 125, 149, 26, 871, 600, 210, 1438, 1426, 1425, 1455, 669, 51, 1713, 592, 346, 230, 226, 819, 1521, 367, 728, 218, 430, 121, 229, 222, 536, 1769, 173, 492, 61, 607, 688, 473, 522, 457, 455, 40, 26, 438, 400, 461, 45, 318, 81, 25, 28, 147, 722, 331, 377, 532, 39, 469, 115, 200, 1285, 564, 631, 897, 879, 851, 175, 42, 887, 1277, 732, 1029, 572, 839, 744, 1181, 135, 861, 935, 1082, 1314, 41, 438, 568, 744, 94, 700, 1681, 155, 749, 1406, 592, 95, 69, 734, 152, 723, 164, 164, 743, 1693, 416, 576, 1964, 416, 214, 1930, 262, 578, 471, 395, 1919, 2133, 1936, 420, 690, 1906, 1823, 435, 1966, 690, 430, 368, 141, 344, 462, 1866, 1478, 1984, 953, 380, 281, 1885, 289, 690, 1962, 1940, 377, 230, 592, 409, 138, 512, 819, 794, 290, 428, 280, 42, 182, 316, 647, 24, 83, 198, 153, 129, 702, 285, 34, 289, 41, 381, 439, 224, 84, 82, 84, 540, 418, 430, 37, 137, 449, 92, 602, 194, 119, 302, 449, 190, 724, 37, 194, 88, 331, 267, 91, 50, 364, 502, 327, 435, 352, 440, 320, 192, 79, 691, 347, 570, 456, 634, 44, 315, 492, 500, 221, 127, 250, 105, 1059, 151, 204, 375, 436, 684, 475, 465, 490, 411, 869, 383, 302, 1302, 317, 626, 567, 176, 692, 579, 124, 305, 305, 458, 191, 225, 303, 194, 576, 1302, 174, 91, 305, 53, 510, 1633, 235, 88, 498, 54, 1075, 182, 34, 236, 192, 154, 229, 222, 174, 29, 161, 301, 701, 263, 54, 24, 320, 68, 42, 21, 130, 113, 91, 27, 210, 58, 63, 36, 108, 108, 472, 344, 559, 97, 346, 192, 463, 37, 425, 127, 230, 32, 121, 125, 523, 566, 264, 214, 226, 648, 195, 149, 232, 223, 630, 178, 205, 109, 445, 1638, 679, 256, 517, 325, 328, 155, 573, 283, 428, 176, 577, 193, 59, 237, 67, 116, 146, 220, 424, 120, 177, 60, 222, 186, 168, 184, 53, 25, 577, 187, 62, 29, 45, 511, 60, 186, 153, 57, 50, 323, 532, 215, 661, 358, 40, 215, 203, 344, 328, 111, 360, 468, 50, 280, 469, 53, 765, 39, 196, 56, 203, 335, 205, 205, 213, 210, 188, 37, 192, 173, 623, 806, 211, 166, 330, 321, 242, 186, 529, 57, 368, 319, 126, 203, 912, 369, 205, 187, 897, 83, 187, 290, 608, 270, 348, 67, 348, 230, 188, 509, 201, 370, 371, 374, 724, 494, 267, 361, 163, 236, 51, 532, 124, 62, 48, 192, 363, 703, 211, 352, 280, 742, 83, 369, 269, 139, 442, 352, 648, 1324, 32, 821, 368, 620, 630, 692, 502, 387, 380, 451, 302, 203, 397, 609, 586, 231, 381, 305, 348, 407, 48, 45, 182, 44, 228, 179, 596, 596, 34, 490, 143, 176, 158, 29, 742, 36, 356, 38, 122, 121, 301, 259, 225, 161, 120, 546, 243, 69, 202, 206, 191, 167, 51, 49, 173, 990, 718, 254, 771, 705, 882, 310, 945, 960, 88, 86, 878, 260, 802, 748, 1142, 517, 959, 306, 296, 130, 269, 63, 821, 355, 369, 426, 335, 300, 303, 443, 1346, 432, 1786, 351, 393, 455, 500, 397, 714, 575, 485, 289, 454, 285, 697, 276, 350, 1192, 299, 157, 1167, 362, 274, 96, 1968, 393, 197, 499, 278, 452, 359, 1150, 623, 448, 261, 650, 117, 126, 1658, 233, 177, 412, 505, 536, 206, 472, 398, 524, 237, 278, 1151, 551, 1797, 292, 375, 691, 834, 165, 158, 214, 510, 296, 508, 1467, 826, 676, 101, 412, 381, 475, 70, 15, 402, 92, 141, 379, 135, 163, 813, 442, 269, 210, 442, 400, 179, 456, 1353, 961, 529, 497, 146, 325, 248, 801, 93, 78, 157, 79, 513, 306, 646, 281, 753, 497, 1031, 401, 734, 945, 78, 307, 1048, 59, 485, 96, 504, 641, 142, 839, 559, 296, 926, 1016, 280, 351, 438, 2436, 59, 840, 70, 371, 273, 225, 500, 530, 555, 1569, 624, 578, 1363, 624, 359, 564, 362, 1005, 503, 569, 1118, 349, 374, 383, 554, 522, 332, 236, 22, 328, 52, 54, 369, 175, 645, 1415, 426, 163, 280, 458, 53, 171, 338, 22, 279, 480, 313, 345, 274, 1465, 311, 547, 333, 76, 411, 84, 59, 461, 287, 674, 249, 92, 423, 242, 323, 146, 37, 389, 421, 730, 181, 121, 324, 1674, 270, 553, 660, 553, 519, 522, 625, 118, 659, 315, 159, 606, 1681, 654, 319, 592, 130, 236, 445, 513, 280, 217, 181, 183, 653, 320, 240, 229, 278, 227, 518, 528, 84, 438, 442, 1174, 259, 467, 645, 535, 511, 249, 95, 115, 839, 279, 424, 494, 275, 94, 1207, 957, 91, 427, 843, 243, 374, 1426, 219, 137, 27, 136, 33, 149, 287, 1216, 141, 157, 54, 769, 157, 157, 136, 320, 136, 491, 491, 656, 266, 101, 484, 87, 215, 938, 220, 433, 499, 331, 545, 112, 246, 222, 2075, 195, 430, 59, 343, 530, 249, 524, 274, 563, 173, 849, 165, 269, 166, 282, 380, 54, 100, 293, 278, 270, 191, 464, 225, 339, 475, 631, 630, 282, 288, 60, 323, 382, 475, 305, 631, 1139, 2082, 455, 29, 316, 289, 1017, 472, 88, 1821, 210, 272, 341, 497, 275, 303, 50, 169, 322, 296, 34, 169, 129, 458, 474, 646, 691, 445, 207, 436, 117, 272, 827, 557, 2085, 741, 1840, 730, 200, 24, 39, 501, 105, 518, 233, 24, 693, 255, 146, 364, 286, 53, 146, 127, 18, 209, 148, 163, 356, 91, 162, 318, 378, 81, 189, 113, 298, 357, 151, 372, 241, 269, 24, 486, 313, 126, 180, 447, 60, 163, 379, 49, 441, 1014, 275, 198, 32, 57, 453, 1541, 57, 250, 360, 291, 569, 417, 1084, 481, 653, 313, 126, 287, 326, 243, 355, 230, 478, 331, 410, 454, 365, 1251, 325, 70, 400, 496, 432, 438, 659, 152, 542, 219, 248, 420, 355, 671, 413, 510, 678, 315, 330, 178, 1961, 311, 321, 430, 294, 551, 238, 119, 478, 455, 117, 401, 432, 1004, 469, 134, 668, 461, 339, 70, 441, 551, 458, 378, 457, 518, 471, 37, 353, 53, 213, 361, 356, 693, 455, 177, 752, 196, 549, 356, 67, 356, 85, 505, 345, 299, 324, 355, 450, 369, 505, 450, 46, 359, 381, 83, 358, 313, 144, 550, 551, 43, 382, 549, 550, 364, 194, 314, 707, 804, 1072, 200, 309, 454, 897, 571, 448, 242, 196, 178, 120, 1026, 344, 1405, 147, 1179, 1120, 482, 245, 534, 336, 395, 922, 506, 960, 278, 907, 458, 548, 444, 303, 860, 475, 366, 1104, 266, 423, 489, 96, 306, 372, 908, 458, 506, 92, 83, 464, 343, 322, 235, 191, 251, 281, 353, 186, 134, 168, 355, 278, 358, 303, 377, 170, 801, 173, 197, 169, 226, 210, 131, 195, 38, 193, 348, 229, 291, 190, 173, 473, 376, 181, 190, 195, 472, 166, 49, 93, 95, 17, 52, 283, 689, 114, 23, 115, 135, 53, 146, 179, 16, 310, 20, 175, 118, 43, 23, 292, 377, 151, 26, 143, 26, 239, 115, 193, 215, 129, 275, 1051, 241, 241, 398, 312, 101, 630, 99, 170, 254, 532, 691, 338, 620, 165, 523, 98, 127, 500, 466, 63, 245, 386, 644, 189, 536, 272, 635, 374, 1954, 26, 73, 134, 253, 27, 285, 26, 496, 193, 201, 314, 38, 104, 95, 90, 450, 203, 354, 360, 756, 445, 228, 38, 66, 403, 89, 221, 360, 302, 73, 201, 1011, 450, 342, 114, 139, 148, 396, 150, 612, 552, 368, 587, 243, 422, 55, 900, 49, 194, 240, 568, 559, 567, 36, 612, 978, 622, 1236, 751, 298, 1127, 270, 387, 57, 479, 488, 316, 102, 176, 687, 29, 183, 177, 214, 76, 76, 289, 26, 28, 34, 53, 27, 69, 26, 26, 32, 118, 210, 72, 60, 215, 203, 227, 168, 155, 511, 786, 216, 745, 186, 257, 1454, 302, 60, 415, 42, 416, 256, 154, 481, 37, 332, 41, 436, 1071, 424, 153, 26, 26, 1454, 286, 333, 268, 456, 27, 417, 438, 29, 268, 60, 61, 341, 312, 28, 1473, 606, 372, 1127, 33, 391, 514, 260, 333, 1111, 332, 768, 209, 203, 223, 937, 207, 274, 361, 500, 667, 787, 798, 554, 258, 247, 763, 310, 322, 259, 276, 709, 2096, 582, 888, 764, 324, 1221, 217, 675, 700, 1030, 51, 282, 461, 39, 536, 596, 690, 518, 256, 256, 690, 536, 184, 136, 184, 137, 127, 456, 505, 56, 247, 584, 265, 51, 527, 225, 147, 740, 1095, 409, 517, 1272, 436, 218, 295, 229, 32, 453, 235, 351, 525, 52, 317, 245, 522, 593, 476, 58, 1535, 156, 1686, 392, 39, 692, 535, 475, 572, 822, 55, 482, 655, 659, 52, 600, 330, 1343, 285, 278, 625, 430, 1163, 234, 278, 334, 913, 73, 177, 916, 1457, 594, 286, 152, 292, 120, 184, 579, 1738, 1077, 370, 400, 370, 584, 249, 1393, 1107, 1095, 71, 620, 986, 873, 1135, 233, 1669, 292, 1098, 964, 353, 524, 174, 83, 527, 263, 726, 62, 747, 984, 279, 161, 186, 168, 84, 1041, 793, 675, 217, 1416, 62, 37, 738, 1416, 269, 422, 435, 434, 1673, 303, 1480, 182, 447, 243, 856, 856, 45, 239, 239, 165, 659, 16, 1890, 328, 288, 352, 244, 660, 420, 525, 562, 106, 378, 215, 130, 379, 276, 592, 788, 476, 1550, 749, 128, 562, 364, 168, 346, 157, 261, 354, 419, 442, 155, 122, 130, 55, 442, 88, 543, 213, 374, 719, 141, 395, 50, 47, 63, 108, 383, 294, 1081, 111, 187, 345, 528, 139, 812, 147, 336, 1025, 807, 148, 221, 87, 462, 1366, 551, 283, 692, 559, 211, 224, 245, 736, 107, 1760, 708, 251, 63, 451, 533, 171, 990, 727, 373, 313, 1740, 76, 64, 990, 218, 743, 262, 1354, 392, 736, 1762, 63, 1745, 503, 126, 1117, 535, 1733, 688, 729, 290, 188, 730, 1266, 37, 672, 230, 329, 655, 1360, 464, 492, 671, 272, 97, 385, 377, 262, 416, 374, 49, 495, 35, 37, 93, 377, 376, 76, 98, 370, 266, 268, 29, 25, 41, 206, 329, 331, 216, 182, 516, 259, 324, 478, 357, 366, 348, 46, 176, 578, 678, 498, 457, 166, 375, 363, 120, 264, 177, 324, 611, 135, 185, 177, 466, 60, 278, 187, 192, 385, 334, 18, 176, 849, 94, 1815, 329, 234, 318, 185, 337, 322, 257, 202, 320, 465, 139, 342, 149, 1005, 380, 424, 321, 176, 463, 271, 284, 530, 275, 175, 289, 970, 244, 131, 113, 402, 538, 256, 828, 304, 344, 367, 1077, 481, 609, 489, 55, 793, 625, 609, 465, 527, 1943, 325, 613, 403, 291, 1298, 594, 332, 353, 858, 712, 326, 85, 831, 453, 704, 69, 102, 718, 380, 606, 477, 61, 713, 51, 404, 513, 931, 172, 433, 757, 45, 384, 259, 570, 159, 586, 712, 738, 249, 633, 651, 191, 343, 669, 699, 458, 103, 356, 798, 254, 593, 198, 541, 371, 494, 379, 476, 201, 1014, 184, 810, 260, 736, 720, 475, 52, 620, 771, 34, 833, 370, 1834, 321, 44, 839, 675, 684, 53, 209, 691, 476, 190, 52, 577, 89, 97, 121, 304, 304, 462, 1963, 715, 355, 501, 187, 378, 360, 193, 104, 160, 369, 321, 404, 558, 234, 349, 893, 531, 541, 246, 99, 585, 115, 76, 42, 633, 282, 287, 209, 114, 333, 246, 328, 45, 34, 82, 79, 657, 75, 321, 276, 76, 299, 275, 32, 1120, 39, 299, 402, 34, 29, 92, 262, 720, 323, 205, 432, 173, 302, 95, 315, 94, 504, 1387, 93, 369, 32, 39, 360, 191, 196, 437, 282, 463, 196, 58, 603, 244, 74, 230, 89, 377, 28, 299, 215, 260, 1946, 364, 43, 637, 240, 205, 53, 263, 613, 438, 215, 220, 240, 211, 365, 318, 189, 594, 456, 241, 49, 98, 34, 165, 192, 1731, 62, 144, 463, 287, 174, 33, 243, 67, 255, 449, 258, 41, 551, 93, 87, 63, 312, 232, 172, 118, 474, 126, 174, 176, 164, 340, 193, 182, 36, 44, 429, 551, 438, 339, 33, 162, 541, 176, 186, 59, 341, 1093, 57, 293, 349, 257, 320, 1747, 675, 97, 127, 922, 1557, 571, 1790, 804, 262, 2235, 396, 500, 381, 65, 1874, 31, 507, 326, 836, 42, 974, 30, 867, 463, 1557, 459, 1023, 394, 54, 1384, 814, 434, 947, 1430, 352, 1276, 271, 91, 40, 473, 270, 248, 363, 344, 294, 291, 277, 259, 39, 254, 385, 331, 204, 321, 280, 227, 227, 45, 301, 288, 122, 364, 227, 423, 399, 194, 214, 272, 72, 150, 340, 153, 143, 144, 468, 257, 561, 215, 264, 383, 105, 267, 266, 222, 244, 742, 405, 221, 572, 278, 238, 258, 46, 467, 177, 240, 377, 466, 268, 367, 1273, 558, 162, 472, 504, 565, 285, 405, 130, 196, 184, 38, 206, 1292, 93, 290, 798, 312, 380, 321, 940, 360, 315, 425, 545, 350, 216, 563, 303, 174, 298, 253, 713, 463, 1105, 202, 387, 177, 48, 96, 512, 205, 314, 253, 131, 792, 132, 508, 218, 296, 327, 464, 55, 126, 269, 96, 194, 123, 69, 131, 280, 687, 456, 290, 487, 300, 324, 709, 61, 1103, 684, 360, 104, 202, 1111, 350, 1021, 412, 436, 164, 1053, 1065, 143, 251, 408, 47, 481, 757, 509, 438, 325, 637, 273, 664, 371, 247, 338, 357, 435, 338, 59, 348, 161, 480, 337, 232, 129, 375, 97, 625, 497, 440, 539, 398, 208, 259, 650, 130, 512, 373, 55, 429, 147, 681, 293, 161, 260, 625, 407, 435, 633, 304, 311, 25, 183, 159, 25, 552, 130, 156, 361, 23, 474, 339, 386, 362, 283, 106, 296, 362, 143, 156, 161, 197, 999, 159, 36, 279, 155, 30, 134, 356, 210, 380, 324, 694, 289, 269, 35, 1473, 1782, 290, 469, 272, 300, 279, 319, 848, 1158, 352, 295, 44, 613, 91, 323, 193, 318, 356, 43, 299, 146, 405, 349, 404, 424, 172, 1728, 297, 54, 690, 410, 1223, 57, 274, 1002, 133, 370, 1887, 1009, 1495, 556, 63, 205, 627, 249, 268, 598, 96, 1055, 138, 1891, 1598, 74, 466, 119, 58, 164, 217, 191, 365, 207, 1718, 153, 214, 68, 997, 58, 47, 287, 259, 898, 182, 1235, 664, 733, 608, 972, 892, 335, 189, 644, 54, 1244, 1196, 222, 1895, 258, 33, 349, 342, 1235, 160, 208, 131, 305, 1232, 1717, 1914, 1823, 44, 1556, 627, 1919, 349, 1241, 323, 55, 287, 865, 967, 122, 895, 614, 448, 251, 1124, 294, 204, 1910, 37, 737, 324, 200, 69, 358, 332, 204, 544, 604, 478, 224, 85, 1211, 613, 273, 29, 431, 369, 547, 28, 59, 59, 343, 361, 299, 447, 569, 420, 351, 492, 42, 134, 620, 655, 624, 594, 1102, 256, 258, 354, 747, 1531, 154, 136, 377, 354, 149, 58, 633, 341, 138, 251, 61, 360, 1472, 1004, 58, 53, 623, 238, 559, 124, 724, 987, 574, 213, 1014, 310, 1637, 617, 78, 173, 1304, 204, 721, 513, 548, 460, 445, 808, 1040, 1067, 143, 56, 913, 1059, 723, 73, 1024, 104, 1016, 399, 677, 136, 306, 1040, 980, 415, 1036, 223, 1037, 1728, 923, 215, 197, 692, 422, 911, 122, 316, 42, 338, 322, 260, 318, 34, 484, 421, 296, 63, 250, 391, 309, 169, 48, 265, 262, 519, 267, 305, 353, 157, 51, 182, 27, 298, 251, 289, 202, 90, 156, 124, 470, 343, 230, 381, 43, 52, 60, 1018, 306, 62, 39, 38, 49, 432, 409, 419, 261, 296, 385, 497, 89, 20, 397, 184, 63, 70, 412, 391, 811, 377, 406, 310, 170, 302, 47, 361, 554, 299, 425, 245, 219, 303, 365, 253, 137, 162, 66, 82, 43, 1033, 90, 568, 1027, 189, 55, 121, 39, 33, 439, 284, 289, 388, 358, 985, 237, 367, 53, 52, 604, 377, 231, 221, 51, 384, 354, 1167, 1004, 353, 138, 193, 218, 167, 222, 246, 45, 325, 103, 964, 337, 578, 1267, 194, 533, 245, 232, 188, 92, 98, 228, 98, 217, 97, 208, 307, 141, 100, 927, 372, 1250, 209, 251, 533, 17, 343, 240, 910, 242, 99, 24, 315, 439, 40, 296, 345, 43, 48, 1486, 282, 223, 1026, 195, 748, 974, 395, 253, 234, 246, 1646, 251, 399, 60, 327, 343, 36, 286, 454, 246, 38, 948, 482, 331, 311, 523, 1208, 81, 246, 65, 299, 288, 350, 290, 279, 1098, 1107, 328, 326, 727, 1093, 1724, 1235, 1135, 639, 876, 865, 1863, 42, 803, 231, 112, 425, 119, 181, 218, 100, 189, 804, 161, 53, 136, 25, 142, 374, 63, 66, 146, 104, 199, 489, 191, 700, 38, 291, 251, 322, 264, 48, 369, 686, 1649, 195, 201, 268, 81, 432, 95, 38, 445, 336, 24, 263, 408, 254, 180, 458, 145, 314, 1021, 86, 65, 254, 252, 150, 310, 168, 327, 252, 204, 445, 236, 121, 277, 79, 307, 276, 190, 1216, 93, 261, 357, 210, 240, 238, 699, 197, 241, 272, 259, 539, 80, 358, 256, 270, 265, 55, 252, 285, 347, 498, 984, 304, 235, 86, 85, 228, 541, 734, 366, 253, 897, 546, 549, 394, 266, 355, 147, 481, 258, 163, 360, 203, 269, 194, 158, 206, 512, 110, 222, 198, 148, 57, 348, 367, 188, 154, 320, 148, 152, 149, 174, 401, 144, 597, 396, 576, 256, 566, 273, 574, 505, 426, 994, 306, 154, 138, 241, 1134, 322, 493, 570, 51, 193, 605, 258, 327, 384, 422, 285, 140, 595, 278, 397, 232, 244, 231, 243, 102, 483, 576, 547, 502, 70, 896, 119, 882, 226, 474, 854, 587, 450, 423, 383, 588, 180, 165, 78, 911, 581, 461, 1013, 369, 48, 158, 370, 440, 192, 958, 567, 590, 757, 366, 232, 211, 242, 823, 37, 60, 179, 81, 219, 570, 631, 145, 447, 749, 82, 395, 77, 168, 362, 98, 52, 477, 331, 598, 916, 443, 965, 330, 464, 522, 710, 86, 939, 508, 1058, 447, 356, 409, 370, 312, 152, 752, 440, 1460, 511, 367, 729, 450, 704, 474, 83, 364, 89, 420, 414, 1448, 437, 1435, 950, 685, 646, 503, 525, 505, 1443, 105, 116, 1530, 63, 496, 311, 210, 270, 289, 277, 51, 281, 419, 384, 202, 200, 321, 314, 293, 311, 332, 257, 104, 427, 451, 328, 250, 216, 85, 415, 627, 243, 252, 188, 254, 84, 242, 221, 90, 264, 156, 269, 212, 259, 569, 256, 85, 550, 285, 253, 245, 278, 279, 216, 81, 554, 92, 82, 293, 1109, 122, 377, 65, 296, 32, 103, 467, 445, 487, 329, 72, 704, 38, 353, 214, 721, 1054, 563, 267, 516, 124, 47, 66, 1078, 104, 1079, 578, 512, 342, 110, 335, 232, 297, 504, 123, 437, 466, 1134, 58, 424, 414, 1057, 653, 84, 723, 78, 59, 248, 134, 42, 66, 42, 1282, 168, 521, 84, 297, 312, 1028, 206, 134, 83, 80, 71, 189, 392, 58, 144, 284, 478, 284, 42, 414, 201, 243, 229, 90, 294, 287, 539, 1214, 53, 47, 278, 237, 49, 640, 243, 519, 522, 1966, 504, 102, 519, 520, 125, 543, 499, 486, 519, 520, 1827, 496, 909, 286, 354, 522, 523, 81, 82, 523, 543, 544, 488, 454, 314, 514, 514, 131, 93, 447, 218, 195, 840, 246, 137, 1050, 693, 507, 257, 639, 634, 1299, 500, 628, 466, 335, 354, 675, 300, 514, 256, 94, 158, 769, 788, 746, 229, 1108, 817, 116, 439, 809, 166, 830, 321, 391, 1837, 219, 158, 339, 699, 149, 324, 524, 221, 539, 505, 447, 180, 183, 144, 690, 265, 574, 823, 616, 1528, 541, 515, 520, 484, 418, 324, 375, 123, 285, 766, 311, 397, 535, 698, 299, 419, 523, 450, 243, 771, 105, 1341, 261, 427, 549, 502, 1574, 346, 396, 1219, 1058, 414, 287, 564, 389, 364, 392, 160, 367, 364, 769, 493, 508, 748, 918, 666, 572, 766, 1602, 1571, 184, 956, 393, 1534, 745, 951, 311, 1162, 1333, 1024, 1488, 804, 383, 835, 419, 84, 967, 1624, 81, 1318, 313, 1513, 1602, 610, 199, 1627, 1523, 960, 809, 1188, 112, 1198, 1437, 417, 914, 331, 223, 215, 490, 414, 439, 225, 217, 479, 347, 1105, 252, 371, 148, 250, 492, 403, 360, 221, 441, 236, 537, 570, 1652, 301, 1737, 45, 128, 1758, 1658, 23, 364, 434, 383, 1657, 628, 335, 1695, 450, 975, 440, 301, 522, 777, 279, 89, 405, 1044, 303, 42, 212, 47, 96, 379, 986, 1071, 502, 539, 537, 181, 174, 212, 672, 554, 52, 209, 309, 640, 511, 563, 204, 1366, 376, 613, 481, 189, 391, 540, 519, 542, 418, 993, 303, 1044, 264, 365, 367, 416, 395, 907, 481, 423, 202, 32, 59, 1019, 279, 598, 687, 304, 426, 41, 200, 404, 18, 1172, 152, 267, 413, 888, 2169, 781, 432, 22, 377, 91, 267, 764, 749, 237, 376, 270, 366, 342, 125, 217, 1461, 312, 797, 547, 32, 776, 367, 820, 643, 235, 364, 381, 253, 560, 160, 770, 290, 327, 555, 358, 617, 420, 127, 317, 187, 392, 918, 781, 738, 252, 257, 70, 394, 227, 938, 307, 281, 392, 205, 470, 59, 491, 444, 421, 781, 626, 794, 40, 338, 634, 161, 230, 1454, 773, 87, 526, 283, 123, 49, 380, 373, 1010, 497, 859, 239, 370, 531, 406, 476, 381, 2032, 532, 348, 466, 387, 860, 477, 403, 167, 335, 1052, 211, 280, 373, 552, 266, 716, 284, 936, 381, 274, 179, 257, 404, 952, 381, 331, 579, 1452, 382, 348, 241, 41, 333, 340, 340, 1106, 236, 317, 283, 274, 1234, 233, 475, 275, 298, 139, 309, 811, 274, 405, 160, 113, 125, 707, 518, 1378, 819, 241, 265, 83, 372, 141, 481, 368, 121, 1458, 394, 816, 517, 186, 73, 226, 591, 887, 1011, 639, 489, 318, 1194, 491, 86, 476, 606, 369, 681, 389, 681, 452, 39, 611, 1256, 158, 561, 416, 554, 472, 1291, 131, 733, 83, 353, 1131, 435, 513, 692, 419, 1157, 763, 710, 430, 734, 1277, 1246, 529, 372, 168, 496, 71, 469, 363, 25, 397, 1226, 307, 309, 140, 222, 199, 267, 971, 216, 173, 877, 218, 211, 160, 251, 239, 211, 532, 218, 244, 534, 391, 375, 98, 351, 986, 486, 2010, 1768, 397, 1042, 648, 455, 603, 37, 611, 653, 585, 386, 515, 372, 563, 1592, 1543, 1823, 412, 502, 1836, 1492, 398, 1157, 766, 1620, 734, 1336, 473, 205, 805, 436, 234, 514, 167, 48, 281, 989, 333, 673, 386, 556, 408, 608, 156, 46, 580, 36, 400, 1942, 222, 556, 714, 457, 169, 740, 1838, 556, 319, 447, 345, 344, 610, 640, 1287, 1752, 247, 315, 267, 350, 499, 284, 1186, 145, 1772, 361, 443, 59, 41, 356, 823, 35, 479, 448, 105, 191, 361, 187, 440, 272, 56, 279, 394, 203, 106, 132, 160, 459, 445, 354, 440, 389, 138, 400, 884, 452, 453, 38, 56, 791, 445, 422, 100, 37, 274, 177, 635, 683, 1500, 241, 362, 97, 101, 25, 20, 193, 368, 620, 538, 226, 598, 203, 95, 459, 327, 963, 49, 1180, 322, 318, 291, 93, 131, 1318, 34, 32, 309, 374, 56, 290, 305, 47, 43, 573, 52, 1315, 88, 344, 385, 30, 180, 391, 42, 93, 363, 1060, 692, 488, 317, 63, 372, 445, 147, 94, 549, 30, 1220, 333, 91, 309, 501, 306, 457, 251, 494, 802, 206, 1279, 290, 218, 393, 350, 62, 273, 463, 418, 333, 382, 292, 98, 342, 206, 209, 896, 1624, 157, 669, 145, 375, 387, 1216, 328, 41, 427, 83, 1283, 639, 1405, 681, 315, 313, 474, 521, 764, 488, 462, 287, 52, 252, 311, 858, 792, 1379, 78, 247, 375, 329, 88, 495, 755, 1017, 459, 575, 699, 559, 73, 711, 215, 1229, 756, 261, 877, 705, 516, 887, 218, 690, 941, 1264, 517, 639, 393, 1000, 704, 248, 940, 698, 178, 464, 296, 859, 937, 759, 938, 1262, 762, 1196, 868, 179, 483, 1150, 429, 690, 615, 685, 124, 855, 872, 425, 211, 327, 172, 255, 232, 385, 713, 293, 253, 257, 176, 341, 77, 396, 965, 576, 703, 171, 980, 718, 885, 329, 871, 253, 1010, 882, 584, 852, 784, 633, 887, 1011, 760, 1033, 1020, 581, 782, 832, 1024, 964, 341, 263, 1258, 216, 243, 573, 491, 247, 759, 494, 234, 86, 1272, 1020, 239, 606, 677, 339, 751, 137, 1884, 429, 238, 1097, 1361, 379, 416, 71, 555, 1135, 1669, 962, 1990, 333, 76, 1657, 1548, 125, 342, 1811, 148, 301, 690, 1868, 894, 165, 284, 1167, 526, 911, 584, 663, 433, 911, 1194, 395, 325, 379, 135, 391, 609, 394, 1242, 609, 440, 1211, 158, 608, 485, 352, 1889, 263, 592, 361, 210, 247, 408, 411, 767, 377, 422, 311, 856, 441, 458, 426, 877, 572, 352, 873, 28, 515, 359, 851, 519, 70, 545, 465, 1762, 885, 1767, 895, 407, 518, 1922, 1598, 324, 59, 534, 65, 311, 461, 535, 351, 272, 435, 954, 1052, 1722, 339, 110, 1732, 430, 96, 602, 1768, 1745, 365, 1742, 311, 140, 412, 1753, 419, 611, 583, 426, 589, 620, 425, 134, 422, 105, 424, 400, 125, 1668, 418, 191, 331, 706, 724, 707, 331, 786, 168, 191, 118, 167, 77, 299, 1749, 190, 1669, 699, 971, 1694, 805, 980, 284, 410, 540, 725, 653, 63, 45, 67, 181, 354, 515, 555, 1527, 683, 436, 364, 410, 500, 644, 191, 327, 357, 519, 415, 526, 403, 423, 378, 447, 702, 1384, 176, 94, 442, 480, 335, 184, 1772, 341, 262, 346, 214, 1753, 491, 206, 222, 410, 287, 72, 313, 562, 505, 1088, 364, 212, 167, 492, 233, 49, 39, 919, 247, 310, 757, 223, 768, 306, 776, 294, 451, 277, 605, 1089, 507, 1061, 1469, 1061, 1739, 684, 976, 1502, 219, 1528, 203, 1050, 1207, 541, 74, 244, 416, 148, 70, 501, 364, 504, 332, 480, 412, 856, 1881, 247, 292, 908, 917, 480, 919, 547, 1882, 232, 657, 298, 107, 210, 618, 387, 86, 900, 387, 445, 1279, 1110, 81, 1004, 1051, 294, 269, 398, 842, 229, 213, 393, 325, 326, 1294, 560, 748, 169, 262, 440, 1350, 166, 938, 543, 1348, 323, 388, 83, 408, 26, 340, 377, 775, 1052, 249, 215, 84, 88, 288, 131, 436, 460, 388, 782, 390, 447, 35, 434, 61, 391, 790, 263, 398, 69, 51, 377, 63, 387, 936, 393, 91, 401, 654, 81, 38, 1004, 73, 879, 46, 776, 64, 85, 558, 509, 411, 287, 484, 40, 640, 734, 127, 385, 354, 287, 424, 81, 160, 70, 571, 184, 102, 159, 316, 389, 70, 709, 309, 437, 421, 194, 443, 278, 66, 399, 391, 45, 382, 490, 160, 423, 386, 408, 14, 433, 267, 385, 511, 616, 484, 184, 464, 562, 168, 679, 178, 118, 955, 482, 209, 168, 608, 259, 36, 982, 846, 90, 242, 90, 297, 85, 298, 546, 985, 259, 280, 47, 276, 260, 33, 87, 827, 52, 726, 726, 726, 726, 280, 287, 517, 1653, 981, 1449, 1654, 374, 1865, 56, 3474, 1829, 536, 558, 640, 1701, 248, 488, 650, 499, 405, 683, 915, 620, 84, 276, 269, 867, 259, 1908, 520, 2000, 555, 470, 426, 485, 712, 694, 533, 972, 35, 469, 484, 470, 539, 1475, 502, 509, 1999, 494, 574, 437, 482, 890, 446, 760, 627, 129, 121, 409, 129, 465, 245, 115, 1097, 130, 1100, 260, 1096, 690, 107, 1689, 232, 970, 726, 988, 1039, 1039, 194, 475, 1309, 138, 1794, 442, 1444, 222, 673, 268, 228, 1073, 696, 212, 806, 681, 889, 442, 367, 58, 549, 535, 1613, 1023, 231, 897, 80, 659, 196, 752, 480, 405, 1557, 673, 330, 822, 661, 1584, 1533, 118, 440, 251, 290, 568, 506, 512, 253, 713, 408, 246, 1702, 1077, 139, 1129, 1329, 1208, 1359, 847, 1315, 84, 1058, 1606, 1174, 1045, 972, 1627, 1751, 420, 1126, 183, 1202, 1295, 1302, 126, 623, 1055, 696, 1327, 700, 1523, 636, 965, 962, 977, 1180, 1079, 387, 49, 298, 103, 43, 43, 479, 215, 260, 35, 338, 36, 470, 352, 496, 545, 548, 496, 386, 493, 410, 368, 419, 743, 516, 449, 401, 476, 2054, 644, 326, 429, 282, 1467, 523, 290, 1168, 572, 596, 132, 368, 311, 286, 112, 419, 517, 332, 235, 408, 1678, 359, 691, 281, 334, 685, 342, 319, 104, 240, 321, 428, 206, 343, 163, 327, 461, 202, 871, 290, 524, 909, 295, 1651, 235, 125, 1138, 233, 239, 144, 378, 852, 144, 145, 253, 1040, 238, 431, 796, 117, 1052, 287, 190, 259, 754, 184, 618, 261, 300, 1234, 206, 357, 289, 1150, 443, 251, 393, 693, 95, 194, 200, 685, 40, 1158, 324, 847, 324, 209, 413, 58, 298, 73, 56, 69, 427, 75, 100, 749, 435, 753, 334, 373, 581, 341, 471, 797, 351, 616, 613, 239, 933, 1723, 993, 62, 85, 149, 79, 266, 475, 653, 516, 669, 573, 426, 589, 819, 315, 1006, 1282, 1730, 507, 117, 918, 184, 212, 537, 610, 592, 281, 188, 813, 578, 383, 263, 458, 486, 498, 270, 285, 271, 372, 452, 431, 359, 70, 490, 278, 278, 259, 370, 514, 79, 156, 229, 139, 488, 321, 62, 486, 483, 1151, 362, 289, 493, 490, 640, 266, 343, 471, 448, 503, 766, 368, 17, 40, 215, 485, 30, 362, 36, 352, 427, 42, 515, 304, 137, 299, 364, 418, 298, 153, 448, 49, 321, 161, 327, 148, 158, 295, 55, 136, 733, 40, 326, 217, 216, 172, 1143, 290, 434, 203, 878, 98, 1201, 149, 170, 250, 318, 224, 342, 302, 111, 294, 356, 149, 204, 249, 188, 300, 50, 290, 240, 292, 293, 200, 171, 319, 297, 401, 60, 378, 1678, 250, 342, 389, 347, 334, 336, 734, 509, 372, 356, 875, 90, 57, 414, 460, 360, 336, 339, 178, 462, 425, 337, 200, 193, 200, 50, 735, 892, 362, 334, 308, 432, 372, 368, 666, 201, 263, 384, 268, 547, 417, 105, 1079, 460, 282, 358, 238, 486, 846, 457, 327, 370, 85, 444, 214, 980, 306, 102, 265, 101, 324, 124, 993, 466, 256, 328, 521, 312, 1096, 224, 333, 332, 193, 102, 184, 318, 269, 346, 462, 100, 480, 338, 90, 146, 287, 487, 297, 708, 328, 1044, 214, 594, 553, 143, 332, 587, 587, 106, 708, 1034, 336, 1079, 567, 626, 525, 597, 94, 808, 1770, 155, 256, 404, 209, 275, 485, 335, 674, 551, 1192, 96, 466, 847, 1089, 114, 250, 297, 29, 194, 108, 246, 460, 268, 976, 554, 409, 315, 655, 322, 561, 578, 111, 617, 234, 375, 69, 77, 103, 383, 359, 941, 600, 624, 383, 569, 553, 314, 383, 230, 640, 383, 569, 139, 411, 847, 579, 566, 565, 1269, 507, 383, 44, 566, 592, 301, 184, 183, 308, 104, 391, 350, 583, 592, 493, 179, 230, 402, 187, 296, 270, 37, 308, 217, 119, 443, 141, 116, 405, 290, 108, 145, 368, 143, 296, 412, 305, 363, 298, 440, 70, 124, 476, 838, 367, 171, 477, 80, 265, 118, 29, 411, 311, 73, 302, 159, 194, 823, 83, 986, 42, 318, 823, 93, 816, 262, 431, 151, 45, 416, 303, 320, 36, 287, 364, 384, 309, 401, 311, 300, 513, 420, 254, 821, 259, 260, 1454, 293, 311, 111, 312, 521, 272, 409, 129, 422, 109, 333, 307, 601, 377, 122, 200, 46, 231, 257, 439, 1123, 302, 193, 19, 308, 292, 252, 17, 385, 38, 382, 58, 384, 189, 196, 58, 1503, 64, 376, 106, 294, 238, 49, 504, 410, 188, 84, 1282, 308, 84, 23, 156, 304, 655, 193, 57, 249, 168, 194, 287, 1209, 86, 129, 70, 272, 246, 247, 80, 186, 1617, 162, 136, 243, 33, 602, 131, 704 ], "xaxis": "x2", "yaxis": "y2" }, { "alignmentgroup": "True", "bingroup": "x", "histnorm": "density", "hovertemplate": "category=Electronics
description_length=%{x}
density=%{y}", "legendgroup": "Electronics", "marker": { "color": "#ab63fa", "opacity": 1, "pattern": { "shape": "" } }, "name": "Electronics", "offsetgroup": "Electronics", "orientation": "v", "showlegend": true, "type": "histogram", "x": [ 541, 150, 1073, 706, 842, 2216, 315, 192, 91, 637, 109, 558, 108, 110, 1136, 198, 1528, 1525, 419, 619, 1303, 1619, 868, 371, 1552, 4335, 152, 2032, 337, 494, 138, 1886, 860, 2495, 1591, 893, 1256, 511, 564, 104, 95, 713, 863, 1900, 961, 551, 902, 677, 1551, 1074, 922, 3231, 2655, 251, 3550, 163, 3509, 248, 287, 626, 3971, 450, 1474, 175, 1214, 209, 57, 1109, 1892, 2177, 293, 1206, 1502, 1455, 1966, 840, 508, 1583, 644, 677, 120, 751, 658, 268, 1939, 141, 255, 171, 1313, 492, 492, 134, 577, 155, 70, 87, 249, 84, 149, 92, 190, 177, 435, 164, 2583, 690, 231, 2608, 1190, 418, 266, 1447, 1018, 71, 326, 271, 49, 325, 364, 265, 41, 115, 105, 103, 74, 354, 325, 127, 253, 1567, 128, 129, 255, 1608, 1555, 611, 1501, 3735, 1354, 954, 1739, 87, 290, 310, 335, 913, 73, 71, 71, 562, 875, 1626, 495, 67, 418, 535, 63, 1439, 1834, 828, 488, 816, 1497, 1135, 57, 1454, 619, 219, 616, 1324, 155, 92, 1038, 1436, 1306, 237, 113, 172, 167, 261, 510, 137, 1152, 183, 104, 1238, 96, 172, 344, 79, 1143, 1643, 149, 218, 123, 627, 294, 294, 312, 635, 635, 53, 558, 1443, 54, 772, 75, 498, 376, 1556, 1918, 422, 729, 702, 2591, 600, 1714, 623, 94, 430, 1647, 1247, 1566, 669, 1977, 1947, 1798, 1201, 558, 3547, 1073, 1714, 1915, 114, 1950, 1460, 1830, 1660, 1456, 1077, 141, 196, 382, 99, 1985, 1997, 244, 146, 1736, 1543, 125, 1643, 49, 386, 543, 196, 415, 133, 413, 1228, 346, 74, 470, 72, 601, 372, 1482, 877, 281, 319, 1407, 1352, 1601, 82, 586, 266, 3409, 411, 340, 2046, 712, 235, 1954, 878, 474, 2819, 977, 436, 372, 198, 2060, 499, 1045, 495, 1586, 337, 669, 254, 748, 119, 1528, 497, 404, 932, 741, 1087, 975, 848, 615, 357, 219, 1278, 162, 149, 590, 351, 129, 1225, 159, 1133, 410, 485, 752, 1652, 522, 3267, 323, 89, 202, 131, 66, 347, 1730, 927, 1740, 1406, 844, 1748, 135, 714, 1150, 1141, 430, 519, 416, 1145, 1789, 627, 66, 810, 279, 217, 592, 51, 633, 726, 766, 1664, 450, 129, 259, 2592, 1500, 1426, 1097, 616, 571, 450, 330, 464, 659, 114, 622, 72, 927, 935, 1949, 1346, 468, 373, 971, 1165, 589, 498, 286, 784, 913, 329, 472, 3316, 94, 1390, 343, 1238, 666, 1402, 446, 165, 191, 267, 229, 535, 169, 306, 168, 817, 181, 129, 1489, 649, 1389, 1902, 1327, 163, 398, 255, 669, 829, 1060, 385, 316, 604, 609, 391, 427, 503, 1599, 382, 1789, 1711, 992, 1025, 319, 1857, 980, 242, 308, 365, 1506, 372, 1493, 476, 1862, 735, 1508, 1822, 1063, 1070, 1397, 186, 1428, 198, 967, 1509, 1374, 271, 1400, 279, 1748, 1235, 1296, 115, 1201, 94, 696, 1379, 286, 426, 918, 131, 770, 628, 261, 1268, 1247, 531, 255, 305, 180, 604, 261, 1261, 577, 521, 549, 296, 159, 1647, 538, 390, 90, 1499, 240, 35, 1100, 1958, 383, 909, 2995, 1516, 537, 364, 202, 1712, 410, 742, 410, 1030, 410, 69, 537, 422, 410, 315, 627, 645, 761, 1315, 176, 198, 1363, 146, 269, 1292, 69, 188, 1431, 288, 522, 3539, 243, 1054, 949, 1025, 82, 844, 281, 142, 908, 236, 92, 856, 424, 1674, 1956, 82, 298, 309, 123, 73, 154, 170, 1542, 93, 739, 220, 837, 270, 183, 221, 461, 863, 704, 2882, 3064, 308, 494, 1266, 739, 554, 1391, 485, 460, 197, 1588, 177, 702, 584, 397, 186, 988, 152, 180, 177, 1270, 587, 151, 772, 105, 1518, 629, 165, 745, 280, 358, 1533, 1530, 620, 116, 1344, 649, 1029, 382, 1257, 205, 244, 319, 944, 105, 624, 974, 196, 714, 96, 98, 182, 1333, 397, 320, 1499, 936, 387, 1381, 79, 80, 256, 101, 182, 1461, 1273, 1703, 460, 1807, 272, 1777, 1670, 1258, 1962, 1528, 1119, 102, 449, 1189, 883, 1276, 126, 361, 421, 417, 307, 1223, 324, 3604, 727, 87, 1068, 1043, 85, 1359, 122, 473, 638, 1518, 967, 119, 476, 916, 1340, 575, 122, 803, 1632, 1351, 162, 1114, 963, 604, 1699, 256, 786, 4426, 1724, 1755, 3750, 92, 1749, 151, 2792, 201, 753, 1319, 1239, 576, 466, 55, 34, 1823, 396, 3862, 461, 144, 292, 54, 1498, 537, 297, 522, 350, 342, 1135, 56, 75, 1074, 228, 199, 2656, 1087, 649, 321, 240, 57, 503, 52, 517, 1414, 371, 424, 432, 1284, 462, 440, 150, 716, 170, 98, 1349, 290, 808, 881, 766, 570, 134, 918, 461, 1627, 748, 593, 253, 180, 301, 297, 763, 651, 227, 2149, 914, 511, 762, 972, 762, 665, 569, 794, 861, 920, 353, 411, 1450, 772, 689, 84, 396, 746, 474, 1889, 397, 149, 297, 1090, 347, 1109, 1951, 137, 476, 165, 607, 784, 511, 477, 678, 168, 867, 405, 1936, 667, 678, 595, 498, 332, 340, 241, 341, 1457, 199, 1677, 1319, 340, 662, 701, 616, 404, 393, 1851, 475, 690, 280, 577, 141, 401, 437, 414, 231, 201, 1216, 410, 391, 895, 116, 957, 1678, 206, 1940, 1657, 1482, 1512, 771, 385, 723, 1037, 135, 1633, 178, 253, 1568, 100, 1541, 990, 181, 659, 305, 1672, 990, 192, 1006, 172, 1634, 1784, 35, 150, 1496, 158, 205, 2018, 243, 187, 101, 1249, 607, 1258, 108, 1546, 100, 1208, 539, 120, 95, 144, 944, 1245, 485, 884, 601, 610, 1047, 741, 605, 574, 330, 456, 931, 1531, 1508, 474, 799, 1983, 1749, 2005, 890, 360, 1134, 1881, 788, 365, 393, 413, 274, 1304, 182, 203, 1454, 708, 86, 1230, 893, 1621, 2731, 595, 275, 1271, 396, 334, 1480, 2011, 2049, 1208, 507, 511, 891, 1043, 784, 29, 1065, 78, 145, 355, 546, 809, 416, 244, 1386, 293, 599, 83, 873, 48, 1469, 953, 798, 951, 838, 1569, 54, 373, 546, 1897, 619, 386, 54, 181, 595, 262, 471, 324, 1256, 206, 687, 633, 177, 591, 1156, 1739, 966, 1637, 896, 1155, 319, 1042, 1098, 1454, 657, 136, 277, 1509, 2320, 99, 442, 575, 993, 1066, 106, 224, 348, 1167, 606, 166, 238, 254, 218, 288, 936, 1649, 991, 875, 1646, 76, 350, 1193, 120, 130, 99, 640, 149, 110, 1302, 1467, 1901, 91, 1771, 1877, 689, 641, 291, 709, 1265, 628, 1743, 1702, 25, 247, 2802, 1380, 1702, 251, 243, 1059, 133, 257, 202, 249, 225, 389, 1175, 432, 248, 1437, 245, 328, 365, 1462, 2867, 183, 427, 477, 438, 822, 1861, 553, 1250, 1145, 252, 581, 452, 733, 1180, 162, 251, 110, 159, 556, 353, 596, 159, 1212, 181, 1358, 390, 896, 303, 464, 617, 1221, 580, 556, 204, 299, 134, 129, 1723, 291, 42, 620, 334, 52, 757, 527, 863, 334, 1374, 335, 907, 244, 146, 64, 64, 1051, 632, 150, 1930, 1892, 213, 1407, 1215, 1193, 1079, 97, 1567, 2427, 442, 740, 616, 831, 2111, 310, 323, 253, 442, 214, 537, 954, 214, 1008, 802, 639, 1571, 762, 484, 249, 1948, 986, 1467, 1691, 1743, 3789, 1909, 659, 705, 629, 250, 1375, 711, 740, 395, 795, 334, 1585, 179, 3470, 1417, 718, 133, 1568, 598, 1023, 1263, 1583, 1517, 104, 2341, 543, 62, 2328, 1149, 335, 1967, 65, 603, 447, 347, 2463, 618, 62, 66, 144, 197, 344, 239, 715, 496, 498, 835, 1659, 397, 552, 3720, 1359, 2302, 710, 578, 1279, 52, 1369, 1320, 1486, 1874, 1330, 1668, 426, 699, 390, 67, 406, 557, 538, 350, 200, 971, 756, 2349, 1431, 222, 232, 2263, 816, 160, 1053, 1018, 424, 435, 383, 1819, 236, 36, 604, 415, 550, 475, 788, 692, 674, 295, 357, 403, 188, 505, 1831, 1756, 1522, 169, 1937, 1035, 812, 256, 343, 894, 1477, 1011, 629, 1504, 1620, 1935, 1039, 169, 87, 623, 1779, 924, 1678, 704, 43, 3056, 2170, 420, 593, 455, 4464, 1500, 2886, 1167, 1203, 699, 3030, 1301, 4004, 1509, 354, 239, 190, 1893, 75, 1431, 1622, 75, 53, 55, 187, 286, 335, 1626, 1586, 2369, 150, 1601, 95, 406, 2995, 129, 572, 755, 107, 836, 1327, 384, 47, 1396, 1897, 263, 812, 323, 484, 199, 1451, 2944, 2546, 984, 1269, 299, 2579, 1495, 1406, 652, 404, 483, 956, 312, 168, 1381, 1938, 345, 513, 1173, 1167, 1111, 356, 299, 529, 506, 581, 400, 238, 194, 433, 258, 511, 582, 705, 1143, 4939, 625, 557, 1900, 100, 1550, 1755, 714, 735, 359, 520, 126, 1092, 490, 1058, 194, 260, 585, 675, 251, 257, 496, 219, 85, 1147, 503, 2166, 299, 544, 1559, 1541, 1922, 424, 2305, 3851, 56, 1293, 780, 200, 836, 271, 760, 3793, 3905, 1554, 36, 325, 374, 1390, 923, 414, 268, 754, 44, 590, 425, 401, 1942, 259, 587, 859, 118, 268, 158, 354, 849, 1586, 191, 145, 507, 370, 275, 1222, 447, 174, 427, 63, 352, 428, 101, 86, 231, 499, 272, 263, 116, 2003, 2101, 1605, 443, 977, 568, 1233, 512, 1182, 1243, 1319, 2184, 376, 407, 220, 275, 1851, 1565, 65, 507, 464, 427, 639, 1451, 1283, 509, 443, 178, 87, 67, 1776, 100, 365, 2024, 219, 728, 673, 155, 380, 59, 1354, 985, 423, 377, 1127, 1527, 853, 1325, 1858, 395, 654, 404, 360, 63, 679, 841, 846, 588, 659, 653, 480, 285, 1272, 42, 44, 642, 184, 44, 213, 645, 557, 644, 55, 1771, 65, 650, 210, 166, 270, 772, 44, 369, 1556, 221, 1585, 614, 523, 161, 187, 97, 1734, 182, 294, 1349, 1834, 633, 362, 498, 4005, 1432, 516, 2146, 1008, 580, 534, 1351, 4625, 1359, 672, 229, 1960, 1590, 1107, 130, 3380, 559, 1634, 1692, 559, 335, 1134, 1575, 61, 270, 366, 1826, 199, 361, 445, 473, 1685, 1195, 343, 479, 224, 861, 512, 533, 465, 556, 1052, 364, 1198, 158, 176, 1734, 1247, 1404, 1065, 282, 229, 1449, 1673, 227, 1534, 1643, 233, 1648, 44, 233, 459, 334, 821, 261, 1498, 136, 934, 886, 112, 3855, 584, 413, 171, 239, 1512, 164, 1213, 101, 543, 87, 1457, 315, 1948, 1656, 170, 230, 268, 356, 941, 275, 604, 883, 175, 1056, 251, 599, 639, 1095, 103, 1041, 670, 458, 292, 59, 798, 803, 335, 338, 434, 445, 216, 1118, 1203, 656, 1412, 422, 470, 330, 1425, 2044, 975, 357, 538, 71, 129, 121, 1508, 2001, 80, 709, 414, 703, 125, 133, 594, 130, 76, 108, 65, 100, 65, 65, 95, 24, 1188, 1716, 568, 1833, 446, 574, 339, 49, 571, 392, 397, 640, 527, 2869, 1647, 2869, 566, 672, 258, 454, 693, 410, 569, 376, 175, 951, 2547, 333, 1767, 70, 2397, 258, 923, 144, 437, 347, 346, 451, 1607, 1936, 1829, 1119, 42, 221, 173, 58, 293, 388, 266, 1165, 1246, 223, 264, 482, 129, 1467, 45, 267, 112, 201, 1114, 360, 232, 486, 73, 319, 435, 53, 1784, 2981, 43, 37, 816, 292, 66, 41, 1070, 334, 119, 530, 1696, 741, 464, 254, 484, 862, 261, 490, 326, 855, 490, 484, 403, 810, 318, 507, 1111, 459, 786, 131, 579, 739, 353, 101, 63, 339, 2810, 1357, 452, 880, 1731, 2959, 1855, 877, 196, 1066, 910, 1763, 4465, 1782, 3717, 649, 61, 1317, 1381, 1725, 229, 1678, 1559, 675, 1959, 1912, 1067, 1367, 99, 200, 679, 1817, 291, 744, 1919, 811, 1579, 39, 140, 398, 836, 149, 1326, 895, 896, 1157, 145, 1679, 690, 1964, 2315, 1212, 1238, 1088, 1579, 146, 1861, 1215, 146, 304, 1428, 974, 400, 1144, 771, 660, 1935, 1060, 798, 1062, 908, 798, 891, 4380, 3296, 1061, 829, 520, 802, 931, 781, 410, 1499, 962, 1346, 783, 954, 1463, 461, 926, 1056, 1669, 1203, 1842, 786, 715, 545, 93, 800, 119, 1095, 84, 744, 377, 2016, 2844, 4256, 85, 127, 1611, 715, 183, 1163, 126, 199, 615, 411, 377, 216, 593, 574, 172, 54, 1846, 461, 905, 509, 523, 753, 502, 1200, 626, 485, 1313, 639, 233, 903, 465, 132, 436, 84, 585, 783, 127, 995, 1335, 1339, 737, 401, 125, 1044, 843, 1493, 838, 1099, 1101, 134, 1122, 606, 335, 669, 819, 955, 224, 1291, 499, 104, 216, 593, 308, 984, 183, 540, 150, 60, 47, 1961, 1220, 1934, 57, 290, 251, 290, 884, 512, 72, 1569, 710, 851, 915, 765, 931, 2090, 172, 524, 1524, 1300, 626, 236, 547, 184, 462, 1437, 2120, 1713, 325, 1426, 144, 446, 1581, 92, 453, 557, 429, 155, 726, 788, 55, 182, 378, 147, 1545, 149, 115, 2673, 483, 138, 865, 4410, 1247, 572, 438, 1424, 110, 111, 763, 1193, 1705, 190, 1172, 924, 1409, 1406, 851, 132, 1409, 513, 1874, 869, 3333, 1868, 474, 670, 1966, 111, 74, 295, 874, 1012, 1074, 373, 1565, 677, 291, 781, 399, 428, 114, 252, 1124, 668, 628, 32, 87, 1105, 339, 1464, 265, 195, 386, 485, 1074, 599, 85, 651, 99, 201, 568, 207, 508, 338, 1107, 1975, 624, 568, 632, 329, 773, 296, 66, 339, 536, 1108, 941, 1538, 1552, 610, 1371, 564, 622, 268, 1310, 864, 1966, 1565, 640, 962, 403, 151, 145, 490, 329, 342, 654, 263, 914, 1933, 1796, 1145, 83, 512, 57, 484, 524, 117, 1124, 45, 374, 537, 121, 293, 121, 156, 208, 176, 154, 296, 1514, 658, 180, 166, 521, 331, 36, 194, 1647, 961, 47, 347, 1035, 1314, 289, 1431, 68, 324, 1836, 303, 297, 358, 1431, 303, 1449, 259, 535, 1010, 1205, 135, 1107, 82, 1706, 55, 82, 156, 473, 63, 467, 235, 47, 876, 605, 252, 133, 68, 950, 54, 375, 145, 340, 160, 309, 383, 130, 78, 216, 1698, 924, 819, 72, 1070, 44, 1954, 45, 79, 328, 1292, 1524, 190, 72, 1441, 587, 579, 193, 446, 292, 86, 76, 594, 103, 609, 98, 62, 493, 38, 38, 1794, 38, 37, 38, 50, 729, 556, 858, 1608, 989, 173, 408, 227, 746, 406, 259, 138, 713, 64, 634, 141, 1226, 55, 306, 1337, 576, 1021, 74, 952, 1673, 1041, 772, 1004, 963, 1730, 112, 1829, 1360, 233, 208, 953, 287, 442, 1531, 162, 1048, 157, 720, 439, 1672, 1791, 1688, 178, 176, 1128, 896, 1089, 187, 445, 309, 638, 82, 714, 385, 823, 97, 482, 187, 1806, 359, 750, 247, 110, 690, 285, 382, 181, 43, 395, 243, 639, 452, 269, 537, 716, 177, 480, 610, 992, 285, 286, 1215, 1021, 317, 385, 871, 277, 713, 536, 385, 988, 1092, 1536, 1548, 961, 867, 986, 1291, 1652, 142, 1131, 895, 246, 540, 159, 2084, 329, 499, 95, 438, 277, 540, 280, 481, 2039, 611, 54, 84, 558, 60, 1121, 656, 61, 959, 1082, 1922, 1150, 1962, 1014, 1661, 1462, 1153, 857, 729, 1664, 1538, 95, 314, 153, 577, 57, 57, 848, 130, 33, 378, 200, 428, 1500, 1378, 530, 530, 175, 1656, 71, 642, 516, 669, 473, 71, 967, 961, 98, 215, 751, 584, 1312, 193, 157, 230, 141, 1102, 2093, 431, 1139, 1535, 419, 535, 1174, 1068, 1881, 700, 53, 1425, 1089, 843, 510, 480, 1368, 1793, 382, 779, 1612, 121, 217, 572, 947, 276, 1179, 339, 285, 83, 1205, 868, 953, 324, 178, 653, 523, 704, 909, 506, 974, 60, 753, 145, 70, 971, 163, 309, 566, 419, 755, 492, 178, 705, 1972, 305, 645, 2020, 535, 119, 270, 919, 639, 179, 1429, 2552, 971, 1851, 1764, 716, 1757, 1556, 983, 1582, 1448, 100, 3504, 138, 987, 46, 72, 716, 741, 1483, 701, 795, 913, 1105, 111, 1151, 439, 600, 63, 961, 1412, 1407, 584, 790, 237, 4565, 578, 519, 596, 1809, 591, 152, 1994, 920, 613, 4158, 93, 531, 1000, 462, 275, 221, 690, 2365, 580, 657, 272, 143, 52, 121, 190, 714, 537, 358, 215, 175, 1174, 660, 1588, 195, 1326, 1423, 1944, 518, 189, 1464, 716, 1434, 127, 762, 751, 1993, 734, 1019, 885, 857, 1031, 1001, 673, 304, 339, 676, 420, 1357, 130, 410, 445, 1111, 1099, 746, 121, 554, 1336, 320, 851, 411, 1160, 747, 418, 1768, 1453, 387, 1067, 935, 472, 1465, 1031, 538, 39, 470, 1613, 449, 38, 1221, 538, 692, 170, 545, 542, 685, 914, 1891, 533, 1409, 588, 1317, 1452, 527, 257, 1311, 1138, 1265, 1208, 1066, 1367, 61, 794, 304, 374, 1608, 1381, 140, 546, 646, 1751, 180, 260, 836, 682, 552, 95, 1544, 114, 591, 1100, 88, 3996, 1104, 166, 942, 2099, 466, 2096, 270, 2099, 166, 1768, 372, 2099, 250, 2097, 1246, 225, 75, 647, 287, 4079, 1038, 329, 1055, 171, 1279, 27, 534, 318, 75, 114, 1889, 358, 1911, 681, 1009, 696, 996, 1639, 1723, 712, 60, 1748, 1244, 1998, 716, 374, 2013, 67, 552, 1020, 1006, 1589, 923, 1622, 1562, 1062, 1609, 1787, 1417, 304, 1667, 1773, 111, 1853, 2071, 73, 215, 246, 46, 612, 1898, 517, 273, 2007, 848, 391, 793, 268, 199, 497, 437, 971, 593, 427, 1168, 884, 273, 548, 133, 1057, 79, 680, 1197, 1497, 61, 1169, 561, 119, 113, 257, 3002, 1461, 93, 263, 58, 700, 40, 1338, 1324, 40, 535, 737, 376, 1086, 554, 1555, 181, 141, 351, 57, 299, 338, 1120, 653, 618, 87, 709, 89, 491, 91, 1125, 1903, 1835, 760, 937, 241, 412, 704, 169, 934, 896, 194, 410, 689, 211, 2053, 108, 2034, 1614, 702, 1761, 581, 664, 1177, 964, 483, 573, 1297, 323, 419, 825, 305, 1485, 3695, 1794, 1068, 1016, 125, 1321, 1028, 1695, 856, 501, 1447, 928, 515, 145, 1566, 1633, 1331, 358, 1272, 83, 1636, 738, 1083, 644, 853, 466, 647, 686, 1612, 253, 1275, 173, 591, 1515, 996, 442, 39, 1182, 1976, 861, 1629, 246, 80, 152, 298, 397, 250, 884, 496, 439, 280, 239, 739, 1027, 402, 1054, 108, 335, 492, 313, 247, 437, 1079, 1027, 1218, 558, 1566, 902, 567, 159, 494, 519, 216, 656, 495, 86, 628, 525, 196, 1458, 1869, 301, 633, 1830, 893, 783, 383, 1463, 720, 355, 343, 661, 779, 461, 829, 245, 190, 1626, 1249, 2041, 337, 349, 1797, 1592, 457, 84, 1380, 1474, 3361, 286, 109, 1803, 1989, 529, 4529, 742, 1262, 1176, 150, 141, 433, 1417, 120, 551, 484, 37, 705, 471, 706, 132, 882, 588, 173, 634, 537, 651, 535, 761, 94, 538, 256, 731, 170, 1339, 362, 133, 202, 458, 304, 924, 504, 2110, 728, 291, 1034, 105, 733, 1045, 269, 200, 670, 186, 1502, 305, 925, 148, 667, 400, 851, 314, 238, 556, 279, 1600, 137, 333, 406, 1137, 1758, 213, 169, 701, 582, 1144, 341, 1695, 129, 1025, 1679, 1685, 1471, 397, 2102, 163, 258, 1206, 257, 103, 1530, 194, 59, 922, 133, 64, 79, 1105, 770, 321, 83, 1507, 284, 1764, 1313, 392, 884, 78, 879, 253, 465, 494, 2376, 97, 1045, 592, 453, 104, 483, 344, 784, 1675, 319, 555, 780, 158, 248, 889, 1835, 809, 123, 1292, 139, 1832, 796, 1069, 1690, 128, 1296, 1331, 1481, 1164, 1841, 1796, 1037, 329, 652, 1751, 2558, 1229, 1310, 276, 41, 86, 1568, 1986, 2008, 263, 107, 158, 90, 865, 170, 1848, 1844, 1338, 1983, 496, 311, 1503, 387, 420, 124, 1871, 860, 1007, 94, 334, 1697, 487, 420, 146, 350, 462, 371, 154, 846, 193, 535, 80, 79, 276, 249, 433, 1067, 1809, 520, 1937, 394, 956, 68, 325, 393, 976, 87, 440, 1713, 139, 416, 470, 679, 377, 370, 1029, 83, 436, 557, 477, 804, 302, 780, 646, 79, 271, 608, 1744, 1859, 540, 226, 1838, 85, 540, 1005, 1002, 618, 1133, 1720, 1637, 175, 1303, 1477, 1607, 530, 1496, 1961, 1299, 830, 141, 1657, 723, 1635, 1671, 138, 100, 1675, 123, 1662, 431, 1680, 507, 891, 1789, 1521, 461, 906, 1131, 190, 235, 571, 151, 280, 536, 1082, 991, 2009, 353, 452, 383, 1361, 691, 169, 1244, 412, 241, 1210, 1095, 980, 413, 492, 954, 375, 463, 684, 593, 554, 114, 958, 909, 327, 651, 1785, 1147, 145, 1556, 1838, 443, 2090, 1790, 250, 30, 97, 730, 1417, 1148, 219, 250, 1012, 113, 1187, 583, 1497, 127, 615, 127, 296, 557, 480, 160, 1301, 1112, 1993, 1996, 2098, 1125, 1997, 1954, 151, 153, 153, 700, 605, 704, 433, 152, 1582, 1574, 1457, 685, 89, 928, 9, 116, 908, 107, 926, 1396, 667, 130, 193, 840, 1071, 1066, 416, 195, 359, 193, 172, 689, 1617, 99, 267, 1043, 378, 562, 78, 70, 451, 417, 39, 1014, 1977, 378, 558, 416, 1210, 407, 501, 735, 1470, 735, 146, 586, 844, 761, 844, 350, 440, 2177, 621, 932, 397, 439, 90, 381, 90, 1091, 773, 465, 828, 492, 367, 841, 523, 27, 2426, 140, 1639, 1804, 1678, 2171, 143, 374, 112, 448, 238, 49, 638, 766, 153, 186, 1522, 1806, 1420, 1151, 102, 1467, 113, 80, 209, 191, 109, 109, 102, 109, 122, 765, 427, 282, 709, 748, 747, 482, 455, 182, 221, 168, 747, 347, 378, 380, 568, 449, 663, 1504, 131, 183, 139, 643, 113, 92, 752, 647, 171, 361, 133, 888, 1091, 209, 716, 768, 324, 678, 1920, 153, 1283, 620, 1730, 197, 1036, 750, 1710, 1782, 2727, 1177, 3234, 1486, 182, 651, 636, 1886, 213, 595, 2255, 609, 332, 219, 316, 283, 484, 1558, 111, 86, 139, 244, 743, 235, 537, 125, 199, 448, 257, 864, 211, 915, 1047, 1597, 1591, 632, 803, 888, 628, 911, 1011, 942, 522, 338, 1119, 992, 1446, 714, 524, 762, 608, 531, 137, 1974, 191, 1183, 866, 2006, 196, 518, 67, 254, 114, 1962, 157, 205, 850, 78, 110, 177, 469, 823, 54, 659, 354, 209, 559, 339, 698, 185, 1390, 119, 358, 320, 649, 249, 745, 905, 138, 2896, 990, 167, 956, 1130, 2971, 1254, 213, 1618, 358, 1136, 1324, 1089, 1489, 1490, 1480, 1206, 1047, 1371, 327, 1111, 1801, 1320, 747, 1096, 1461, 393, 1047, 1140, 280, 1708, 1725, 313, 83, 467, 451, 710, 477, 276, 225, 150, 278, 1805, 1806, 980, 544, 770, 907, 950, 914, 44, 515, 975, 1056, 1540, 1647, 1814, 96, 1567, 966, 81, 317, 2030, 124, 360, 242, 1457, 43, 512, 3802, 835, 2021, 672, 1427, 472, 1300, 128, 472, 275, 4535, 1231, 1115, 651, 3193, 348, 4331, 1234, 251, 4338, 607, 706, 644, 1119, 1336, 632, 69, 4094, 296, 177, 1614, 267, 757, 868, 1034, 621, 1693, 1694, 1202, 707, 781, 442, 439, 1696, 909, 639, 1570, 1375, 166, 1005, 915, 204, 202, 1330, 1342, 561, 1957, 844, 495, 582, 1385, 653, 1074, 139, 610, 629, 565, 142, 1301, 57, 599, 555, 275, 627, 842, 1761, 695, 1824, 198, 1265, 246, 1145, 1581, 1074, 1446, 1598, 107, 142, 462, 1365, 1043, 690, 1472, 283, 620, 751, 960, 359, 1430, 886, 1632, 828, 872, 1428, 1007, 53, 1906, 190, 1509, 1570, 121, 48, 1408, 1453, 1005, 1006, 1714, 418, 991, 1651, 1584, 281, 2107, 1008, 268, 836, 1471, 941, 378, 1582, 1381, 292, 1106, 532, 4535, 295, 146, 253, 944, 1953, 395, 1326, 358, 517, 612, 294, 2852, 552, 551, 140, 1889, 303, 728, 1908, 1892, 1895, 1846, 1725, 1894, 2518, 1899, 2563, 2019, 1119, 226, 59, 1278, 776, 669, 1450, 737, 943, 115, 431, 1605, 86, 1265, 369, 657, 447, 1330, 797, 997, 1001, 781, 3120, 1394, 3338, 253, 1998, 546, 885, 790, 50, 62, 1543, 1114, 567, 1207, 512, 620, 1927, 515, 2263, 1098, 229, 1265, 1098, 1426, 203, 1572, 1850, 841, 1810, 1708, 1740, 421, 463, 1683, 308, 313, 457, 317, 1744, 574, 501, 543, 334, 1085, 992, 115, 519, 334, 269, 1594, 1624, 389, 167, 1372, 131, 257, 235, 1629, 1681, 593, 596, 960, 1565, 116, 554, 1444, 2504, 114, 156, 629, 1004, 513, 243, 213, 1447, 287, 246, 1309, 1001, 412, 2437, 1124, 721, 1092, 744, 905, 282, 767, 1271, 459, 705, 1300, 836, 1927, 652, 634, 4454, 429, 1874, 319, 1131, 506, 1355, 812, 1553, 2418, 1262, 1985, 833, 1378, 218, 236, 227, 862, 1103, 860, 548, 697, 525, 831, 286, 107, 365, 903, 197, 1743, 209, 775, 1405, 734, 338, 884, 214, 746, 466, 670, 1245, 604, 944, 1715, 1229, 1574, 1651, 1753, 1618, 1715, 833, 1676, 759, 37, 114, 1550, 1413, 546, 116, 726, 837, 1488, 757, 780, 150, 147, 1378, 249, 604, 1984, 295, 413, 192, 665, 397, 486, 1078, 347, 73, 1714, 239, 519, 129, 1806, 1008, 1866, 884, 73, 141, 1501, 370, 1962, 738, 359, 763, 188, 110, 130, 145, 360, 1963, 351, 1067, 101, 399, 36, 304, 724, 1424, 1301, 169, 86, 323, 517, 658, 261, 300, 824, 1288, 1656, 742, 67, 1757, 1436, 150, 1786, 2031, 818, 190, 1477, 1480, 344, 1615, 1951, 53, 839, 307, 538, 129, 619, 539, 194, 334, 1873, 457, 190, 512, 345, 537, 273, 298, 1454, 310, 543, 604, 1544, 1570, 545, 541, 2001, 551, 132, 388, 547, 833, 96, 174, 705, 69, 933, 1296, 1554, 823, 633, 242, 528, 263, 2087, 332, 1610, 775, 223, 775, 115, 1306, 209, 638, 1636, 2016, 1331, 1332, 69, 1478, 1740, 623, 269, 1955, 1083, 1145, 4013, 1166, 1149, 665, 1137, 116, 1042, 295, 156, 533, 621, 188, 2001, 740, 371, 220, 1011, 483, 1043, 518, 1135, 1481, 485, 1819, 762, 1693, 115, 520, 1809, 819, 1779, 142, 1653, 1610, 749, 78, 1273, 723, 1121, 544, 901, 83, 150, 204, 718, 1658, 273, 1051, 1919, 806, 1058, 1508, 1009, 992, 540, 1807, 1919, 1086, 915, 1812, 604, 912, 1139, 976, 413, 1018, 595, 1023, 853, 918, 752, 943, 236, 838, 156, 147, 1125, 1126, 142, 62, 1711, 1874, 1335, 166, 340, 241, 350, 322, 815, 232, 883, 1008, 1247, 257, 363, 1582, 797, 972, 1117, 243, 291, 1005, 528, 1627, 989, 373, 883, 1840, 184, 2041, 1580, 2015, 915, 155, 628, 686, 124, 1713, 889, 53, 198, 726, 597, 899, 236, 298, 109, 827, 948, 683, 824, 269, 1789, 105, 984, 1340, 787, 79, 624, 356, 519, 79, 646, 771, 145, 728, 1081, 187, 296, 88, 150, 171, 215, 1593, 666, 155, 1944, 1032, 504, 908, 767, 507, 1119, 741, 229, 666, 403, 1183, 97, 99, 202, 360, 1001, 280, 292, 781, 381, 1342, 443, 1105, 48, 1506, 1681, 1225, 758, 160, 1556, 1015, 669, 181, 1778, 1556, 1175, 1811, 824, 347, 708, 255, 1073, 1546, 173, 642, 694, 2043, 98, 97, 520, 561, 969, 1291, 595, 494, 162, 97, 536, 180, 526, 205, 634, 244, 187, 212, 319, 109, 679, 260, 1120, 396, 452, 405, 966, 977, 414, 726, 233, 429, 452, 268, 115, 950, 73, 122, 264, 256, 314, 641, 578, 436, 1765, 524, 222, 693, 80, 268, 258, 1066, 858, 189, 1364, 143, 1053, 211, 1756, 67, 512, 1609, 596, 227, 614, 276, 159, 162, 325, 1727, 107, 128, 62, 244, 68, 62, 1309, 231, 1314, 401, 153, 525, 486, 458, 378, 153, 614, 109, 178, 1020, 971, 1023, 374, 1459, 1012, 403, 987, 1016, 1105, 694, 118, 222, 70, 455, 105, 196, 110, 316, 209, 1323, 601, 207, 540, 388, 1414, 1253, 253, 226, 68, 394, 341, 469, 62, 275, 538, 1768, 67, 117, 702, 748, 1262, 142, 757, 706, 45, 1119, 397, 941, 2155, 1550, 1595, 2053, 169, 463, 455, 1928, 116, 214, 699, 301, 944, 1208, 833, 113, 1496, 1029, 148, 841, 711, 129, 1315, 706, 344, 731, 1643, 376, 588, 769, 152, 303, 929, 2454, 63, 1559, 639, 257, 1631, 1722, 1831, 94, 1083, 2087, 1193, 103, 75, 2008, 686, 1642, 879, 1906, 514, 601, 266, 2084, 120, 1681, 2062, 347, 810, 1689, 400, 735, 172, 400, 397, 600, 1406, 257, 515, 750, 568, 99, 961, 223, 397, 1446, 947, 726, 101, 1216, 1518, 223, 163, 119, 117, 353, 647, 427, 1005, 1917, 201, 134, 386, 431, 880, 1682, 1410, 1544, 496, 741, 242, 1700, 2340, 586, 1984, 232, 328, 239, 225, 1551, 1314, 245, 522, 374, 1213, 86, 1048, 1112, 197, 161, 643, 803, 668, 349, 322, 51, 555, 559, 1551, 1060, 383, 519, 476, 195, 415, 136, 178, 743, 237, 1339, 1185, 1171, 182, 219, 568, 712, 1311, 803, 62, 737, 448, 270, 953, 2004, 546, 1377, 392, 401, 626, 1053, 124, 622, 1457, 1353, 555, 585, 1484, 114, 368, 2063, 2055, 597, 1792, 286, 580, 326, 997, 309, 428, 800, 551, 475, 459, 518, 793, 1040, 420, 793, 283, 846, 223, 805, 1324, 496, 874, 558, 1662, 1028, 598, 553, 908, 188, 235, 561, 1167, 232, 609, 916, 962, 119, 290, 451, 269, 1873, 610, 449, 620, 969, 1254, 769, 1459, 1547, 685, 904, 956, 1402, 2567, 762, 384, 689, 114, 668, 209, 384, 221, 224, 1621, 31, 1975, 447, 633, 262, 180, 64, 1346, 1545, 110, 105, 293, 109, 275, 648, 1850, 297, 1532, 849, 191, 195, 1678, 832, 512, 1537, 674, 346, 825, 385, 451, 682, 1233, 1953, 1537, 1610, 428, 1901, 790, 1516, 1683, 1246, 706, 1241, 246, 1097, 257, 1276, 386, 432, 1057, 1742, 42, 1581, 1604, 132, 941, 1783, 1838, 286, 662, 1010, 1667, 663, 673, 816, 97, 1137, 111, 1946, 60, 390, 390, 1525, 551, 602, 463, 117, 1128, 968, 253, 1956, 1425, 180, 1311, 79, 786, 812, 820, 756, 862, 116, 4348, 240, 216, 347, 652, 734, 647, 83, 1302, 114, 1628, 965, 219, 868, 899, 1429, 632, 873, 917, 894, 602, 4970, 435, 1709, 52, 123, 1714, 164, 570, 1777, 257, 343, 300, 1548, 522, 73, 530, 1190, 1866, 195, 371, 1418, 898, 1179, 326, 1646, 1386, 1435, 335, 293, 127, 1345, 517, 1295, 303, 1090, 863, 425, 1836, 1923, 1345, 603, 378, 1017, 642, 636, 1366, 1285, 327, 53, 1008, 1403, 371, 1135, 1303, 1183, 350, 1847, 122, 896, 1263, 1705, 554, 145, 1566, 1968, 692, 50, 821, 431, 768, 1037, 669, 88, 1375, 1037, 750, 364, 250, 2286, 110, 69, 430, 120, 2283, 851, 96, 343, 1314, 79, 1155, 568, 1209, 167, 972, 916, 219, 1336, 766, 1023, 66, 1211, 631, 347, 1619, 925, 1752, 312, 55, 804, 205, 460, 1104, 755, 223, 671, 1279, 296, 1423, 1186, 1678, 539, 980, 1026, 986, 728, 247, 411, 655, 465, 148, 583, 71, 248, 1099, 1662, 206, 298, 237, 1390, 307, 1619, 1742, 596, 1043, 1383, 377, 1519, 1528, 1201, 1293, 153, 391, 712, 1173, 342, 1040, 1151, 1293, 98, 125, 76, 238, 1556, 36, 987, 447, 1054, 379, 332, 1127, 1639, 831, 1199, 1065, 907, 519, 328, 943, 313, 1395, 430, 44, 154, 727, 158, 1574, 1380, 158, 42, 1042, 1580, 2718, 365, 1323, 1570, 914, 156, 1015, 160, 64, 1422, 1073, 1381, 1027, 1032, 98, 564, 1242, 195, 1189, 598, 430, 1509, 1261, 1442, 276, 1392, 1371, 1412, 497, 1025, 986, 118, 1293, 225, 512, 1769, 228, 629, 754, 535, 1127, 630, 657, 162, 826, 328, 1161, 1480, 1146, 1460, 1937, 1413, 957, 1987, 1408, 1828, 1439, 465, 1395, 861, 1434, 1994, 1440, 777, 1438, 1271, 440, 1046, 743, 2031, 552, 1275, 1989, 1929, 96, 1741, 282, 425, 1587, 181, 483, 1290, 814, 228, 1935, 418, 284, 410, 336, 206, 1644, 572, 551, 425, 702, 853, 142, 2075, 476, 1629, 556, 574, 78, 294, 2398, 1825, 2031, 1772, 382, 336, 380, 1452, 1288, 1799, 478, 2059, 302, 465, 1178, 519, 1800, 1786, 1698, 1430, 544, 554, 1750, 304, 110, 1157, 437, 376, 245, 376, 471, 536, 434, 402, 592, 1069, 452, 462, 231, 1664, 1782, 1567, 1728, 975, 854, 331, 774, 388, 603, 911, 693, 177, 1201, 970, 901, 830, 872, 983, 532, 1666, 287, 364, 398, 739, 480, 80, 666, 662, 945, 143, 452, 1052, 276, 390, 354, 89, 1003, 1499, 1312, 1076, 795, 333, 299, 202, 1189, 1309, 598, 860, 435, 927, 356, 1284, 1902, 688, 375, 494, 67, 584, 902, 515, 1408, 405, 740, 1533, 1989, 498, 1621, 1487, 591, 86, 585, 2021, 2815, 1917, 730, 840, 944, 1288, 239, 3153, 915, 889, 1944, 533, 2624, 120, 706, 142, 1348, 1016, 105, 1489, 422, 403, 1056, 163, 1860, 319, 1628, 1510, 140, 193, 1864, 335, 131, 896, 1929, 323, 1338, 202, 300, 707, 2441, 1469, 158, 329, 444, 1904, 890, 124, 1246, 985, 293, 36, 1182, 823, 797, 272, 1485, 1762, 280, 1998, 1860, 113, 1817, 1884, 661, 1005, 644, 1109, 906, 984, 2068, 1807, 1498, 942, 1552, 593, 1282, 930, 186, 215, 670, 951, 273, 307, 420, 677, 594, 881, 139, 689, 201, 402, 472, 241, 37, 1062, 228, 1166, 343, 653, 148, 2420, 324, 2908, 104, 1988, 1053, 4739, 1244, 555, 173, 2803, 573, 519, 132, 1957, 104, 988, 472, 86, 528, 693, 728, 50, 87, 990, 992, 86, 992, 696, 438, 50, 994, 82, 789, 856, 32, 3212, 1037, 362, 3792, 63, 369, 2071, 32, 144, 1924, 3931, 1653, 2463 ], "xaxis": "x", "yaxis": "y" } ], "layout": { "annotations": [ { "font": {}, "showarrow": false, "text": "Electronics", "textangle": 90, "x": 0.98, "xanchor": "left", "xref": "paper", "y": 0.11375, "yanchor": "middle", "yref": "paper" }, { "font": {}, "showarrow": false, "text": "Clothing & A...", "textangle": 90, "x": 0.98, "xanchor": "left", "xref": "paper", "y": 0.37124999999999997, "yanchor": "middle", "yref": "paper" }, { "font": {}, "showarrow": false, "text": "Books", "textangle": 90, "x": 0.98, "xanchor": "left", "xref": "paper", "y": 0.62875, "yanchor": "middle", "yref": "paper" }, { "font": {}, "showarrow": false, "text": "Household", "textangle": 90, "x": 0.98, "xanchor": "left", "xref": "paper", "y": 0.88625, "yanchor": "middle", "yref": "paper" } ], "barmode": "overlay", "height": 600, "legend": { "title": { "text": "Category" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Descriptions Length (# Symbols) Distribution Per Category" }, "width": 600, "xaxis": { "anchor": "y", "domain": [ 0, 0.98 ], "title": { "text": "" } }, "xaxis2": { "anchor": "y2", "domain": [ 0, 0.98 ], "matches": "x", "showticklabels": false, "title": { "text": "" } }, "xaxis3": { "anchor": "y3", "domain": [ 0, 0.98 ], "matches": "x", "showticklabels": false, "title": { "text": "" } }, "xaxis4": { "anchor": "y4", "domain": [ 0, 0.98 ], "matches": "x", "showticklabels": false, "title": { "text": "" } }, "yaxis": { "anchor": "x", "domain": [ 0, 0.2275 ], "title": { "text": "" } }, "yaxis2": { "anchor": "x2", "domain": [ 0.2575, 0.485 ], "matches": "y", "title": { "text": "" } }, "yaxis3": { "anchor": "x3", "domain": [ 0.515, 0.7425 ], "matches": "y", "title": { "text": "" } }, "yaxis4": { "anchor": "x4", "domain": [ 0.7725, 1 ], "matches": "y", "title": { "text": "" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def shorten(annotation, max_len=15):\n", " if len(annotation) <= max_len:\n", " return annotation\n", " \n", " return annotation[:max_len - 3] + \"...\"\n", "\n", "\n", "fig = px.histogram(\n", " data[data[\"description_length\"] <= 5000],\n", " x=\"description_length\",\n", " title=\"Descriptions Length (# Symbols) Distribution Per Category\",\n", " color=\"category\",\n", " barmode=\"overlay\",\n", " histnorm=\"density\",\n", " facet_row=\"category\",\n", " opacity=1,\n", " **style_kwargs,\n", ")\n", "\n", "fig.for_each_annotation(lambda a: a.update(text=shorten(a.text.split(\"=\")[1])))\n", " \n", "fig.update_layout(\n", " legend_title_text=\"Category\",\n", " width=600,\n", " height=600,\n", ")\n", "\n", "for axis in fig.layout:\n", " if type(fig.layout[axis]) == go.layout.YAxis:\n", " fig.layout[axis].title.text = ''\n", " if type(fig.layout[axis]) == go.layout.XAxis:\n", " fig.layout[axis].title.text = ''\n", "\n", "if is_custom_style:\n", " vis.style_background(fig)\n", "\n", "fig.show()" ] }, { "cell_type": "code", "execution_count": 26, "id": "ac0aff8c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shortest messages, examples:\n", "\n", "31225 'Clothing & Accessories': \n", "BELT\n", "\n", "25918 'Books': \n", "Sail\n", "\n", "25314 'Books': \n", "Yes!\n", "\n", "30433 'Books': \n", "On War\n", "\n", "30411 'Books': \n", "On War \n", "\n", "25810 'Books': \n", "Tennis \n", "\n", "23015 'Books': \n", "Essays \n", "\n" ] } ], "source": [ "print(\"Shortest messages, examples:\\n\")\n", "\n", "for i, row in data.sort_values(\"description_length\").iloc[:7].iterrows():\n", " print(\"{} '{}': \\n{}\\n\".format(i, row[\"category\"], row[\"description\"]))" ] }, { "cell_type": "markdown", "id": "c87ce528", "metadata": {}, "source": [ "## Train test eval split" ] }, { "cell_type": "code", "execution_count": 27, "id": "f60b41fe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((19461, 5), (4170, 5), (4171, 5))" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_train, data_test = train_test_split(data, test_size=0.3)\n", "data_test, data_eval = train_test_split(data_test, test_size=0.5)\n", "\n", "data_train.shape, data_test.shape, data_eval.shape" ] }, { "cell_type": "markdown", "id": "a9b2d027", "metadata": {}, "source": [ "## Modelling" ] }, { "cell_type": "code", "execution_count": 28, "id": "02227c15", "metadata": {}, "outputs": [], "source": [ "inference_time_s = dict()\n", "scores = dict()" ] }, { "cell_type": "markdown", "id": "79be9d89", "metadata": {}, "source": [ "### Baseline" ] }, { "cell_type": "code", "execution_count": 29, "id": "f5e88ac7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((19461, 100), (4170, 100), (4171, 100))" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "count_vectorizer = CountVectorizer(max_features=100, stop_words=\"english\")\n", "x_train_baseline, y_train_baseline = count_vectorizer.fit_transform(data_train[\"description\"]), data_train[\"category\"]\n", "x_test_baseline, y_test_baseline = count_vectorizer.transform(data_test[\"description\"]), data_test[\"category\"]\n", "x_eval_baseline, y_eval_baseline = count_vectorizer.transform(data_eval[\"description\"]), data_eval[\"category\"]\n", "\n", "x_train_baseline = x_train_baseline.toarray()\n", "x_test_baseline = x_test_baseline.toarray()\n", "x_eval_baseline = x_eval_baseline.toarray()\n", "\n", "x_train_baseline.shape, x_test_baseline.shape, x_eval_baseline.shape" ] }, { "cell_type": "code", "execution_count": 30, "id": "d5c0554e", "metadata": {}, "outputs": [], "source": [ "ss = StandardScaler()\n", "x_train_baseline = ss.fit_transform(x_train_baseline)\n", "x_test_baseline = ss.transform(x_test_baseline)\n", "x_eval_baseline = ss.transform(x_eval_baseline)" ] }, { "cell_type": "code", "execution_count": 31, "id": "a053086d", "metadata": {}, "outputs": [], "source": [ "%%capture\n", "\n", "lr = LogisticRegression()\n", "lr.fit(x_train_baseline, y_train_baseline)\n", "scores[\"baseline\"] = balanced_accuracy_score(y_test_baseline, lr.predict(x_test_baseline))" ] }, { "cell_type": "code", "execution_count": 32, "id": "bc5f2660", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Balanced accuracy score: 79.8%\n" ] } ], "source": [ "print(\"Balanced accuracy score: {:.1f}%\".format(scores[\"baseline\"] * 100))" ] }, { "cell_type": "code", "execution_count": 33, "id": "2ecd14ee", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "colorscale": [ [ 0, "#013b00" ], [ 0.3333333333333333, "#02bb00" ], [ 0.6666666666666666, "#88ff88" ], [ 1, "#f5ec43" ] ], "reversescale": false, "showscale": true, "type": "heatmap", "x": [ "Books", "Clothing & Accessories", "Electronics", "Household" ], "y": [ "Books", "Clothing & Accessories", "Electronics", "Household" ], "z": [ [ 0.9162303664921466, 0.010471204188481676, 0.01780104712041885, 0.05549738219895288 ], [ 0.05581395348837209, 0.8290697674418605, 0.011627906976744186, 0.10348837209302325 ], [ 0.10779220779220779, 0.01038961038961039, 0.5909090909090909, 0.2909090909090909 ], [ 0.06309148264984227, 0.028391167192429023, 0.05236593059936909, 0.8561514195583596 ] ] } ], "layout": { "annotations": [ { "font": { "color": "#000000" }, "showarrow": false, "text": "91.6%", "x": "Books", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.0%", "x": "Clothing & Accessories", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.8%", "x": "Electronics", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "5.5%", "x": "Household", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "5.6%", "x": "Books", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#000000" }, "showarrow": false, "text": "82.9%", "x": "Clothing & Accessories", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.2%", "x": "Electronics", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "10.3%", "x": "Household", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "10.8%", "x": "Books", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.0%", "x": "Clothing & Accessories", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#000000" }, "showarrow": false, "text": "59.1%", "x": "Electronics", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "29.1%", "x": "Household", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "6.3%", "x": "Books", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "2.8%", "x": "Clothing & Accessories", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "5.2%", "x": "Electronics", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "#000000" }, "showarrow": false, "text": "85.6%", "x": "Household", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "black", "size": 14 }, "showarrow": false, "text": "Predicted value", "x": 0.5, "xref": "paper", "y": -0.15, "yref": "paper" }, { "font": { "color": "black", "size": 14 }, "showarrow": false, "text": "Real value", "textangle": -90, "x": -0.35, "xref": "paper", "y": 0.5, "yref": "paper" } ], "font": { "color": "#c1cad4" }, "margin": { "l": 200, "t": 50 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Confusion matrix, recall", "x": 0.5 }, "xaxis": { "dtick": 1, "gridcolor": "rgb(0, 0, 0)", "showgrid": false, "side": "top", "ticks": "" }, "yaxis": { "dtick": 1, "showgrid": false, "ticks": "", "ticksuffix": " " } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vis.draw_confusion_matrix(\n", " y_test_baseline,\n", " lr.predict(x_test_baseline),\n", " lr.classes_,\n", " label=\"recall\",\n", " normalize=\"true\",\n", " is_custom_style=True\n", ")" ] }, { "cell_type": "code", "execution_count": 34, "id": "a16e6722", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "colorscale": [ [ 0, "#013b00" ], [ 0.3333333333333333, "#02bb00" ], [ 0.6666666666666666, "#88ff88" ], [ 1, "#f5ec43" ] ], "reversescale": false, "showscale": true, "type": "heatmap", "x": [ "Books", "Clothing & Accessories", "Electronics", "Household" ], "y": [ "Books", "Clothing & Accessories", "Electronics", "Household" ], "z": [ [ 0.7911392405063291, 0.01288659793814433, 0.03008849557522124, 0.030760301799187463 ], [ 0.0433996383363472, 0.9188144329896907, 0.017699115044247787, 0.05165409170052235 ], [ 0.07504520795660036, 0.010309278350515464, 0.8053097345132744, 0.13000580383052815 ], [ 0.09041591320072333, 0.05798969072164949, 0.14690265486725665, 0.787579802669762 ] ] } ], "layout": { "annotations": [ { "font": { "color": "#000000" }, "showarrow": false, "text": "79.1%", "x": "Books", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.3%", "x": "Clothing & Accessories", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "3.0%", "x": "Electronics", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "3.1%", "x": "Household", "xref": "x", "y": "Books", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "4.3%", "x": "Books", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#000000" }, "showarrow": false, "text": "91.9%", "x": "Clothing & Accessories", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.8%", "x": "Electronics", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "5.2%", "x": "Household", "xref": "x", "y": "Clothing & Accessories", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "7.5%", "x": "Books", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "1.0%", "x": "Clothing & Accessories", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#000000" }, "showarrow": false, "text": "80.5%", "x": "Electronics", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "13.0%", "x": "Household", "xref": "x", "y": "Electronics", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "9.0%", "x": "Books", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "5.8%", "x": "Clothing & Accessories", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "#FFFFFF" }, "showarrow": false, "text": "14.7%", "x": "Electronics", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "#000000" }, "showarrow": false, "text": "78.8%", "x": "Household", "xref": "x", "y": "Household", "yref": "y" }, { "font": { "color": "black", "size": 14 }, "showarrow": false, "text": "Predicted value", "x": 0.5, "xref": "paper", "y": -0.15, "yref": "paper" }, { "font": { "color": "black", "size": 14 }, "showarrow": false, "text": "Real value", "textangle": -90, "x": -0.35, "xref": "paper", "y": 0.5, "yref": "paper" } ], "font": { "color": "#c1cad4" }, "margin": { "l": 200, "t": 50 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Confusion matrix, precision", "x": 0.5 }, "xaxis": { "dtick": 1, "gridcolor": "rgb(0, 0, 0)", "showgrid": false, "side": "top", "ticks": "" }, "yaxis": { "dtick": 1, "showgrid": false, "ticks": "", "ticksuffix": " " } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vis.draw_confusion_matrix(\n", " y_test_baseline,\n", " lr.predict(x_test_baseline),\n", " lr.classes_,\n", " label=\"precision\",\n", " normalize=\"pred\",\n", " is_custom_style=True\n", ")" ] }, { "cell_type": "code", "execution_count": 35, "id": "c5bf1ae8", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}", "legendgroup": "", "marker": { "color": "#f5ec43", "line": { "color": "#f5ec43", "width": 1 }, "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "textposition": "auto", "type": "bar", "x": [ "book", "author", "books", "review", "table", "years", "world", "life", "wall", "audio", "india", "men", "just", "new", "good", "home", "led", "water", "makes", "experience", "bluetooth", "used", "way", "room", "10", "great", "like", "weight", "easy", "description", "work", "features", "type", "easily", "different", "durable", "material", "cm", "provides", "cover", "design", "time", "day", "ideal", "comfort", "car", "free", "quality", "make", "need", "package", "air", "100", "high", "stylish", "women", "look", "fabric", "product", "body", "use", "range", "products", "times", "comes", "hand", "best", "designed", "plastic", "colour", "long", "length", "power", "usb", "comfortable", "perfect", "cable", "color", "storage", "clean", "brand", "fit", "set", "style", "soft", "pack", "white", "blue", "steel", "light", "size", "kitchen", "wear", "stainless", "camera", "inch", "black", "finish", "glass", "cotton" ], "xaxis": "x", "y": [ 1.472962126007295, 1.2161664595169497, 0.6565747724244515, 0.402183349000335, 0.3962385941111707, 0.2446400354615747, 0.2238987795956262, 0.21989305436341625, 0.21957371016549856, 0.16197377913249916, 0.15163180188511277, 0.14878770487097345, 0.13145577173698886, 0.1298489563916777, 0.11724614290175048, 0.0908753617775652, 0.07919466533727973, 0.07679598188130239, 0.0765275613871393, 0.07287236592069794, 0.0657255688587405, 0.060304820641927645, 0.057247579526633154, 0.05192966654338862, 0.04880618091318963, 0.04786763898090061, 0.03914734536152334, 0.039097455736318135, 0.03812628282457286, 0.03791764396033838, 0.03372292973522504, 0.02474640397196524, 0.021730117938546182, 0.009922960942627724, 0.009631463858608365, 0.007555630618773559, -0.0029486829922077515, -0.0039020427506624798, -0.01001411799579747, -0.015940792052586764, -0.01709174374163036, -0.017203047643165145, -0.019207199469520105, -0.020429287006214297, -0.029149914505837368, -0.04331323744636317, -0.04793237925704197, -0.0481836185939946, -0.04869537186005219, -0.04955828654330357, -0.059267016933626765, -0.07884969887704806, -0.08074902664520121, -0.08604233577486317, -0.08705282637551358, -0.08876416005084008, -0.09642255186957961, -0.10021517071326767, -0.10577925191042285, -0.10793021659716358, -0.10803428666626141, -0.10869957786489119, -0.11460561085990577, -0.1210495033877673, -0.1293975852728954, -0.1381325999989276, -0.13915019404376122, -0.14135935435389402, -0.14180507845062293, -0.1462579939069616, -0.14717327500052932, -0.15066144055379493, -0.1586900140425089, -0.1622256892472761, -0.16311869161255466, -0.1708191015828339, -0.17259610396480304, -0.17867206027878269, -0.1813717198179542, -0.18635160967698022, -0.18942681382149792, -0.1905019071350302, -0.19661951342871717, -0.22297975750537988, -0.27756175932316585, -0.2909017437100293, -0.30280515404792246, -0.3087219096341517, -0.3280325835273536, -0.3427551355098307, -0.36086081332264086, -0.3746443234939301, -0.4298913927599633, -0.4696551937744702, -0.47301629125881983, -0.5015623958195874, -0.5087375184666897, -0.5330681882880228, -0.5666443754395581, -0.8134386316701754 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "font": { "color": "#c1cad4" }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Baseline feature importances for label Books", "x": 0.5 }, "width": 1000, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "showgrid": false, "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "showgrid": false, "title": {} } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vis.show_lr_feature_importance(lr, 0, count_vectorizer, is_custom_style=True)" ] }, { "cell_type": "code", "execution_count": 36, "id": "3477c4f2", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}", "legendgroup": "", "marker": { "color": "#f5ec43", "line": { "color": "#f5ec43", "width": 1 }, "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "textposition": "auto", "type": "bar", "x": [ "women", "men", "cotton", "wear", "fit", "stainless", "fabric", "look", "pack", "size", "length", "soft", "perfect", "comfortable", "long", "black", "comfort", "style", "set", "clean", "product", "material", "brand", "design", "light", "best", "blue", "stylish", "free", "body", "years", "white", "designed", "work", "products", "day", "hand", "description", "different", "kitchen", "provides", "package", "comes", "like", "quality", "make", "range", "colour", "ideal", "cm", "inch", "bluetooth", "color", "just", "great", "need", "new", "weight", "times", "way", "high", "features", "plastic", "world", "100", "type", "durable", "use", "10", "india", "experience", "finish", "storage", "cover", "glass", "good", "time", "used", "air", "makes", "easy", "camera", "easily", "water", "life", "car", "room", "steel", "review", "wall", "power", "audio", "usb", "home", "cable", "led", "books", "author", "table", "book" ], "xaxis": "x", "y": [ 1.4901643866122334, 0.9298982529301455, 0.9248570698733357, 0.6859610379159413, 0.4019257613501159, 0.361986236652644, 0.2923321953293244, 0.2436251555238502, 0.22868267165696546, 0.21666935928773343, 0.20953155937825962, 0.20651614511526262, 0.1486344949433814, 0.1370720966924793, 0.12518738999476803, 0.12309889658045586, 0.12227221983278248, 0.11957767159696027, 0.10697104033092772, 0.1067506418908618, 0.10586729283331767, 0.09789795518813846, 0.09602613211201412, 0.09522012341692165, 0.09390159876757632, 0.09020857089271207, 0.07987070670220392, 0.07910290258171233, 0.07790454392261963, 0.06919276714938835, 0.06386982616456716, 0.059057129633862754, 0.057256134358045725, 0.053955171030864495, 0.05123256321938655, 0.0493292116076797, 0.03810115789062151, 0.027601736685678765, 0.02329587187896369, 0.02187772752191412, 0.02127680072525874, 0.01935825667751874, 0.01217870538808714, 0.00019454361027099813, -0.028656250741603384, -0.02888044096726633, -0.03618108580964272, -0.03681629200448395, -0.03749253420801989, -0.0403991097925243, -0.04838865608921747, -0.04964477746134582, -0.05354435141691201, -0.06309454667641554, -0.07257872933714171, -0.08353297720857947, -0.09181767747897263, -0.09538390163922604, -0.100575816361827, -0.10093012665901387, -0.10750150143714007, -0.10931374482264578, -0.11475849932522872, -0.12481839166895745, -0.12936273169090634, -0.14076043770063, -0.14099471421603713, -0.14243502203962793, -0.14368233828734686, -0.14396657172004784, -0.14484525384820537, -0.15738608652324595, -0.15874542484714543, -0.15920127829239192, -0.16583225690825124, -0.17574012959658278, -0.17902528514668095, -0.19032564010195746, -0.19533075360316743, -0.225894762481171, -0.23893599829347148, -0.27635476642309736, -0.29766019408668826, -0.33313429204390993, -0.4466539601288897, -0.4619156533492087, -0.490222829497815, -0.5042618564485084, -0.5414231793885944, -0.6455286733356403, -0.6624907261943433, -0.6679860313647881, -0.7507649716547806, -0.7576766477878938, -0.8499732719856666, -0.895611017538364, -1.097775700325433, -1.109315204077481, -1.4741934411316588, -2.0327367622260217 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "font": { "color": "#c1cad4" }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Baseline feature importances for label Clothing & Accessories", "x": 0.5 }, "width": 1000, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "showgrid": false, "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "showgrid": false, "title": {} } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vis.show_lr_feature_importance(lr, 1, count_vectorizer, is_custom_style=True)" ] }, { "cell_type": "code", "execution_count": 37, "id": "3426781c", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}", "legendgroup": "", "marker": { "color": "#f5ec43", "line": { "color": "#f5ec43", "width": 1 }, "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "textposition": "auto", "type": "bar", "x": [ "usb", "camera", "cable", "audio", "table", "power", "inch", "bluetooth", "led", "glass", "black", "car", "author", "books", "steel", "life", "book", "colour", "high", "wall", "times", "storage", "new", "range", "easily", "10", "features", "blue", "light", "experience", "need", "home", "time", "use", "style", "durable", "room", "way", "100", "cover", "type", "designed", "makes", "air", "easy", "weight", "color", "package", "size", "comes", "brand", "work", "best", "ideal", "review", "fit", "white", "body", "soft", "free", "just", "like", "used", "design", "finish", "quality", "world", "good", "provides", "pack", "perfect", "great", "water", "product", "comfortable", "make", "different", "long", "stylish", "products", "day", "description", "hand", "plastic", "clean", "cm", "india", "look", "comfort", "wear", "length", "material", "set", "stainless", "fabric", "years", "kitchen", "cotton", "men", "women" ], "xaxis": "x", "y": [ 0.8702982351993696, 0.8403915715325789, 0.716030471729827, 0.6594605688024427, 0.45623025507350956, 0.4284012378534465, 0.38608757228959406, 0.37019484569119143, 0.36608040449286783, 0.36185430270711927, 0.3500703147692045, 0.3219444012289516, 0.3063819803200786, 0.26461164342728016, 0.24903033706696695, 0.2078146618556612, 0.1991337958225844, 0.17280000781442137, 0.17164740612586749, 0.15925725684558453, 0.14951059706826283, 0.14424263902359008, 0.13659014707710374, 0.1291659615039126, 0.1236356355283749, 0.1229972534669681, 0.12044257016978893, 0.11945008099750946, 0.11753046740045227, 0.11657570887847409, 0.11628808978084483, 0.11193482987479682, 0.11023590588290733, 0.0938214502149876, 0.09086962415060773, 0.08705312138477803, 0.08703624596782975, 0.0843437194723415, 0.0793026630578513, 0.07872839725732532, 0.07844565173481699, 0.07369800612310486, 0.07054083797989373, 0.06509932954323192, 0.059964681039859746, 0.056126099398592144, 0.05285947383658036, 0.048278813207614256, 0.04786429491599091, 0.04580977767305761, 0.044788514846403414, 0.03982582059687548, 0.03614624189685528, 0.03319568583064963, 0.03300209537403735, 0.031039599732151497, 0.03097125362294607, 0.030787262474974545, 0.023920700141460156, 0.021955673382314564, 0.018806461831579108, 0.016477712032397354, 0.014222682308029765, 0.01258408897357932, 0.010681742754053364, 0.009243803813051817, 0.008760783362516079, 0.008026706072088528, 0.007353325986151074, 0.005783368089117548, 0.0051324908193360564, 0.0021330778890251206, -0.0021330500524883336, -0.006063096304944102, -0.00802444044030703, -0.01624377310726741, -0.021742392242382457, -0.02497374309024533, -0.033581885175329666, -0.033941028880744385, -0.04113656239431971, -0.052739296595461775, -0.05388011241324612, -0.05445094259211959, -0.059649303261339263, -0.09200521248168364, -0.09489226367130349, -0.09691015902726821, -0.10309948445361461, -0.11122509375044666, -0.12024954416890367, -0.12451447859247844, -0.20512439309989466, -0.24747294717570914, -0.2495690519851736, -0.3101596752990783, -0.3152539981628665, -0.641649914851611, -0.7573154091518453, -0.8070544414805036 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "font": { "color": "#c1cad4" }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Baseline feature importances for label Electronics", "x": 0.5 }, "width": 1000, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "showgrid": false, "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "showgrid": false, "title": {} } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vis.show_lr_feature_importance(lr, 2, count_vectorizer, is_custom_style=True)" ] }, { "cell_type": "code", "execution_count": 38, "id": "4b1b8b4b", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}", "legendgroup": "", "marker": { "color": "#f5ec43", "line": { "color": "#f5ec43", "width": 1 }, "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "textposition": "auto", "type": "bar", "x": [ "finish", "kitchen", "table", "steel", "home", "cotton", "led", "power", "glass", "book", "stainless", "room", "plastic", "cable", "set", "wall", "water", "white", "air", "storage", "car", "color", "books", "easily", "inch", "use", "hand", "easy", "clean", "cm", "light", "100", "used", "blue", "review", "products", "cover", "size", "make", "india", "time", "makes", "times", "comes", "quality", "length", "fabric", "pack", "good", "brand", "soft", "long", "durable", "usb", "stylish", "type", "black", "comfortable", "material", "ideal", "great", "high", "life", "perfect", "need", "range", "best", "style", "day", "designed", "colour", "comfort", "body", "product", "years", "weight", "package", "different", "description", "provides", "10", "features", "way", "experience", "look", "free", "like", "just", "design", "camera", "world", "work", "wear", "audio", "new", "fit", "men", "bluetooth", "author", "women" ], "xaxis": "x", "y": [ 0.6797725320572083, 0.6680205941348818, 0.6217245919469769, 0.5832641029088943, 0.5548664561355278, 0.5302314766484549, 0.45033594770822194, 0.3927795023834057, 0.3706223296406888, 0.3606408403961457, 0.35514190429753684, 0.3512569169865974, 0.3110145203679759, 0.30653890422063695, 0.29477286619768256, 0.26669770632454165, 0.2584713602150977, 0.21277677079110585, 0.20908112293698222, 0.1958745056415016, 0.18328448956663032, 0.17935693785911175, 0.17658928447370478, 0.1641015976156844, 0.16386347961921485, 0.15664785849089852, 0.15391155452154576, 0.14084503442904406, 0.13925027104745671, 0.13630636502486945, 0.1313230693418093, 0.13080909527825593, 0.11579813715200037, 0.10940112193443723, 0.10623773501422186, 0.09731407652126094, 0.09641367308765586, 0.09632715911891392, 0.09381958593459074, 0.08722703350623748, 0.08599242690693601, 0.07882636311413575, 0.07211472268133194, 0.07140910221175166, 0.06759606552254635, 0.06137942534443403, 0.05745202736911435, 0.056435703963949445, 0.050467280622742076, 0.04861216686307878, 0.04712491406643682, 0.04695962809600068, 0.0463859622124847, 0.042692425702683924, 0.041531808969133825, 0.04058466802726044, 0.03556830711703331, 0.03407103536038441, 0.029565206396545626, 0.024726135383587967, 0.02257801246721844, 0.02189643108613197, 0.01894624390981078, 0.017052115820115267, 0.016803173971038254, 0.015714702170619616, 0.012795381254192766, 0.012532461757810616, 0.011014550256164015, 0.010405213872741433, 0.010274278097028045, 0.009977179126665691, 0.007950186972795056, 0.005975055382046828, 0.001649813672935054, 0.00016034650431928312, -0.008370052951507022, -0.011184943495189024, -0.012780084050558069, -0.018616008715610706, -0.02812109609281267, -0.035875229319106576, -0.040661172339961665, -0.04460282095097102, -0.050292444627004704, -0.05192783804789551, -0.05581960100419003, -0.08716768689215476, -0.09071246864887085, -0.09102051385066083, -0.10784117128918393, -0.1275039213629696, -0.1448445514055308, -0.15344831657015198, -0.17462142598980893, -0.24246345394723667, -0.32137054864927167, -0.3862756370885835, -0.41323323575954407, -0.5943457850808983 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "font": { "color": "#c1cad4" }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Baseline feature importances for label Household", "x": 0.5 }, "width": 1000, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "showgrid": false, "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "showgrid": false, "title": {} } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vis.show_lr_feature_importance(lr, 3, count_vectorizer, is_custom_style=True)" ] }, { "cell_type": "code", "execution_count": 39, "id": "7f67fdb6", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}
text=%{text}", "legendgroup": "", "marker": { "color": [ "#02bb00", "#f5ec43", "#ed1a67", "#88ff88", "#666105", "#013b00", "#111111" ], "line": { "color": [ "#02bb00", "#f5ec43", "#ed1a67", "#88ff88", "#666105", "#013b00", "#111111" ], "width": 1 }, "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "text": [ "15.2%", "15.1%", "2.2%", "15.0%", "52.6%" ], "textposition": "auto", "type": "bar", "x": [ "Books", "Clothing & Accessories", "Electronics", "Household", "UNK" ], "xaxis": "x", "y": [ 635, 628, 90, 624, 2194 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "font": { "color": "#c1cad4" }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "paper_bgcolor": "#222428", "plot_bgcolor": "#222428", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#f6f7f9" }, "text": "Predictions Per Tag. Model: baseline", "x": 0.5 }, "width": 700, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "showgrid": false, "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "showgrid": false, "title": { "text": "# Tags" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "eval_pred_lr = val.predict_labels(y_test_baseline, lr.predict_proba(x_test_baseline),\n", " lr.predict_proba(x_eval_baseline), lr.classes_)\n", "eval_auto_lr = val.predict_labels(y_test_baseline, lr.predict_proba(x_test_baseline),\n", " lr.predict_proba(x_eval_baseline), lr.classes_, 0.99)\n", "vis.show_predicted_labels_distribution(eval_pred_lr, \"baseline\", is_custom_style=True)" ] }, { "cell_type": "markdown", "id": "5213edb6", "metadata": {}, "source": [ "Inference time estimation" ] }, { "cell_type": "code", "execution_count": 40, "id": "774b788a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.55 s, sys: 137 ms, total: 1.68 s\n", "Wall time: 187 ms\n" ] } ], "source": [ "%%time\n", "tic = datetime.now()\n", "x_eval_baseline, y_eval_baseline = count_vectorizer.transform(data_eval[\"description\"]), data_eval[\"category\"]\n", "x_eval_baseline = x_eval_baseline.toarray()\n", "x_eval_baseline = ss.transform(x_eval_baseline)\n", "_ = lr.predict_proba(x_eval_baseline)\n", "\n", "inference_time_s[\"baseline\"] = (datetime.now() - tic).total_seconds()" ] }, { "cell_type": "markdown", "id": "6e8709f2", "metadata": {}, "source": [ "### GRU / LSTM" ] }, { "cell_type": "markdown", "id": "1018be76", "metadata": {}, "source": [ "Building vocabulary based on data_train" ] }, { "cell_type": "code", "execution_count": 41, "id": "ce543b3e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.17 s, sys: 1.9 s, total: 3.07 s\n", "Wall time: 976 ms\n" ] }, { "data": { "text/plain": [ "89951" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "corpus_dict = util.CorpusDictionary(data_train[\"description\"]) # custom class\n", "len(corpus_dict.dictionary)" ] }, { "cell_type": "code", "execution_count": 42, "id": "2299a5e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rarest tokens:\n" ] }, { "data": { "text/plain": [ "[('பயிற்சித்', 5.138482092389908e-05),\n", " ('அறிவுக்கூர்மை', 5.138482092389908e-05),\n", " ('அறிவு', 5.138482092389908e-05),\n", " ('தேர்வுகள்', 5.138482092389908e-05),\n", " ('விரிவான', 5.138482092389908e-05),\n", " ('தாள்', 5.138482092389908e-05),\n", " ('-2013', 5.138482092389908e-05),\n", " ('ஒரிஜினல்', 5.138482092389908e-05),\n", " ('mms-4545b', 5.138482092389908e-05),\n", " ('clock-', 5.138482092389908e-05)]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"Rarest tokens:\")\n", "corpus_dict.get_frequencies()[:10]" ] }, { "cell_type": "code", "execution_count": 43, "id": "a91b5624", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Most frequent tokens:\n" ] }, { "data": { "text/plain": [ "[(')', 0.5341965983248549),\n", " ('a', 0.5519243615436),\n", " ('with', 0.5777195416473974),\n", " ('to', 0.5955500745079904),\n", " ('for', 0.630388983094394),\n", " ('of', 0.6383536303375983),\n", " ('the', 0.640563177637326),\n", " ('and', 0.7437438980525153),\n", " (',', 0.7577205693438158),\n", " ('.', 0.8146549509274961)]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"Most frequent tokens:\")\n", "corpus_dict.get_frequencies()[-10:]" ] }, { "cell_type": "markdown", "id": "924314f6", "metadata": {}, "source": [ "Truncating vocabulary based on message frequencies" ] }, { "cell_type": "code", "execution_count": 44, "id": "bbb12df1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "339" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corpus_dict.truncate_dictionary(min_frequency=0.03)\n", "len(corpus_dict.dictionary)" ] }, { "cell_type": "code", "execution_count": 45, "id": "01059eab", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.44 s, sys: 58.4 ms, total: 1.5 s\n", "Wall time: 1.51 s\n" ] } ], "source": [ "%%time\n", "data_train[\"vector\"] = corpus_dict.transform(data_train[\"description\"])\n", "data_test[\"vector\"] = corpus_dict.transform(data_test[\"description\"])\n", "data_eval[\"vector\"] = corpus_dict.transform(data_eval[\"description\"])" ] }, { "cell_type": "code", "execution_count": 46, "id": "3faf3fa0", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "histnorm": "probability", "type": "histogram", "x": [ 86, 121, 89, 68, 80, 246, 21, 47, 217, 129, 25, 54, 704, 164, 179, 186, 41, 4, 29, 299, 28, 202, 219, 263, 184, 190, 317, 225, 150, 61, 173, 272, 101, 134, 6, 8, 42, 24, 70, 160, 11, 650, 37, 164, 38, 185, 211, 18, 203, 74, 102, 71, 305, 17, 11, 17, 175, 4, 15, 113, 11, 81, 805, 198, 251, 132, 34, 381, 79, 49, 164, 15, 421, 107, 13, 340, 54, 152, 126, 327, 56, 99, 12, 235, 227, 157, 11, 108, 183, 116, 81, 11, 235, 72, 6, 299, 362, 283, 46, 220, 137, 143, 52, 17, 178, 307, 48, 54, 193, 184, 281, 67, 57, 116, 40, 43, 116, 187, 112, 348, 15, 44, 101, 50, 24, 9, 33, 59, 122, 170, 77, 11, 116, 85, 85, 119, 152, 233, 50, 121, 21, 180, 43, 82, 11, 66, 37, 137, 72, 116, 14, 259, 83, 55, 7, 301, 65, 86, 18, 195, 116, 145, 344, 102, 40, 60, 39, 28, 388, 189, 110, 102, 8, 122, 116, 69, 298, 20, 61, 240, 7, 198, 209, 25, 54, 61, 45, 116, 164, 24, 1313, 87, 112, 16, 204, 84, 84, 37, 89, 41, 301, 115, 368, 51, 594, 15, 146, 32, 130, 30, 100, 8, 302, 76, 26, 279, 115, 9, 127, 695, 150, 26, 143, 615, 92, 66, 33, 77, 69, 25, 40, 81, 9, 196, 600, 181, 249, 25, 87, 68, 1075, 65, 34, 91, 64, 772, 143, 75, 36, 139, 76, 87, 11, 277, 78, 343, 192, 94, 68, 188, 216, 180, 173, 335, 192, 70, 5, 36, 100, 245, 11, 98, 133, 48, 11, 120, 33, 138, 1030, 26, 137, 57, 162, 15, 180, 249, 24, 17, 50, 363, 7, 198, 49, 161, 241, 54, 3, 282, 13, 70, 2, 56, 39, 73, 100, 64, 16, 92, 85, 77, 188, 122, 77, 5, 56, 139, 46, 95, 111, 53, 301, 64, 71, 91, 140, 34, 273, 49, 196, 85, 88, 64, 9, 115, 9, 255, 205, 94, 86, 54, 36, 17, 53, 23, 40, 45, 8, 32, 9, 164, 54, 28, 26, 43, 22, 6, 59, 699, 63, 92, 194, 67, 67, 133, 16, 3, 85, 15, 79, 3, 17, 147, 263, 42, 31, 2, 43, 29, 156, 264, 93, 62, 15, 148, 20, 181, 69, 123, 56, 651, 85, 546, 67, 210, 118, 108, 12, 62, 129, 63, 25, 47, 45, 7, 86, 3, 293, 114, 360, 67, 285, 369, 50, 225, 141, 21, 214, 119, 29, 225, 59, 48, 151, 60, 100, 165, 173, 66, 68, 40, 8, 273, 8, 54, 276, 44, 199, 40, 69, 276, 67, 5, 198, 362, 188, 75, 115, 410, 173, 37, 277, 1320, 19, 188, 45, 86, 34, 96, 15, 16, 7, 21, 67, 91, 273, 190, 176, 67, 34, 119, 75, 85, 44, 17, 13, 58, 265, 65, 188, 15, 249, 18, 132, 47, 71, 12, 357, 111, 151, 262, 47, 9, 20, 25, 67, 193, 172, 4, 219, 17, 198, 163, 13, 2, 333, 12, 297, 223, 142, 48, 73, 123, 332, 282, 151, 89, 6, 5, 121, 19, 114, 197, 42, 287, 355, 112, 99, 124, 55, 18, 56, 37, 162, 84, 5, 64, 87, 255, 86, 77, 13, 144, 381, 15, 43, 137, 80, 49, 123, 51, 343, 135, 361, 61, 12, 59, 174, 326, 243, 92, 5, 127, 88, 95, 278, 57, 174, 90, 14, 32, 348, 79, 106, 115, 151, 63, 80, 93, 100, 12, 471, 89, 68, 12, 224, 205, 28, 193, 18, 36, 128, 267, 273, 311, 42, 1300, 26, 123, 48, 102, 95, 65, 26, 15, 17, 28, 21, 94, 177, 70, 58, 95, 308, 139, 169, 6, 88, 46, 6, 90, 726, 63, 354, 65, 361, 52, 85, 190, 109, 9, 69, 55, 75, 26, 101, 11, 36, 135, 64, 176, 250, 342, 11, 95, 242, 16, 141, 14, 9, 38, 352, 102, 182, 83, 121, 76, 208, 181, 9, 323, 81, 200, 7, 25, 97, 254, 11, 89, 218, 41, 146, 89, 121, 46, 480, 374, 110, 7, 104, 38, 197, 16, 35, 123, 264, 80, 36, 4, 61, 13, 186, 262, 169, 85, 16, 6, 261, 53, 66, 183, 4, 9, 79, 164, 246, 117, 85, 110, 64, 306, 333, 1197, 75, 72, 84, 71, 443, 149, 136, 4, 331, 32, 33, 140, 106, 23, 227, 137, 136, 25, 263, 208, 32, 9, 169, 270, 131, 165, 225, 163, 5, 8, 42, 40, 31, 203, 136, 242, 249, 175, 76, 453, 235, 7, 225, 34, 27, 109, 145, 97, 243, 239, 16, 307, 104, 237, 111, 141, 130, 19, 12, 14, 12, 91, 84, 67, 167, 13, 498, 173, 170, 62, 272, 80, 116, 112, 8, 88, 232, 10, 7, 121, 240, 216, 75, 146, 148, 170, 55, 34, 328, 203, 140, 338, 2, 11, 151, 114, 144, 50, 94, 142, 63, 95, 343, 50, 147, 74, 9, 20, 131, 412, 78, 15, 151, 188, 211, 94, 109, 460, 294, 77, 107, 42, 148, 197, 53, 124, 92, 224, 178, 12, 55, 26, 106, 32, 181, 278, 73, 224, 11, 69, 501, 98, 191, 59, 86, 74, 65, 236, 106, 71, 20, 28, 79, 180, 37, 193, 102, 103, 248, 103, 59, 27, 76, 7, 114, 30, 10, 94, 42, 238, 220, 53, 141, 49, 197, 108, 201, 83, 34, 2, 6, 56, 217, 142, 90, 10, 137, 120, 22, 61, 122, 7, 37, 19, 146, 21, 56, 108, 78, 46, 369, 31, 134, 217, 215, 26, 41, 6, 98, 2, 19, 76, 15, 102, 44, 108, 308, 49, 78, 158, 585, 102, 1183, 57, 68, 21, 11, 111, 88, 239, 198, 139, 38, 146, 80, 514, 242, 116, 169, 99, 359, 43, 71, 120, 40, 322, 113, 26, 102, 685, 171, 143, 28, 57, 32, 87, 10, 227, 52, 164, 52, 8, 147, 73, 43, 109, 560, 6, 53, 12, 43, 68, 105, 208, 123, 6, 42, 133, 172, 15, 15, 171, 146, 271, 105, 40, 78, 313, 13, 5, 9, 6, 214, 247, 153, 117, 19, 60, 9, 273, 284, 12, 201, 26, 11, 140, 152, 369, 115, 278, 81, 31, 37, 9, 116, 26, 123, 202, 61, 192, 89, 169, 43, 106, 76, 248, 213, 78, 29, 171, 286, 30, 114, 178, 87, 527, 149, 96, 16, 4, 10, 52, 53, 112, 234, 177, 18, 142, 148, 7, 236, 107, 230, 118, 66, 85, 276, 49, 168, 73, 7, 95, 55, 106, 137, 104, 87, 145, 271, 195, 70, 61, 6, 36, 8, 79, 96, 33, 7, 325, 129, 25, 22, 59, 25, 55, 144, 66, 108, 2839, 231, 70, 102, 220, 50, 613, 140, 31, 370, 5, 42, 143, 7, 34, 129, 232, 43, 310, 70, 31, 73, 64, 140, 295, 363, 55, 32, 92, 54, 14, 273, 297, 59, 11, 79, 30, 345, 36, 48, 300, 257, 71, 198, 124, 190, 514, 192, 12, 52, 81, 66, 342, 124, 27, 254, 51, 100, 317, 107, 277, 24, 105, 372, 130, 19, 168, 79, 160, 110, 163, 93, 169, 115, 253, 8, 157, 5, 2819, 87, 232, 35, 50, 42, 164, 22, 89, 34, 8, 109, 244, 55, 17, 26, 11, 320, 33, 61, 195, 143, 203, 232, 255, 51, 37, 441, 227, 206, 341, 549, 19, 14, 197, 114, 261, 246, 20, 64, 371, 128, 10, 130, 115, 46, 98, 499, 25, 173, 73, 6, 16, 296, 96, 141, 54, 13, 61, 15, 82, 169, 63, 109, 84, 40, 64, 211, 62, 209, 124, 72, 115, 289, 32, 318, 35, 73, 42, 46, 201, 348, 134, 110, 213, 12, 59, 126, 133, 125, 76, 95, 32, 402, 14, 5, 122, 495, 163, 137, 97, 108, 155, 87, 116, 6, 151, 115, 167, 71, 29, 312, 83, 33, 106, 62, 153, 244, 17, 183, 22, 57, 35, 133, 1436, 150, 35, 306, 29, 141, 117, 145, 90, 38, 58, 89, 33, 167, 30, 26, 101, 14, 69, 290, 409, 168, 104, 312, 286, 124, 72, 86, 61, 24, 19, 14, 80, 196, 255, 42, 332, 60, 289, 40, 130, 7, 79, 168, 57, 283, 171, 129, 56, 559, 159, 27, 178, 187, 83, 121, 207, 385, 105, 58, 99, 218, 95, 32, 162, 109, 433, 57, 62, 16, 202, 14, 159, 53, 268, 136, 91, 187, 96, 26, 139, 6, 59, 142, 176, 41, 118, 130, 445, 56, 31, 261, 27, 56, 7, 851, 64, 91, 11, 66, 59, 13, 5, 156, 48, 83, 76, 1, 39, 278, 10, 313, 41, 64, 192, 67, 530, 45, 322, 51, 10, 63, 179, 78, 10, 59, 35, 70, 43, 102, 620, 162, 105, 126, 142, 47, 328, 113, 93, 12, 15, 75, 5, 44, 480, 589, 757, 339, 26, 84, 235, 178, 125, 43, 345, 315, 339, 129, 136, 68, 282, 158, 47, 22, 79, 26, 186, 250, 136, 276, 372, 89, 333, 56, 97, 259, 13, 58, 70, 113, 117, 48, 272, 117, 129, 57, 366, 211, 70, 15, 13, 90, 198, 6, 39, 22, 64, 63, 132, 247, 74, 53, 57, 219, 62, 116, 221, 128, 135, 4, 377, 37, 7, 5, 71, 178, 166, 72, 61, 119, 122, 66, 61, 40, 3, 36, 54, 121, 86, 185, 9, 226, 56, 184, 19, 88, 71, 173, 171, 11, 150, 223, 76, 149, 82, 13, 91, 44, 11, 178, 51, 138, 92, 79, 13, 255, 144, 65, 55, 244, 115, 222, 124, 42, 26, 59, 84, 6, 230, 1277, 14, 208, 116, 120, 39, 39, 481, 124, 62, 24, 58, 112, 915, 114, 40, 196, 21, 258, 174, 113, 78, 36, 358, 213, 200, 63, 21, 34, 58, 70, 588, 13, 190, 24, 12, 72, 24, 39, 135, 11, 96, 78, 263, 134, 81, 25, 129, 96, 33, 96, 336, 7, 202, 114, 49, 114, 53, 24, 10, 143, 80, 63, 81, 154, 177, 235, 14, 15, 261, 114, 116, 76, 140, 33, 4, 365, 229, 15, 271, 112, 64, 45, 93, 71, 75, 11, 110, 54, 2, 193, 171, 12, 39, 36, 5, 104, 80, 233, 110, 136, 47, 185, 38, 48, 110, 55, 53, 14, 23, 284, 360, 252, 96, 210, 13, 87, 15, 4, 69, 151, 169, 109, 152, 82, 67, 85, 49, 107, 79, 20, 92, 14, 340, 83, 6, 123, 49, 9, 186, 77, 68, 229, 75, 308, 73, 13, 68, 169, 51, 182, 21, 107, 338, 107, 36, 19, 65, 254, 275, 38, 25, 199, 6, 76, 130, 16, 113, 379, 95, 37, 55, 221, 129, 89, 6, 170, 53, 77, 216, 7, 297, 189, 54, 74, 64, 44, 104, 293, 74, 54, 31, 242, 156, 53, 87, 108, 84, 21, 41, 128, 50, 6, 301, 196, 138, 18, 126, 102, 305, 390, 159, 67, 83, 126, 67, 82, 159, 29, 52, 147, 88, 126, 148, 4, 73, 13, 68, 39, 51, 345, 17, 10, 113, 32, 112, 18, 8, 45, 327, 111, 63, 143, 36, 201, 54, 45, 155, 301, 110, 8, 319, 143, 56, 52, 65, 502, 7, 78, 87, 209, 93, 44, 24, 517, 184, 21, 37, 68, 113, 4, 110, 204, 284, 6, 166, 126, 57, 27, 114, 85, 141, 112, 112, 200, 65, 103, 89, 376, 141, 181, 146, 269, 94, 88, 184, 72, 113, 167, 232, 205, 342, 62, 29, 117, 341, 18, 26, 61, 69, 4, 74, 249, 304, 40, 170, 4, 166, 200, 205, 38, 39, 430, 43, 16, 166, 85, 123, 19, 370, 38, 74, 49, 112, 51, 16, 13, 267, 139, 199, 203, 53, 85, 22, 45, 178, 38, 61, 91, 36, 61, 157, 11, 8, 193, 130, 41, 111, 11, 124, 257, 12, 110, 357, 360, 41, 72, 147, 440, 34, 36, 79, 20, 220, 183, 161, 164, 20, 243, 159, 47, 24, 114, 298, 11, 48, 8, 77, 342, 120, 11, 19, 32, 63, 127, 157, 170, 90, 49, 17, 70, 193, 178, 128, 125, 186, 84, 128, 137, 56, 19, 56, 136, 324, 121, 17, 12, 79, 31, 105, 97, 61, 348, 48, 86, 45, 10, 164, 45, 51, 175, 106, 261, 116, 274, 208, 353, 42, 372, 18, 44, 42, 236, 365, 138, 170, 34, 11, 183, 43, 901, 183, 112, 4, 58, 18, 34, 104, 38, 147, 211, 218, 170, 55, 155, 36, 53, 87, 104, 92, 86, 88, 230, 32, 106, 143, 326, 26, 362, 241, 54, 96, 9, 8, 36, 274, 268, 27, 23, 204, 72, 11, 8, 924, 124, 36, 41, 354, 208, 179, 89, 15, 17, 76, 188, 146, 27, 349, 63, 137, 310, 51, 204, 16, 95, 271, 21, 370, 13, 354, 214, 544, 91, 13, 156, 12, 294, 510, 1201, 391, 140, 257, 150, 62, 95, 95, 195, 11, 325, 814, 206, 121, 100, 19, 48, 21, 49, 57, 114, 349, 56, 11, 138, 115, 281, 138, 207, 717, 185, 26, 189, 94, 336, 331, 81, 35, 14, 328, 146, 99, 75, 27, 129, 72, 85, 141, 210, 67, 98, 351, 182, 9, 90, 36, 198, 31, 70, 76, 87, 249, 44, 368, 89, 333, 136, 53, 134, 46, 67, 36, 881, 101, 106, 74, 34, 74, 45, 20, 257, 56, 242, 53, 350, 15, 18, 194, 22, 96, 196, 63, 164, 41, 89, 23, 261, 99, 67, 10, 89, 97, 852, 21, 162, 20, 132, 294, 34, 570, 68, 412, 3, 528, 44, 14, 22, 52, 116, 22, 7, 68, 35, 62, 20, 45, 163, 65, 321, 36, 7, 97, 29, 133, 77, 233, 107, 334, 170, 260, 95, 79, 28, 40, 183, 238, 59, 19, 52, 96, 132, 78, 213, 10, 9, 126, 48, 333, 155, 85, 81, 68, 81, 133, 157, 107, 175, 367, 59, 321, 100, 98, 327, 314, 262, 102, 100, 145, 62, 102, 120, 54, 279, 33, 89, 214, 81, 21, 305, 94, 77, 248, 76, 106, 11, 180, 153, 82, 96, 44, 99, 59, 105, 186, 50, 22, 79, 10, 142, 172, 10, 23, 73, 282, 230, 86, 17, 14, 73, 150, 96, 9, 75, 54, 243, 60, 190, 285, 112, 7, 12, 13, 179, 153, 152, 412, 3, 187, 254, 180, 101, 17, 106, 218, 117, 189, 5, 54, 33, 3, 84, 102, 663, 156, 150, 260, 54, 195, 61, 232, 9, 90, 38, 38, 95, 154, 11, 14, 105, 46, 59, 281, 47, 116, 332, 50, 303, 70, 22, 6, 103, 247, 74, 31, 140, 35, 15, 28, 284, 110, 100, 78, 248, 218, 92, 17, 39, 51, 162, 89, 33, 179, 110, 164, 257, 11, 149, 405, 288, 9, 103, 139, 85, 131, 134, 58, 89, 109, 104, 94, 65, 33, 11, 393, 149, 79, 75, 134, 195, 97, 10, 196, 2, 4, 5, 52, 56, 83, 131, 62, 65, 31, 388, 51, 350, 64, 107, 138, 37, 48, 25, 31, 4, 23, 30, 10, 179, 235, 65, 14, 40, 4, 43, 58, 54, 71, 199, 13, 100, 196, 116, 72, 43, 62, 89, 246, 121, 110, 199, 76, 173, 10, 99, 38, 62, 91, 160, 278, 73, 173, 85, 27, 150, 22, 8, 67, 51, 289, 95, 32, 56, 130, 5, 253, 7, 71, 287, 225, 102, 159, 45, 25, 116, 22, 227, 64, 9, 20, 60, 28, 146, 8, 60, 117, 19, 40, 198, 48, 88, 18, 109, 70, 326, 83, 70, 21, 280, 117, 162, 84, 115, 94, 40, 125, 34, 60, 88, 165, 86, 32, 172, 737, 8, 74, 4, 53, 65, 227, 17, 151, 66, 232, 123, 12, 46, 204, 118, 61, 161, 15, 28, 23, 267, 49, 74, 32, 35, 5, 66, 93, 28, 154, 24, 58, 97, 34, 73, 916, 163, 41, 89, 305, 62, 76, 149, 14, 72, 21, 28, 107, 69, 23, 203, 159, 232, 74, 41, 55, 204, 69, 6, 16, 389, 265, 24, 126, 161, 113, 390, 182, 342, 259, 321, 345, 194, 231, 18, 45, 18, 6, 1689, 45, 144, 50, 91, 7, 340, 52, 168, 110, 36, 20, 245, 235, 64, 7, 64, 38, 188, 85, 77, 143, 325, 124, 166, 122, 13, 89, 170, 69, 119, 30, 54, 155, 21, 6, 247, 38, 76, 69, 115, 143, 262, 93, 63, 5, 6, 23, 97, 530, 370, 326, 217, 34, 141, 304, 22, 65, 13, 61, 139, 117, 153, 113, 110, 176, 284, 25, 188, 97, 211, 72, 76, 233, 66, 218, 37, 97, 108, 862, 239, 10, 7, 101, 53, 130, 183, 182, 105, 176, 14, 174, 109, 35, 13, 252, 224, 10, 290, 115, 211, 131, 276, 249, 86, 78, 98, 145, 199, 293, 128, 896, 15, 225, 120, 147, 57, 72, 87, 27, 72, 18, 34, 13, 11, 32, 87, 4, 1113, 56, 14, 77, 72, 144, 82, 192, 17, 30, 32, 113, 33, 101, 67, 23, 265, 90, 195, 33, 158, 47, 62, 14, 342, 386, 159, 227, 84, 99, 3, 161, 8, 81, 224, 7, 105, 151, 2180, 238, 127, 145, 100, 109, 122, 57, 75, 38, 95, 66, 6, 339, 41, 279, 438, 77, 87, 146, 6, 16, 301, 46, 212, 80, 6, 84, 279, 81, 75, 271, 141, 44, 38, 69, 64, 88, 25, 310, 67, 179, 48, 61, 144, 70, 25, 72, 7, 97, 24, 114, 114, 40, 49, 115, 391, 159, 216, 315, 320, 109, 88, 654, 131, 52, 286, 170, 41, 32, 274, 164, 232, 104, 11, 118, 78, 28, 85, 110, 228, 392, 139, 90, 163, 59, 38, 1, 52, 86, 184, 443, 110, 43, 86, 103, 354, 261, 267, 7, 241, 50, 27, 133, 7, 180, 128, 141, 96, 65, 5, 5, 43, 81, 18, 189, 162, 66, 126, 60, 381, 33, 177, 104, 14, 111, 166, 16, 121, 66, 60, 546, 6, 70, 89, 8, 220, 56, 258, 80, 136, 18, 107, 105, 293, 152, 112, 10, 180, 33, 102, 50, 90, 276, 42, 203, 145, 4, 82, 19, 346, 253, 225, 311, 118, 121, 180, 227, 47, 112, 180, 45, 15, 80, 76, 136, 848, 49, 74, 52, 70, 205, 205, 204, 17, 59, 101, 59, 309, 247, 107, 77, 100, 67, 89, 11, 292, 193, 14, 241, 48, 114, 73, 62, 157, 38, 47, 66, 255, 176, 264, 12, 213, 333, 8, 68, 25, 7, 89, 64, 34, 256, 21, 51, 140, 63, 25, 55, 153, 328, 35, 231, 282, 114, 13, 173, 15, 69, 174, 138, 59, 75, 220, 70, 3, 220, 54, 181, 121, 102, 66, 14, 318, 15, 352, 250, 160, 98, 69, 254, 344, 79, 25, 132, 59, 319, 22, 301, 56, 421, 22, 36, 302, 73, 46, 11, 34, 240, 56, 86, 114, 409, 218, 134, 9, 78, 61, 105, 440, 243, 115, 134, 93, 38, 255, 66, 31, 26, 125, 342, 102, 73, 60, 4, 151, 154, 7, 49, 8, 171, 65, 15, 56, 58, 94, 128, 73, 13, 180, 82, 43, 27, 339, 323, 112, 120, 237, 24, 144, 10, 38, 339, 18, 58, 800, 185, 114, 131, 36, 4, 736, 144, 87, 22, 27, 280, 42, 17, 379, 84, 67, 3, 50, 14, 241, 93, 236, 450, 35, 177, 51, 60, 65, 57, 22, 25, 23, 19, 58, 32, 38, 240, 115, 28, 146, 5, 19, 178, 124, 162, 80, 113, 164, 11, 59, 111, 16, 269, 22, 135, 11, 288, 14, 26, 74, 11, 39, 23, 790, 31, 44, 176, 92, 21, 100, 256, 19, 38, 10, 113, 239, 147, 10, 44, 13, 385, 9, 47, 288, 154, 101, 129, 77, 125, 125, 10, 26, 96, 181, 166, 116, 170, 90, 288, 59, 161, 213, 111, 71, 80, 112, 18, 46, 84, 603, 302, 68, 29, 29, 71, 94, 246, 74, 61, 195, 65, 45, 96, 14, 575, 44, 166, 174, 289, 58, 311, 42, 185, 131, 34, 73, 184, 97, 114, 63, 539, 62, 14, 131, 65, 126, 940, 54, 68, 94, 272, 23, 21, 41, 272, 106, 68, 224, 148, 185, 14, 260, 95, 199, 29, 51, 5, 182, 78, 484, 236, 12, 138, 107, 182, 30, 345, 119, 141, 19, 153, 99, 72, 23, 45, 247, 37, 14, 42, 90, 12, 158, 99, 20, 56, 192, 153, 59, 25, 247, 97, 187, 150, 67, 369, 23, 11, 66, 273, 6, 64, 10, 49, 26, 60, 33, 55, 167, 388, 55, 78, 41, 13, 344, 5, 275, 25, 303, 194, 117, 12, 31, 94, 336, 12, 29, 32, 35, 9, 80, 3, 5, 265, 73, 23, 19, 119, 66, 366, 57, 93, 108, 318, 340, 143, 457, 22, 105, 71, 49, 92, 59, 615, 351, 153, 334, 116, 80, 192, 162, 67, 82, 16, 266, 214, 199, 116, 3, 44, 203, 369, 107, 40, 149, 132, 48, 13, 189, 135, 81, 1, 117, 330, 74, 52, 4, 63, 74, 5, 1190, 61, 104, 59, 30, 326, 292, 54, 118, 179, 62, 78, 41, 445, 2038, 111, 86, 100, 412, 10, 80, 86, 184, 71, 159, 357, 14, 90, 208, 103, 60, 77, 69, 152, 112, 214, 113, 166, 24, 316, 22, 220, 42, 13, 120, 303, 81, 180, 44, 118, 215, 57, 81, 643, 145, 213, 75, 117, 276, 129, 31, 4, 229, 282, 45, 120, 53, 156, 24, 67, 237, 122, 374, 175, 33, 86, 67, 4, 145, 38, 336, 19, 53, 27, 72, 291, 5, 102, 26, 82, 100, 46, 212, 146, 37, 294, 529, 14, 86, 6, 107, 18, 267, 331, 16, 253, 143, 71, 128, 134, 157, 176, 106, 115, 64, 77, 67, 69, 944, 273, 95, 8, 14, 115, 233, 240, 171, 121, 257, 148, 93, 87, 18, 20, 139, 85, 25, 12, 157, 169, 79, 150, 62, 329, 198, 71, 52, 107, 198, 13, 226, 266, 175, 19, 70, 56, 48, 4, 305, 24, 72, 63, 11, 377, 51, 159, 11, 12, 141, 98, 148, 42, 237, 130, 101, 79, 7, 6, 537, 6, 81, 245, 179, 64, 77, 35, 77, 276, 198, 130, 218, 5, 13, 363, 84, 6, 10, 94, 18, 29, 70, 61, 18, 74, 93, 142, 185, 218, 40, 43, 31, 59, 245, 285, 287, 159, 17, 54, 122, 175, 46, 202, 86, 51, 119, 169, 23, 347, 63, 285, 347, 49, 60, 74, 180, 82, 20, 36, 526, 111, 130, 144, 3, 115, 9, 38, 63, 73, 18, 131, 201, 44, 78, 100, 116, 246, 61, 141, 391, 5, 80, 354, 33, 12, 34, 19, 300, 109, 12, 145, 5, 91, 84, 422, 105, 3, 36, 374, 10, 837, 232, 68, 186, 251, 9, 67, 494, 197, 115, 141, 49, 58, 713, 102, 61, 57, 70, 177, 9, 126, 118, 205, 37, 186, 80, 253, 7, 28, 13, 24, 25, 16, 330, 107, 18, 56, 61, 133, 46, 203, 19, 165, 13, 65, 118, 105, 227, 48, 224, 17, 88, 194, 293, 57, 19, 192, 38, 16, 165, 173, 83, 230, 419, 35, 145, 12, 54, 48, 15, 259, 71, 176, 15, 304, 263, 77, 326, 14, 191, 32, 29, 72, 138, 36, 171, 59, 17, 20, 38, 100, 236, 200, 6, 110, 10, 56, 93, 24, 88, 34, 113, 41, 21, 36, 72, 7, 92, 11, 63, 72, 22, 86, 49, 78, 173, 173, 136, 64, 6, 74, 304, 240, 252, 47, 398, 82, 152, 146, 156, 252, 72, 106, 219, 354, 62, 184, 309, 68, 398, 32, 138, 190, 5, 58, 61, 83, 156, 50, 64, 59, 13, 28, 422, 13, 101, 37, 7, 83, 23, 8, 32, 135, 76, 26, 58, 89, 12, 241, 106, 270, 159, 170, 45, 13, 41, 103, 163, 128, 228, 101, 116, 38, 78, 117, 149, 19, 53, 356, 35, 78, 37, 386, 49, 64, 291, 141, 73, 560, 63, 4, 82, 339, 83, 117, 74, 158, 95, 82, 13, 27, 283, 4, 200, 346, 10, 596, 100, 325, 23, 99, 76, 44, 52, 7, 59, 67, 59, 115, 110, 43, 51, 237, 96, 93, 139, 228, 131, 2, 123, 85, 117, 117, 168, 197, 174, 133, 114, 36, 952, 827, 32, 7, 84, 63, 99, 122, 47, 137, 114, 80, 62, 87, 102, 5, 23, 80, 482, 111, 106, 50, 159, 45, 50, 275, 157, 67, 42, 78, 123, 92, 89, 113, 78, 62, 43, 82, 89, 4, 64, 107, 89, 157, 5, 296, 251, 123, 65, 195, 86, 20, 225, 75, 150, 30, 11, 88, 87, 23, 94, 19, 370, 294, 51, 75, 312, 87, 26, 98, 114, 44, 27, 279, 17, 2042, 24, 3, 4, 137, 9, 150, 138, 115, 20, 79, 237, 39, 110, 197, 182, 175, 75, 46, 66, 96, 108, 131, 114, 43, 312, 129, 70, 233, 317, 59, 85, 14, 95, 53, 97, 121, 84, 109, 122, 123, 48, 89, 111, 42, 62, 10, 87, 52, 7, 344, 38, 117, 35, 11, 292, 139, 94, 209, 50, 8, 94, 21, 66, 170, 54, 81, 222, 204, 120, 59, 176, 51, 66, 259, 157, 206, 114, 57, 104, 94, 6, 155, 100, 189, 29, 24, 99, 142, 297, 63, 38, 240, 10, 6, 177, 67, 214, 280, 78, 49, 3, 235, 232, 16, 71, 63, 62, 292, 377, 67, 65, 309, 215, 30, 113, 188, 257, 171, 121, 334, 51, 16, 115, 31, 116, 109, 9, 70, 56, 64, 69, 75, 25, 218, 98, 2, 138, 26, 92, 77, 93, 145, 267, 87, 68, 62, 331, 73, 98, 64, 82, 247, 207, 3, 32, 124, 10, 111, 173, 69, 813, 141, 268, 165, 309, 198, 175, 56, 270, 151, 101, 17, 270, 29, 17, 192, 43, 12, 1698, 99, 88, 186, 132, 10, 107, 67, 66, 30, 35, 123, 82, 405, 165, 91, 72, 47, 21, 16, 98, 144, 118, 126, 98, 5, 3, 4, 100, 49, 9, 11, 116, 211, 139, 86, 6, 116, 293, 79, 124, 116, 17, 4, 38, 62, 33, 124, 62, 94, 5, 353, 63, 33, 2, 37, 21, 183, 88, 226, 51, 193, 68, 151, 16, 60, 57, 29, 108, 206, 64, 87, 20, 60, 52, 70, 50, 78, 40, 7, 150, 11, 63, 253, 172, 34, 6, 23, 76, 89, 29, 65, 14, 281, 6, 62, 284, 207, 313, 165, 35, 102, 79, 14, 84, 62, 102, 308, 424, 43, 73, 59, 10, 28, 16, 82, 29, 210, 191, 66, 177, 7, 19, 65, 59, 22, 213, 52, 177, 78, 77, 241, 15, 112, 102, 152, 176, 356, 77, 24, 220, 71, 9, 150, 27, 138, 63, 41, 76, 119, 11, 115, 131, 126, 113, 81, 22, 231, 95, 40, 13, 117, 308, 7, 208, 130, 29, 182, 340, 15, 184, 121, 298, 281, 219, 83, 42, 16, 68, 56, 49, 131, 137, 43, 101, 27, 18, 240, 131, 107, 50, 27, 23, 261, 25, 80, 1622, 103, 85, 429, 21, 329, 74, 7, 107, 15, 441, 54, 180, 41, 304, 35, 284, 29, 3, 56, 29, 84, 194, 178, 53, 1164, 86, 91, 113, 152, 135, 125, 313, 122, 32, 8, 214, 47, 339, 221, 18, 45, 152, 161, 43, 21, 14, 52, 65, 69, 146, 220, 332, 99, 250, 96, 77, 16, 323, 169, 111, 300, 253, 102, 254, 16, 31, 101, 6, 99, 35, 75, 27, 18, 20, 66, 881, 6, 79, 17, 26, 248, 63, 77, 5, 64, 12, 162, 9, 87, 10, 234, 123, 62, 148, 245, 124, 218, 27, 78, 5, 153, 123, 170, 210, 177, 176, 56, 119, 5, 49, 322, 30, 18, 258, 4, 148, 23, 12, 26, 390, 85, 268, 239, 135, 89, 135, 14, 6, 13, 148, 304, 14, 122, 59, 10, 64, 27, 13, 28, 138, 358, 353, 67, 100, 186, 3, 106, 62, 218, 64, 185, 20, 170, 147, 242, 139, 111, 21, 12, 5, 181, 49, 232, 28, 31, 155, 179, 51, 60, 101, 94, 292, 300, 205, 89, 320, 313, 83, 268, 42, 144, 34, 146, 529, 124, 9, 277, 194, 80, 59, 352, 137, 88, 119, 53, 385, 23, 199, 88, 52, 53, 164, 131, 122, 134, 19, 94, 142, 75, 110, 4, 108, 95, 51, 66, 233, 267, 104, 88, 24, 130, 92, 155, 26, 30, 225, 113, 437, 224, 108, 334, 65, 120, 109, 274, 6, 15, 20, 53, 26, 29, 40, 12, 69, 156, 25, 52, 160, 22, 83, 54, 75, 368, 69, 287, 7, 3, 79, 218, 88, 12, 175, 26, 235, 194, 321, 99, 42, 93, 97, 96, 82, 399, 56, 146, 41, 132, 78, 30, 230, 42, 24, 170, 169, 246, 409, 145, 41, 170, 56, 199, 27, 83, 64, 37, 72, 2, 17, 8, 44, 116, 16, 99, 47, 66, 13, 63, 178, 96, 26, 175, 12, 65, 212, 205, 148, 9, 160, 72, 107, 12, 21, 30, 126, 231, 74, 204, 339, 37, 38, 51, 336, 122, 167, 98, 8, 128, 74, 28, 133, 340, 20, 317, 64, 23, 12, 183, 219, 146, 96, 54, 127, 6, 260, 204, 114, 78, 141, 40, 42, 59, 14, 153, 56, 39, 56, 42, 130, 43, 287, 39, 181, 6, 294, 104, 198, 59, 62, 384, 112, 36, 415, 105, 87, 99, 44, 23, 344, 67, 28, 47, 113, 204, 91, 9, 83, 105, 103, 295, 184, 50, 330, 97, 172, 53, 38, 37, 25, 47, 54, 56, 241, 72, 193, 10, 17, 201, 24, 89, 85, 72, 77, 112, 381, 81, 108, 304, 34, 274, 262, 12, 236, 193, 10, 44, 65, 191, 7, 7, 367, 176, 205, 48, 5, 4, 33, 139, 98, 91, 149, 135, 310, 101, 270, 197, 159, 380, 167, 139, 206, 23, 23, 83, 176, 116, 94, 8, 48, 183, 482, 280, 25, 5, 168, 55, 306, 147, 64, 165, 29, 38, 58, 629, 136, 28, 8, 192, 197, 67, 116, 200, 99, 118, 86, 332, 55, 50, 54, 6, 117, 32, 497, 401, 213, 30, 286, 105, 60, 286, 652, 108, 130, 83, 494, 16, 368, 104, 45, 56, 265, 10, 20, 197, 181, 10, 74, 289, 309, 328, 45, 127, 108, 116, 351, 59, 35, 235, 104, 89, 472, 25, 29, 185, 95, 345, 105, 81, 81, 530, 63, 60, 61, 20, 23, 83, 1, 376, 136, 4, 14, 83, 26, 135, 74, 195, 45, 752, 301, 34, 66, 95, 91, 125, 101, 144, 200, 20, 8, 32, 347, 3, 474, 1, 235, 70, 217, 20, 13, 294, 16, 48, 108, 117, 185, 467, 154, 124, 11, 21, 49, 413, 94, 46, 8, 119, 146, 10, 81, 110, 5, 96, 10, 110, 48, 67, 66, 290, 303, 58, 21, 214, 90, 58, 22, 170, 33, 5, 108, 4, 104, 129, 36, 42, 7, 142, 136, 37, 41, 8, 40, 43, 201, 64, 41, 57, 44, 88, 106, 20, 16, 28, 37, 19, 197, 163, 37, 27, 8, 295, 472, 33, 66, 130, 173, 21, 131, 9, 336, 67, 171, 313, 294, 35, 285, 270, 31, 196, 19, 316, 23, 72, 331, 54, 37, 153, 126, 159, 13, 100, 117, 56, 174, 276, 21, 334, 34, 47, 345, 49, 126, 15, 6, 7, 98, 212, 4, 61, 109, 187, 9, 113, 2, 102, 34, 46, 58, 65, 328, 26, 131, 291, 216, 23, 16, 106, 28, 69, 248, 365, 78, 52, 7, 77, 11, 95, 119, 30, 882, 514, 41, 51, 404, 116, 64, 109, 46, 10, 776, 77, 368, 22, 99, 104, 242, 71, 233, 147, 121, 52, 77, 82, 15, 94, 111, 17, 113, 111, 12, 5, 332, 218, 13, 26, 33, 146, 169, 145, 35, 35, 109, 271, 5, 8, 267, 13, 12, 115, 65, 78, 252, 63, 240, 124, 199, 184, 86, 306, 243, 254, 222, 28, 3, 166, 7, 93, 286, 50, 192, 27, 101, 123, 174, 15, 28, 111, 181, 6, 190, 74, 69, 148, 318, 175, 79, 199, 3, 160, 438, 102, 62, 40, 38, 105, 20, 645, 241, 28, 9, 11, 283, 13, 142, 261, 118, 89, 43, 9, 255, 87, 106, 65, 205, 45, 24, 196, 18, 219, 235, 8, 34, 132, 61, 14, 50, 46, 293, 107, 23, 76, 46, 209, 33, 93, 30, 46, 72, 245, 306, 10, 194, 62, 69, 56, 124, 67, 8, 47, 177, 3, 306, 299, 35, 99, 158, 125, 240, 20, 158, 375, 19, 227, 105, 108, 49, 180, 64, 34, 24, 1316, 23, 138, 16, 403, 154, 26, 19, 12, 42, 185, 99, 341, 1076, 124, 182, 60, 68, 156, 30, 214, 23, 113, 28, 104, 48, 13, 59, 167, 143, 131, 19, 295, 4, 158, 74, 28, 369, 75, 10, 567, 83, 335, 164, 151, 134, 99, 223, 207, 277, 42, 2, 150, 114, 169, 41, 51, 7, 60, 76, 48, 70, 111, 55, 114, 85, 65, 71, 76, 108, 64, 65, 38, 395, 172, 53, 321, 2, 174, 118, 107, 264, 2, 49, 673, 57, 117, 51, 36, 84, 38, 173, 166, 407, 76, 175, 5, 41, 82, 349, 45, 18, 168, 184, 245, 87, 71, 51, 156, 143, 303, 99, 191, 83, 197, 81, 18, 37, 31, 171, 68, 185, 114, 8, 323, 21, 57, 841, 226, 135, 31, 100, 63, 142, 297, 6, 200, 161, 111, 17, 223, 111, 12, 384, 308, 43, 56, 338, 4, 118, 3, 94, 10, 115, 216, 79, 75, 6, 50, 35, 44, 60, 69, 271, 241, 102, 112, 87, 46, 130, 77, 53, 73, 7, 194, 69, 8, 82, 196, 75, 189, 22, 18, 78, 118, 269, 71, 16, 134, 126, 119, 149, 61, 196, 172, 19, 113, 12, 75, 228, 144, 320, 26, 94, 41, 151, 146, 64, 181, 115, 205, 217, 58, 67, 14, 78, 203, 178, 743, 35, 10, 5, 160, 199, 34, 101, 261, 37, 22, 197, 15, 198, 139, 173, 96, 233, 80, 95, 101, 67, 329, 120, 9, 29, 214, 48, 187, 127, 114, 86, 23, 20, 81, 403, 21, 4, 22, 87, 258, 39, 210, 54, 132, 35, 456, 8, 39, 57, 973, 132, 51, 20, 303, 37, 306, 51, 28, 3, 77, 7, 49, 59, 145, 217, 99, 253, 53, 159, 54, 66, 304, 48, 223, 49, 121, 69, 134, 118, 354, 183, 84, 143, 217, 140, 68, 95, 160, 83, 54, 118, 116, 6, 463, 88, 6, 144, 61, 210, 164, 209, 199, 166, 81, 210, 11, 74, 155, 123, 28, 202, 301, 268, 52, 36, 88, 18, 24, 52, 201, 69, 84, 134, 72, 112, 7, 29, 32, 230, 213, 34, 238, 234, 51, 13, 70, 178, 64, 99, 52, 111, 170, 32, 40, 183, 134, 128, 103, 3, 190, 48, 13, 88, 670, 353, 13, 31, 77, 106, 100, 124, 106, 39, 25, 149, 29, 6, 192, 77, 7, 157, 352, 131, 39, 261, 3, 99, 44, 60, 158, 101, 131, 61, 290, 351, 62, 61, 117, 39, 18, 45, 57, 100, 119, 9, 4, 43, 126, 182, 20, 47, 59, 91, 105, 6, 30, 291, 187, 100, 50, 162, 3, 114, 20, 117, 73, 158, 174, 51, 110, 22, 84, 64, 17, 378, 101, 61, 11, 329, 73, 299, 49, 114, 169, 196, 355, 181, 191, 30, 121, 210, 307, 112, 316, 179, 78, 63, 193, 344, 139, 100, 100, 58, 9, 38, 83, 181, 573, 13, 87, 73, 61, 23, 83, 67, 76, 59, 16, 16, 122, 70, 43, 244, 22, 146, 21, 296, 22, 70, 7, 8, 693, 111, 85, 121, 51, 221, 41, 183, 43, 29, 57, 99, 158, 365, 221, 54, 344, 145, 45, 15, 5, 285, 155, 193, 32, 25, 186, 579, 39, 156, 279, 126, 86, 171, 15, 16, 117, 85, 64, 213, 194, 121, 32, 97, 5, 33, 83, 10, 71, 183, 301, 297, 15, 161, 37, 255, 72, 285, 228, 33, 10, 77, 44, 26, 199, 71, 98, 273, 180, 246, 336, 100, 340, 243, 77, 197, 46, 88, 114, 195, 82, 35, 697, 74, 140, 8, 31, 270, 68, 237, 111, 857, 110, 7, 92, 5, 38, 175, 56, 310, 65, 61, 149, 75, 287, 146, 44, 119, 131, 385, 146, 425, 23, 64, 254, 15, 28, 189, 66, 79, 918, 129, 11, 57, 136, 521, 195, 172, 329, 32, 172, 103, 38, 201, 106, 134, 8, 174, 126, 69, 77, 48, 63, 39, 33, 290, 33, 173, 490, 168, 199, 74, 154, 239, 232, 83, 66, 180, 164, 84, 89, 185, 178, 106, 19, 70, 34, 186, 203, 92, 197, 48, 145, 131, 138, 66, 83, 94, 179, 97, 90, 109, 110, 17, 181, 93, 29, 25, 117, 13, 123, 52, 327, 23, 342, 109, 39, 95, 2, 5, 319, 121, 162, 822, 72, 90, 163, 286, 134, 200, 4, 110, 94, 34, 173, 35, 60, 30, 79, 123, 158, 59, 269, 7, 34, 23, 97, 183, 49, 70, 38, 184, 280, 178, 13, 315, 235, 88, 143, 75, 8, 44, 152, 971, 183, 273, 105, 11, 371, 9, 85, 59, 49, 41, 126, 194, 377, 64, 95, 99, 82, 22, 340, 111, 9, 166, 251, 124, 9, 57, 28, 64, 205, 40, 10, 105, 155, 494, 252, 10, 192, 47, 263, 109, 126, 185, 30, 75, 45, 3, 23, 86, 19, 524, 333, 5, 48, 18, 396, 4, 280, 239, 74, 154, 103, 170, 146, 29, 41, 18, 118, 127, 329, 113, 292, 106, 22, 306, 147, 66, 676, 101, 9, 148, 114, 92, 31, 65, 140, 380, 24, 139, 10, 48, 8, 147, 179, 323, 115, 34, 119, 7, 25, 20, 66, 111, 311, 368, 9, 110, 136, 211, 135, 32, 107, 152, 191, 56, 143, 87, 183, 137, 92, 441, 46, 101, 38, 271, 109, 22, 69, 455, 95, 75, 37, 87, 42, 83, 38, 350, 397, 12, 114, 237, 42, 299, 153, 53, 28, 55, 133, 29, 35, 169, 15, 99, 183, 33, 36, 6, 53, 7, 273, 4, 224, 177, 89, 101, 129, 17, 130, 288, 6, 173, 11, 139, 40, 127, 63, 333, 102, 13, 79, 304, 175, 352, 32, 22, 176, 54, 20, 23, 83, 8, 41, 17, 12, 126, 10, 47, 25, 102, 82, 129, 268, 123, 65, 68, 408, 186, 38, 6, 6, 83, 95, 83, 101, 421, 238, 107, 9, 44, 26, 72, 74, 117, 309, 147, 70, 268, 203, 41, 60, 14, 232, 263, 11, 71, 86, 111, 45, 239, 261, 28, 338, 147, 644, 156, 30, 114, 51, 11, 7, 190, 15, 96, 84, 118, 201, 12, 128, 144, 39, 10, 252, 60, 12, 104, 55, 798, 117, 63, 96, 39, 21, 46, 2, 37, 168, 102, 55, 35, 138, 98, 266, 32, 254, 47, 160, 10, 197, 64, 18, 240, 107, 70, 31, 50, 278, 16, 148, 66, 16, 31, 189, 117, 5, 61, 113, 92, 64, 50, 120, 8, 363, 51, 93, 45, 95, 83, 30, 391, 70, 41, 52, 23, 26, 33, 118, 141, 137, 81, 2, 14, 132, 79, 291, 55, 97, 65, 64, 280, 61, 19, 57, 82, 57, 471, 110, 76, 31, 153, 71, 20, 47, 174, 90, 159, 73, 264, 138, 115, 177, 162, 294, 484, 53, 19, 6, 68, 63, 73, 31, 582, 219, 106, 101, 179, 24, 316, 47, 53, 246, 221, 106, 319, 43, 57, 46, 74, 161, 15, 50, 194, 177, 4, 140, 65, 104, 47, 54, 33, 282, 106, 63, 1385, 83, 74, 60, 54, 18, 8, 269, 261, 63, 188, 167, 226, 16, 114, 145, 159, 30, 6, 80, 227, 15, 135, 109, 73, 29, 232, 17, 39, 93, 199, 12, 63, 68, 91, 6, 258, 15, 129, 74, 232, 28, 338, 240, 122, 182, 23, 101, 125, 15, 342, 100, 44, 75, 41, 102, 46, 68, 64, 6, 25, 59, 28, 421, 138, 219, 68, 137, 429, 144, 248, 100, 107, 176, 122, 49, 90, 74, 108, 340, 33, 170, 60, 62, 368, 80, 118, 48, 133, 118, 107, 124, 271, 247, 7, 107, 103, 179, 34, 389, 557, 44, 25, 25, 8, 39, 202, 95, 49, 107, 46, 77, 103, 80, 89, 272, 573, 5, 136, 102, 50, 42, 218, 295, 7, 6, 27, 65, 541, 382, 502, 49, 17, 84, 110, 729, 5, 145, 65, 106, 171, 160, 39, 104, 16, 94, 128, 978, 207, 330, 91, 163, 3, 143, 14, 784, 26, 17, 366, 257, 67, 149, 56, 120, 6, 182, 234, 189, 68, 235, 234, 64, 22, 8, 58, 78, 195, 145, 147, 107, 7, 7, 260, 95, 157, 551, 41, 282, 320, 122, 16, 338, 300, 42, 17, 86, 570, 39, 568, 60, 4, 144, 154, 262, 118, 102, 702, 137, 48, 20, 16, 263, 184, 34, 407, 146, 434, 18, 16, 22, 45, 24, 217, 152, 66, 8, 88, 18, 177, 96, 57, 62, 417, 273, 46, 153, 87, 4, 3, 45, 146, 27, 17, 647, 16, 99, 73, 33, 177, 290, 372, 147, 150, 123, 44, 296, 130, 17, 109, 168, 22, 45, 33, 13, 95, 12, 280, 62, 232, 79, 4, 91, 22, 7, 67, 23, 360, 125, 31, 165, 971, 9, 200, 28, 331, 61, 94, 64, 29, 80, 312, 153, 301, 72, 223, 11, 41, 217, 90, 166, 244, 42, 177, 52, 149, 28, 14, 18, 117, 79, 33, 100, 103, 41, 87, 133, 113, 136, 61, 82, 235, 127, 157, 92, 75, 86, 236, 14, 141, 235, 6, 21, 48, 114, 59, 15, 13, 59, 125, 251, 176, 54, 186, 94, 16, 158, 155, 46, 242, 9, 301, 256, 10, 10, 194, 131, 12, 148, 26, 76, 49, 176, 28, 775, 96, 17, 182, 40, 10, 80, 26, 24, 34, 36, 45, 208, 73, 152, 134, 39, 10, 24, 154, 79, 189, 43, 50, 15, 130, 82, 50, 38, 60, 22, 90, 730, 352, 68, 49, 6, 85, 113, 50, 109, 95, 84, 22, 64, 407, 144, 32, 6, 7, 191, 46, 69, 154, 57, 153, 62, 204, 41, 137, 9, 33, 76, 364, 81, 49, 97, 17, 50, 15, 134, 45, 8, 102, 91, 4, 63, 188, 198, 36, 89, 149, 118, 35, 76, 208, 107, 39, 60, 77, 105, 868, 33, 37, 119, 53, 143, 12, 40, 42, 196, 98, 79, 35, 2, 15, 35, 108, 82, 362, 37, 192, 297, 34, 27, 187, 5, 152, 12, 96, 23, 116, 24, 69, 29, 17, 112, 59, 77, 6, 14, 62, 185, 340, 17, 36, 4, 224, 313, 93, 37, 59, 62, 234, 73, 128, 452, 55, 83, 34, 211, 106, 123, 32, 29, 122, 21, 208, 86, 79, 110, 24, 46, 17, 45, 127, 133, 40, 96, 169, 149, 133, 35, 189, 40, 197, 95, 82, 281, 36, 79, 121, 22, 193, 87, 124, 113, 73, 192, 162, 375, 113, 120, 8, 60, 25, 152, 13, 26, 43, 115, 407, 176, 19, 124, 9, 8, 13, 2, 65, 135, 43, 276, 235, 158, 14, 171, 396, 185, 170, 5, 56, 313, 77, 7, 53, 27, 1879, 48, 93, 63, 64, 51, 5, 284, 57, 152, 9, 94, 68, 39, 21, 183, 85, 102, 8, 7, 445, 311, 471, 89, 231, 22, 151, 192, 33, 2, 206, 81, 116, 78, 203, 50, 49, 239, 9, 6, 35, 9, 9, 203, 12, 14, 104, 13, 117, 88, 67, 77, 63, 176, 103, 147, 41, 817, 47, 10, 228, 142, 159, 114, 38, 82, 375, 191, 32, 144, 377, 70, 95, 1194, 6, 178, 249, 28, 31, 321, 128, 113, 97, 237, 13, 30, 327, 13, 72, 5, 95, 69, 51, 25, 55, 7, 151, 191, 89, 105, 62, 66, 473, 416, 42, 13, 121, 79, 48, 63, 202, 44, 31, 143, 91, 378, 6, 248, 23, 44, 158, 291, 34, 83, 194, 568, 148, 15, 39, 218, 22, 38, 3, 181, 36, 47, 8, 108, 112, 55, 72, 23, 159, 123, 91, 166, 569, 79, 28, 155, 87, 22, 242, 114, 128, 47, 155, 107, 16, 213, 220, 42, 177, 183, 45, 112, 180, 75, 236, 206, 24, 13, 7, 306, 67, 73, 44, 122, 23, 66, 23, 24, 13, 161, 220, 32, 110, 397, 280, 296, 26, 316, 38, 10, 52, 18, 82, 50, 93, 37, 53, 229, 23, 102, 42, 30, 101, 47, 298, 142, 87, 93, 43, 123, 620, 19, 92, 120, 7, 90, 24, 124, 59, 8, 68, 185, 106, 87, 113, 77, 97, 68, 112, 110, 274, 78, 135, 106, 42, 1166, 761, 362, 185, 122, 438, 55, 111, 100, 123, 74, 90, 101, 198, 39, 59, 24, 184, 141, 20, 27, 9, 161, 198, 89, 89, 37, 35, 113, 13, 113, 94, 481, 44, 404, 96, 5, 181, 92, 176, 51, 173, 15, 77, 275, 35, 117, 32, 227, 18, 15, 28, 14, 63, 44, 109, 176, 69, 983, 134, 147, 92, 11, 34, 20, 18, 150, 30, 145, 75, 937, 31, 1, 56, 123, 324, 76, 19, 107, 141, 96, 62, 62, 134, 44, 50, 63, 230, 55, 66, 364, 9, 74, 67, 877, 184, 388, 33, 203, 76, 98, 124, 78, 148, 77, 104, 22, 101, 56, 182, 87, 8, 77, 8, 94, 129, 7, 53, 30, 35, 128, 105, 345, 244, 100, 85, 144, 20, 60, 107, 176, 10, 130, 233, 61, 344, 18, 137, 157, 34, 117, 190, 27, 55, 6, 26, 9, 110, 7, 102, 120, 234, 296, 283, 130, 388, 84, 58, 36, 27, 233, 40, 181, 39, 56, 108, 86, 58, 96, 118, 103, 120, 97, 29, 36, 278, 6, 8, 9, 45, 25, 4, 58, 219, 83, 139, 90, 152, 129, 11, 1, 135, 459, 33, 358, 51, 57, 21, 108, 233, 98, 250, 5, 18, 60, 325, 142, 150, 17, 164, 2, 60, 51, 6, 305, 80, 676, 323, 134, 382, 146, 49, 11, 20, 77, 10, 13, 90, 369, 76, 25, 293, 46, 100, 70, 4, 212, 105, 193, 209, 110, 131, 8, 162, 115, 17, 79, 23, 27, 17, 64, 134, 59, 85, 64, 88, 292, 7, 16, 167, 203, 141, 35, 296, 264, 12, 190, 310, 277, 52, 29, 82, 95, 55, 224, 8, 59, 181, 35, 107, 41, 365, 114, 4, 62, 95, 84, 94, 86, 66, 97, 1, 8, 55, 9, 3, 79, 70, 50, 460, 57, 39, 69, 44, 30, 41, 74, 293, 304, 66, 212, 89, 227, 125, 24, 358, 37, 64, 201, 15, 56, 209, 399, 8, 20, 18, 147, 417, 87, 302, 115, 87, 44, 50, 642, 199, 51, 44, 46, 373, 203, 183, 44, 54, 92, 42, 40, 31, 378, 55, 177, 30, 39, 151, 36, 160, 14, 160, 54, 30, 77, 42, 74, 76, 60, 17, 122, 82, 231, 234, 197, 163, 229, 13, 99, 37, 144, 150, 1, 203, 60, 9, 13, 18, 118, 10, 268, 130, 72, 288, 17, 20, 206, 64, 106, 30, 58, 471, 188, 102, 72, 14, 273, 110, 246, 205, 24, 51, 72, 27, 68, 410, 5, 248, 98, 9, 175, 797, 146, 21, 44, 59, 113, 216, 143, 99, 62, 23, 7, 536, 193, 110, 211, 38, 117, 74, 617, 92, 57, 144, 185, 231, 133, 254, 6, 34, 54, 145, 75, 124, 239, 27, 270, 103, 325, 98, 150, 5, 341, 88, 28, 11, 287, 18, 43, 182, 27, 98, 86, 59, 141, 120, 32, 80, 136, 263, 87, 93, 2, 208, 85, 97, 143, 106, 173, 116, 88, 202, 259, 336, 260, 194, 144, 3, 8, 69, 127, 103, 10, 185, 307, 196, 128, 18, 43, 7, 122, 26, 232, 288, 29, 11, 97, 129, 315, 345, 115, 43, 145, 180, 321, 384, 59, 135, 90, 26, 155, 30, 30, 104, 253, 381, 40, 81, 670, 83, 34, 34, 183, 51, 118, 131, 171, 264, 29, 79, 149, 532, 218, 342, 167, 4, 23, 50, 226, 4, 11, 65, 33, 16, 49, 44, 67, 202, 177, 281, 28, 25, 12, 70, 133, 35, 46, 146, 80, 7, 259, 267, 113, 433, 100, 81, 19, 586, 42, 3, 206, 32, 263, 171, 220, 32, 82, 367, 261, 14, 28, 10, 29, 12, 296, 93, 9, 92, 110, 215, 4, 210, 83, 60, 120, 197, 106, 92, 74, 388, 142, 65, 122, 247, 45, 119, 58, 83, 196, 352, 402, 65, 279, 326, 105, 154, 34, 22, 101, 79, 4, 96, 231, 35, 13, 120, 148, 824, 16, 46, 125, 183, 31, 244, 41, 179, 233, 235, 66, 110, 268, 228, 81, 77, 176, 59, 8, 59, 232, 73, 147, 53, 195, 163, 106, 18, 128, 180, 28, 107, 257, 45, 24, 52, 99, 31, 158, 179, 288, 19, 64, 114, 87, 97, 58, 40, 250, 106, 58, 120, 373, 25, 60, 9, 70, 216, 97, 64, 55, 128, 477, 101, 182, 80, 128, 174, 12, 114, 91, 44, 142, 35, 37, 88, 90, 60, 21, 292, 112, 57, 53, 72, 171, 207, 99, 62, 115, 229, 117, 11, 182, 126, 106, 49, 29, 55, 36, 264, 486, 113, 141, 77, 193, 93, 111, 40, 73, 267, 134, 73, 230, 316, 118, 78, 62, 42, 7, 92, 719, 36, 15, 60, 34, 250, 16, 224, 34, 570, 21, 24, 92, 133, 101, 194, 98, 107, 98, 99, 85, 362, 1096, 103, 25, 114, 19, 244, 93, 292, 71, 35, 8, 38, 44, 71, 120, 101, 1118, 26, 1928, 312, 122, 70, 271, 219, 84, 4, 235, 136, 32, 185, 173, 30, 128, 41, 43, 89, 31, 5, 117, 99, 33, 38, 35, 406, 49, 371, 94, 292, 221, 54, 10, 41, 9, 307, 187, 40, 26, 147, 137, 62, 234, 184, 17, 121, 73, 334, 129, 48, 162, 174, 28, 39, 20, 19, 52, 151, 337, 229, 65, 31, 161, 98, 187, 227, 261, 176, 303, 18, 107, 19, 60, 305, 201, 317, 60, 286, 343, 91, 12, 195, 89, 235, 6, 155, 356, 131, 88, 17, 94, 348, 52, 172, 128, 4, 107, 108, 186, 15, 220, 193, 209, 23, 226, 9, 423, 333, 137, 48, 4, 13, 111, 110, 106, 153, 102, 15, 66, 17, 37, 150, 68, 40, 6, 87, 72, 24, 137, 794, 54, 76, 408, 67, 1701, 16, 160, 204, 27, 229, 57, 82, 100, 144, 108, 119, 420, 27, 21, 7, 94, 190, 222, 149, 8, 172, 98, 66, 57, 322, 126, 9, 50, 98, 156, 13, 9, 80, 49, 91, 111, 109, 156, 47, 203, 60, 8, 124, 10, 54, 156, 395, 10, 41, 114, 52, 128, 104, 191, 64, 73, 58, 155, 303, 196, 15, 7, 141, 172, 7, 123, 35, 14, 28, 56, 84, 134, 290, 74, 161, 249, 134, 19, 9, 67, 150, 7, 384, 216, 156, 413, 7, 11, 105, 221, 13, 97, 94, 176, 357, 307, 27, 2, 121, 69, 309, 33, 27, 71, 61, 87, 215, 170, 4, 138, 332, 78, 4, 135, 209, 615, 39, 166, 47, 339, 78, 356, 157, 18, 138, 56, 23, 7, 239, 68, 24, 39, 87, 16, 36, 99, 9, 25, 45, 234, 17, 71, 144, 112, 125, 78, 119, 5, 224, 59, 153, 126, 51, 121, 94, 152, 22, 49, 76, 217, 261, 14, 26, 75, 97, 73, 9, 8, 313, 115, 156, 42, 96, 205, 34, 46, 241, 396, 172, 97, 127, 312, 66, 8, 290, 112, 230, 46, 338, 98, 29, 15, 217, 88, 185, 183, 405, 39, 38, 110, 98, 14, 18, 11, 95, 68, 577, 342, 174, 134, 86, 153, 155, 31, 362, 71, 123, 243, 38, 91, 14, 191, 422, 83, 16, 243, 303, 6, 41, 116, 37, 102, 247, 13, 46, 84, 17, 252, 119, 366, 9, 77, 74, 616, 98, 87, 97, 146, 54, 126, 138, 205, 7, 79, 99, 357, 24, 84, 1, 164, 40, 113, 87, 29, 33, 224, 14, 300, 117, 103, 119, 17, 69, 193, 27, 74, 85, 150, 99, 333, 138, 130, 212, 260, 84, 177, 13, 10, 2104, 68, 199, 25, 2, 322, 54, 252, 269, 195, 97, 130, 272, 11, 101, 210, 14, 43, 350, 42, 99, 178, 44, 251, 7, 8, 159, 103, 287, 5, 193, 33, 37, 40, 52, 77, 49, 107, 97, 23, 115, 55, 22, 7, 181, 214, 90, 4, 329, 91, 18, 129, 131, 11, 111, 30, 293, 42, 317, 13, 343, 57, 10, 170, 258, 15, 141, 417, 38, 19, 51, 535, 37, 94, 178, 82, 35, 214, 89, 103, 79, 60, 21, 31, 170, 54, 163, 87, 17, 23, 131, 169, 437, 4, 9, 8, 294, 46, 112, 155, 119, 67, 83, 46, 5, 100, 326, 35, 147, 85, 13, 188, 99, 86, 26, 13, 232, 235, 329, 40, 308, 27, 67, 96, 14, 341, 1069, 80, 57, 51, 11, 53, 281, 109, 7, 123, 16, 96, 228, 49, 57, 72, 35, 76, 20, 17, 345, 138, 44, 146, 211, 125, 41, 35, 93, 334, 41, 159, 163, 227, 133, 149, 8, 66, 114, 89, 23, 40, 29, 66, 106, 106, 56, 113, 597, 106, 27, 143, 286, 131, 100, 93, 351, 30, 197, 5, 16, 83, 320, 67, 339, 233, 3, 74, 361, 14, 111, 42, 70, 16, 245, 7, 80, 211, 102, 8, 376, 38, 329, 82, 85, 27, 38, 37, 128, 229, 62, 9, 51, 175, 69, 68, 27, 194, 101, 256, 32, 31, 26, 283, 299, 81, 109, 12, 37, 76, 127, 188, 36, 103, 49, 218, 21, 131, 83, 35, 24, 105, 51, 9, 42, 142, 222, 106, 254, 44, 96, 192, 42, 133, 195, 259, 263, 22, 32, 297, 11, 122, 196, 221, 351, 316, 71, 202, 16, 239, 12, 153, 194, 145, 82, 52, 97, 65, 40, 168, 47, 226, 113, 83, 62, 168, 35, 79, 133, 169, 71, 46, 84, 107, 247, 101, 87, 99, 69, 83, 30, 69, 18, 149, 186, 88, 6, 41, 252, 140, 19, 6, 62, 207, 77, 132, 66, 181, 39, 6, 99, 173, 358, 22, 19, 13, 120, 260, 216, 9, 24, 299, 146, 22, 86, 139, 63, 24, 191, 134, 10, 100, 70, 102, 74, 339, 326, 62, 11, 127, 325, 65, 176, 147, 175, 56, 72, 528, 80, 116, 326, 91, 42, 103, 75, 13, 57, 123, 104, 47, 21, 42, 148, 38, 57, 353, 16, 34, 110, 132, 1395, 91, 121, 302, 67, 115, 120, 12, 82, 12, 45, 104, 559, 202, 120, 104, 245, 46, 28, 246, 54, 32, 8, 233, 26, 61, 334, 44, 202, 32, 223, 103, 332, 206, 109, 155, 4, 245, 19, 187, 196, 101, 31, 94, 45, 86, 142, 86, 65, 288, 93, 15, 101, 129, 109, 25, 16, 142, 43, 85, 24, 47, 58, 125, 193, 8, 20, 66, 58, 33, 111, 6, 15, 62, 93, 223, 121, 174, 149, 107, 46, 273, 41, 12, 51, 24, 233, 169, 294, 253, 39, 15, 181, 33, 133, 50, 6, 185, 161, 29, 13, 62, 52, 37, 357, 18, 163, 11, 68, 5, 200, 56, 642, 55, 160, 370, 244, 133, 171, 291, 69, 215, 330, 1004, 4, 17, 208, 81, 99, 12, 10, 12, 106, 80, 14, 4, 53, 41, 141, 82, 7, 180, 208, 272, 122, 278, 23, 180, 106, 52, 34, 29, 55, 242, 99, 104, 54, 317, 243, 90, 180, 321, 286, 4, 114, 108, 271, 95, 158, 18, 94, 73, 317, 72, 42, 100, 125, 297, 5, 27, 31, 126, 85, 12, 59, 59, 164, 61, 107, 66, 205, 107, 31, 114, 112, 81, 12, 13, 18, 26, 41, 567, 312, 250, 186, 58, 23, 48, 114, 121, 43, 19, 116, 6, 174, 306, 194, 163, 120, 199, 12, 57, 4, 81, 55, 33, 76, 42, 150, 252, 86, 91, 151, 59, 110, 102, 96, 332, 550, 47, 166, 102, 43, 173, 44, 11, 362, 222, 228, 384, 12, 112, 79, 281, 255, 147, 46, 117, 221, 184, 388, 62, 38, 26, 7, 6, 209, 148, 106, 30, 207, 18, 18, 1705, 7, 123, 148, 31, 321, 94, 61, 358, 236, 13, 140, 33, 88, 86, 40, 282, 353, 45, 8, 176, 75, 34, 372, 126, 49, 68, 41, 58, 11, 46, 29, 190, 109, 290, 190, 48, 114, 65, 80, 21, 312, 9, 223, 68, 77, 98, 24, 353, 16, 15, 103, 935, 14, 66, 54, 25, 191, 186, 313, 102, 169, 227, 217, 111, 105, 86, 137, 291, 364, 73, 167, 16, 152, 37, 176, 80, 204, 76, 286, 358, 2530, 97, 184, 92, 16, 43, 139, 35, 147, 66, 666, 114, 225, 175, 73, 73, 27, 419, 134, 172, 111, 255, 148, 8, 235, 169, 15, 304, 99, 123, 63, 14, 10, 181, 107, 378, 6, 153, 4, 2347, 267, 176, 72, 105, 134, 296, 58, 411, 30, 47, 9, 404, 67, 161, 16, 286, 118, 84, 96, 139, 95, 10, 10, 58, 8, 87, 184, 91, 413, 108, 32, 143, 7, 76, 413, 8, 60, 153, 88, 79, 138, 69, 351, 33, 115, 85, 112, 129, 202, 14, 55, 17, 86, 65, 318, 10, 108, 19, 6, 269, 38, 10, 9, 95, 133, 369, 102, 93, 7, 118, 124, 177, 55, 211, 192, 8, 19, 12, 43, 59, 250, 50, 5, 144, 34, 196, 324, 5, 346, 185, 64, 26, 54, 114, 34, 13, 23, 160, 95, 14, 116, 64, 22, 9388, 80, 15, 56, 21, 7, 2, 274, 384, 6, 18, 80, 87, 28, 30, 141, 66, 7, 194, 356, 66, 154, 43, 272, 85, 85, 204, 29, 54, 1713, 14, 360, 4, 35, 494, 38, 379, 364, 40, 39, 74, 12, 10, 190, 20, 267, 21, 156, 212, 348, 100, 96, 23, 23, 134, 353, 460, 24, 73, 22, 7, 85, 91, 371, 15, 48, 72, 269, 35, 251, 418, 16, 18, 149, 29, 19, 7, 306, 116, 15, 88, 87, 295, 77, 86, 164, 25, 114, 66, 124, 9, 109, 26, 8, 7, 98, 96, 185, 301, 10, 45, 65, 83, 2, 407, 71, 34, 46, 90, 79, 153, 43, 53, 5, 10, 169, 99, 61, 167, 263, 66, 52, 33, 21, 163, 101, 91, 240, 84, 185, 8, 134, 145, 10, 337, 54, 603, 855, 49, 105, 8, 18, 17, 132, 26, 121, 128, 24, 33, 30, 35, 40, 25, 205, 69, 3, 112, 9, 32, 24, 226, 4, 56, 121, 58, 65, 301, 199, 394, 266, 256, 83, 53, 147, 120, 78, 87, 44, 36, 9, 210, 191, 250, 93, 276, 235, 85, 6, 8, 234, 278, 218, 107, 111, 84, 11, 140, 214, 22, 109, 204, 127, 100, 530, 57, 16, 108, 356, 17, 117, 178, 175, 36, 126, 38, 17, 100, 15, 425, 153, 71, 78, 58, 60, 12, 103, 14, 229, 316, 34, 60, 202, 44, 28, 96, 92, 321, 98, 72, 42, 34, 295, 159, 140, 63, 25, 35, 140, 46, 31, 190, 8, 119, 112, 30, 77, 87, 164, 60, 104, 45, 73, 10, 20, 115, 51, 43, 102, 338, 171, 103, 122, 58, 50, 147, 27, 130, 4, 131, 50, 67, 306, 21, 133, 99, 30, 26, 73, 4, 337, 586, 204, 27, 39, 399, 67, 152, 136, 50, 41, 17, 16, 150, 522, 175, 105, 30, 9, 30, 324, 62, 27, 644, 39, 7, 47, 69, 119, 12, 408, 100, 21, 16, 82, 21, 368, 22, 113, 149, 260, 14, 347, 45, 454, 107, 149, 50, 1844, 117, 28, 650, 533, 35, 126, 53, 91, 146, 226, 5, 237, 9, 6, 206, 157, 122, 251, 17, 172, 9, 47, 131, 26, 44, 176, 41, 117, 6, 118, 555, 83, 414, 76, 4, 47, 171, 139, 93, 118, 97, 41, 42, 11, 73, 239, 102, 235, 67, 44, 97, 18, 89, 119, 115, 244, 10, 253, 187, 65, 177, 6, 167, 130, 133, 74, 341, 28, 85, 55, 109, 117, 40, 166, 51, 20, 126, 184, 223, 54, 49, 175, 93, 30, 71, 379, 57, 126, 265, 64, 133, 8, 39, 159, 222, 124, 16, 77, 5, 30, 140, 26, 103, 23, 3, 100, 2582, 183, 52, 79, 142, 121, 108, 88, 267, 186, 84, 235, 127, 130, 9, 34, 25, 31, 142, 69, 321, 24, 50, 187, 62, 18, 195, 51, 22, 17, 206, 179, 33, 52, 103, 354, 88, 47, 139, 127, 252, 113, 208, 327, 38, 37, 516, 50, 70, 8, 75, 11, 110, 26, 137, 90, 95, 39, 199, 237, 427, 332, 95, 182, 67, 294, 119, 50, 41, 190, 228, 152, 54, 61, 69, 105, 76, 9, 10, 53, 144, 82, 44, 256, 244, 157, 254, 20, 123, 14, 92, 124, 126, 55, 252, 88, 290, 84, 2, 119, 138, 10, 362, 14, 52, 13, 139, 7, 118, 239, 71, 35, 9, 114, 152, 34, 237, 54, 62, 142, 232, 26, 185, 354, 62, 228, 51, 7, 139, 11, 66, 86, 335, 10, 271, 205, 34, 462, 109, 43, 124, 105, 8, 60, 25, 149, 48, 28, 85, 211, 278, 48, 47, 117, 91, 7, 19, 96, 123, 339, 490, 218, 154, 250, 493, 188, 57, 181, 2, 195, 366, 458, 67, 33, 150, 81, 87, 118, 37, 80, 253, 5, 50, 150, 86, 76, 15, 32, 141, 20, 135, 118, 45, 72, 26, 90, 13, 56, 155, 178, 163, 199, 42, 344, 159, 128, 20, 9, 317, 293, 81, 204, 69, 73, 10, 258, 34, 59, 83, 21, 337, 87, 19, 31, 280, 10, 147, 287, 19, 120, 106, 167, 13, 91, 77, 616, 149, 110, 144, 228, 9, 52, 124, 48, 86, 184, 50, 49, 333, 91, 99, 41, 172, 7, 11, 103, 5, 109, 326, 194, 25, 210, 420, 71, 166, 320, 32, 51, 68, 11, 122, 22, 247, 7, 93, 57, 197, 33, 73, 214, 207, 482, 237, 97, 25, 223, 162, 31, 13, 223, 241, 87, 64, 25, 79, 131, 664, 280, 324, 140, 142, 100, 173, 72, 88, 3, 91, 227, 134, 13, 21, 98, 79, 213, 13, 83, 122, 295, 98, 209, 736, 31, 96, 108, 142, 95, 92, 42, 92, 97, 98, 23, 4, 172, 21, 8, 76, 45, 195, 56, 102, 136, 173, 28, 19, 64, 46, 177, 95, 159, 670, 15, 151, 11, 148, 52, 68, 181, 10, 436, 151, 124, 307, 126, 3, 317, 61, 152, 234, 6, 114, 106, 564, 206, 92, 50, 98, 1883, 176, 39, 22, 153, 73, 7, 16, 22, 133, 31, 39, 136, 78, 34, 22, 42, 51, 65, 65, 4, 47, 28, 5, 238, 54, 59, 281, 7, 202, 65, 54, 88, 61, 184, 64, 48, 208, 81, 8, 70, 274, 15, 214, 107, 76, 101, 11, 32, 80, 9, 20, 76, 383, 349, 292, 44, 23, 70, 9, 420, 43, 31, 20, 58, 266, 26, 38, 54, 117, 342, 48, 32, 227, 120, 112, 65, 22, 8, 46, 193, 98, 79, 98, 111, 157, 98, 121, 138, 146, 59, 18, 49, 31, 64, 77, 105, 304, 805, 29, 171, 157, 65, 70, 159, 3, 76, 86, 54, 46, 180, 55, 89, 14, 388, 86, 89, 27, 169, 267, 44, 31, 19, 8, 237, 174, 108, 42, 49, 34, 71, 29, 258, 240, 67, 4, 262, 163, 214, 157, 131, 6, 38, 7, 6, 462, 198, 93, 26, 8, 147, 12, 22, 68, 12, 120, 137, 111, 56, 25, 127, 142, 9, 177, 127, 6, 7, 206, 21, 26, 144, 52, 74, 8, 39, 89, 26, 5, 99, 467, 31, 280, 133, 75, 10, 245, 172, 104, 95, 308, 71, 125, 9, 165, 174, 85, 38, 42, 210, 74, 79, 52, 57, 95, 1, 71, 38, 185, 8, 66, 26, 46, 192, 57, 61, 13, 248, 707, 25, 146, 258, 185, 40, 92, 24, 25, 15, 38, 6, 23, 83, 127, 81, 139, 26, 615, 188, 26, 49, 149, 16, 110, 617, 29, 40, 47, 249, 130, 323, 46, 64, 33, 124, 439, 85, 10, 35, 151, 119, 131, 153, 156, 235, 128, 49, 308, 45, 160, 111, 7, 8, 54, 194, 21, 205, 10, 19, 57, 121, 329, 26, 133, 1, 25, 20, 7, 153, 22, 183, 140, 148, 312, 59, 32, 235, 58, 187, 193, 70, 35, 139, 39, 84, 107, 41, 26, 95, 66, 13, 3025, 96, 180, 31, 176, 63, 91, 188, 7, 59, 183, 249, 233, 69, 27, 115, 191, 23, 35, 60, 53, 324, 225, 166, 23, 137, 132, 34, 293, 63, 61, 281, 11, 274, 65, 47, 53, 95, 163, 34, 300, 10, 9, 70, 99, 101, 24, 84, 12, 18, 31, 135, 60, 93, 63, 36, 126, 52, 57, 127, 174, 64, 72, 73, 181, 81, 82, 55, 236, 6, 128, 53, 8, 54, 262, 201, 6, 59, 60, 85, 60, 67, 55, 100, 295, 73, 152, 103, 21, 101, 34, 21, 37, 45, 189, 330, 55, 18, 129, 105, 12, 88, 42, 235, 211, 73, 15, 119, 40, 928, 25, 91, 48, 80, 26, 57, 210, 8, 81, 55, 67, 124, 70, 16, 21, 357, 63, 89, 95, 232, 76, 9, 37, 123, 13, 26, 51, 98, 168, 8, 60, 5, 389, 301, 298, 127, 112, 115, 32, 30, 76, 29, 116, 38, 98, 55, 71, 99, 252, 154, 115, 35, 206, 122, 315, 157, 136, 70, 25, 236, 191, 20, 61, 127, 37, 38, 376, 23, 15, 67, 54, 61, 64, 110, 345, 92, 26, 21, 142, 242, 57, 55, 11, 18, 9, 290, 41, 24, 95, 16, 194, 32, 43, 131, 22, 99, 16, 57, 27, 116, 30, 34, 144, 39, 162, 341, 7, 65, 185, 9, 159, 20, 138, 155, 228, 90, 88, 87, 178, 160, 377, 370, 32, 48, 50, 38, 256, 168, 175, 30, 33, 116, 27, 55, 17, 89, 224, 67, 184, 34, 110, 57, 53, 67, 166, 8, 17, 292, 107, 48, 116, 42, 11, 16, 149, 203, 39, 31, 182, 28, 22, 7, 30, 66, 41, 264, 150, 64, 73, 97, 322, 38, 13, 151, 120, 66, 5, 14, 9, 5, 370, 73, 103, 354, 44, 208, 100, 22, 185, 129, 61, 222, 412, 153, 2913, 178, 99, 23, 50, 59, 172, 85, 176, 59, 85, 294, 421, 181, 538, 253, 75, 141, 43, 148, 104, 116, 14, 2, 103, 47, 20, 23, 164, 3, 79, 812, 265, 66, 327, 384, 177, 73, 466, 60, 22, 33, 75, 27, 16, 67, 85, 249, 81, 8, 158, 104, 91, 67, 67, 15, 297, 7, 77, 56, 161, 36, 38, 220, 291, 559, 32, 50, 9, 33, 61, 64, 41, 88, 146, 89, 131, 23, 109, 74, 299, 20, 137, 23, 24, 66, 42, 19, 31, 321, 98, 34, 238, 274, 477, 92, 106, 178, 48, 11, 201, 91, 128, 150, 29, 211, 165, 8, 140, 102, 159, 189, 86, 38, 53, 29, 18, 259, 11, 58, 90, 165, 43, 248, 35, 10, 94, 80, 56, 39, 190, 91, 166, 146, 335, 38, 279, 120, 146, 62, 202, 104, 183, 89, 123, 57, 107, 176, 194, 32, 29, 125, 300, 61, 117, 11, 9, 279, 9, 223, 35, 50, 235, 207, 3, 15, 334, 52, 274, 26, 46, 84, 111, 12, 33, 150, 128, 174, 102, 25, 50, 184, 88, 114, 45, 17, 10, 130, 181, 129, 31, 78, 149, 38, 34, 79, 62, 39, 11, 45, 273, 562, 14, 5, 97, 58, 339, 45, 62, 107, 125, 48, 10, 16, 34, 85, 996, 29, 60, 49, 168, 332, 302, 30, 72, 58, 100, 168, 85, 357, 18, 44, 177, 92, 41, 154, 13, 14, 882, 25, 300, 42, 99, 27, 45, 5, 434, 68, 57, 268, 86, 26, 122, 146, 371, 111, 292, 61, 78, 292, 87, 888, 181, 51, 76, 455, 189, 12, 12, 26, 69, 75, 50, 156, 24, 1009, 10, 48, 329, 418, 34, 141, 115, 119, 93, 4, 8, 234, 38, 36, 155, 162, 120, 28, 196, 100, 10, 101, 156, 280, 100, 61, 41, 60, 53, 82, 373, 58, 5, 306, 388, 63, 276, 144, 227, 88, 95, 6, 107, 152, 69, 343, 32, 423, 111, 5, 107, 8, 63, 79, 82, 187, 27, 153, 31, 11, 158, 95, 25, 144, 8, 3, 275, 19, 241, 66, 27, 34, 235, 24, 76, 180, 8, 245, 74, 3, 15, 61, 42, 355, 327, 79, 323, 70, 91, 30, 4, 146, 151, 17, 39, 45, 78, 59, 9, 55, 202, 148, 181, 109, 153, 206, 489, 2, 55, 60, 67, 96, 213, 12, 31, 186, 187, 50, 304, 313, 195, 253, 1000, 169, 61, 191, 136, 42, 187, 210, 102, 179, 39, 6, 72, 10, 97, 15, 67, 75, 186, 66, 113, 15, 17, 265, 323, 75, 40, 66, 87, 84, 30, 17, 60, 74, 109, 347, 524, 92, 8, 127, 81, 13, 97, 176, 141, 180, 62, 127, 232, 60, 92, 72, 48, 42, 15, 46, 140, 140, 177, 120, 104, 98, 28, 391, 100, 33, 192, 57, 180, 71, 21, 302, 53, 42, 38, 213, 390, 49, 184, 113, 34, 7, 55, 63, 150, 4, 251, 18, 39, 628, 122, 75, 11, 185, 66, 12, 99, 151, 115, 126, 74, 360, 98, 124, 22, 230, 49, 306, 96, 175, 398, 76, 41, 146, 299, 292, 70, 53, 54, 256, 81, 94, 14, 255, 8, 107, 25, 106, 84, 63, 122, 256, 134, 23, 7, 16, 263, 155, 6, 202, 143, 368, 294, 67, 19, 7, 66, 197, 67, 242, 44, 109, 145, 272, 170, 253, 91, 88, 254, 34, 142, 364, 166, 275, 76, 288, 700, 38, 25, 11, 18, 56, 78, 33, 15, 119, 128, 2, 196, 373, 339, 63, 121, 176, 18, 64, 56, 34, 84, 9, 42, 361, 43, 86, 15, 128, 313, 28, 66, 4, 78, 113, 90, 73, 34, 74, 17, 71, 174, 132, 11, 28, 52, 293, 52, 4, 230, 32, 85, 62, 195, 366, 41, 180, 8, 161, 248, 208, 62, 48, 84, 29, 56, 210, 156, 305, 147, 79, 63, 311, 256, 218, 42, 138, 97, 8, 70, 39, 7, 227, 17, 111, 119, 16, 68, 87, 89, 287, 41, 348, 109, 236, 298, 88, 45, 22, 47, 31, 5, 77, 12, 123, 61, 90, 198, 17, 462, 81, 43, 333, 89, 117, 57, 62, 222, 188, 114, 157, 187, 14, 181, 41, 131, 72, 6, 362, 103, 395, 250, 44, 20, 17, 33, 29, 86, 14, 97, 62, 239, 18, 64, 9, 138, 117, 188, 255, 39, 74, 271, 70, 111, 530, 481, 2, 80, 147, 28, 200, 27, 107, 3, 15, 463, 177, 105, 165, 7, 82, 65, 148, 88, 304, 103, 55, 5, 95, 83, 120, 163, 11, 232, 65, 205, 20, 909, 109, 63, 46, 91, 37, 69, 297, 308, 98, 71, 3, 348, 104, 181, 62, 131, 12, 7, 70, 265, 6, 90, 135, 23, 234, 55, 365, 181, 262, 100, 372, 108, 83, 48, 11, 68, 117, 5, 192, 36, 34, 96, 3, 6, 142, 373, 67, 201, 8, 23, 66, 138, 50, 117, 12, 8, 92, 45, 196, 90, 9, 101, 33, 75, 41, 94, 62, 25, 15, 240, 95, 113, 76, 211, 101, 54, 30, 179, 70, 109, 286, 63, 132, 37, 956, 292, 8, 285, 63, 183, 20, 11, 190, 173, 533, 264, 145, 359, 105, 288, 43, 56, 28, 64, 383, 56, 65, 116, 5, 59, 105, 54, 213, 331, 53, 63, 263, 12, 13, 229, 78, 154, 55, 58, 49, 265, 75, 105, 35, 182, 43, 113, 149, 142, 382, 22, 49, 69, 62, 43, 107, 47, 176, 139, 38, 131, 43, 85, 129, 205, 65, 40, 1013, 115, 113, 112, 60, 34, 299, 34, 234, 123, 27, 71, 118, 73, 172, 55, 73, 157, 137, 153, 88, 175, 129, 380, 76, 63, 24, 90, 68, 344, 249, 30, 480, 4, 96, 135, 56, 204, 127, 53, 123, 92, 181, 62, 166, 83, 110, 45, 262, 341, 20, 59, 64, 58, 170, 68, 43, 78, 138, 206, 184, 157, 40, 9, 34, 69, 74, 62, 94, 271, 35, 136, 82, 49, 203, 198, 83, 59, 230, 22, 22, 113, 186, 80, 99, 81, 76, 81, 120, 365, 240, 43, 696, 350, 21, 247, 88, 111, 202, 14, 134, 63, 118, 557, 140, 255, 97, 102, 101, 78, 79, 97, 111, 25, 68, 2, 24, 66, 3, 264, 54, 16, 52, 26, 916, 85, 148, 99, 32, 25, 94, 200, 544, 327, 98, 55, 19, 39, 268, 66, 148, 37, 83, 203, 80, 85, 50, 59, 112, 184, 118, 2, 86, 121, 205, 52, 71, 10, 40, 32, 57, 7, 50, 12, 139, 120, 572, 608, 171, 563, 118, 11, 76, 195, 115, 12, 43, 305, 89, 269, 12, 158, 50, 81, 10, 194, 124, 10, 27, 18, 176, 57, 113, 99, 328, 378, 173, 58, 49, 5, 114, 118, 45, 134, 73, 62, 16, 368, 10, 84, 7, 111, 139, 386, 89, 128, 282, 256, 12, 85, 55, 38, 151, 30, 71, 208, 93, 144, 49, 58, 141, 131, 136, 75, 102, 14, 71, 323, 185, 309, 139, 313, 86, 219, 27, 8, 162, 31, 108, 357, 20, 102, 141, 16, 28, 214, 59, 62, 57, 112, 190, 28, 262, 97, 209, 103, 37, 157, 48, 5, 30, 9, 26, 110, 219, 29, 91, 224, 222, 16, 240, 195, 103, 38, 57, 87, 18, 10, 19, 115, 127, 106, 61, 20, 49, 101, 63, 158, 95, 71, 120, 145, 140, 5, 9, 214, 31, 122, 185, 32, 17, 73, 4, 63, 34, 198, 178, 247, 270, 40, 70, 44, 59, 18, 209, 455, 81, 44, 162, 78, 6, 329, 45, 153, 382, 66, 63, 75, 54, 99, 383, 96, 249, 5, 269, 175, 6, 12, 17, 47, 194, 44, 79, 530, 23, 136, 177, 12, 19, 119, 182, 128, 670, 151, 102, 28, 45, 89, 149, 176, 60, 278, 331, 42, 234, 15, 85, 12, 19, 508, 245, 173, 48, 126, 58, 72, 10, 161, 79, 119, 67, 163, 73, 190, 274, 192, 10, 70, 104, 126, 41, 259, 68, 126, 16, 75, 259, 177, 2, 27, 20, 126, 369, 1, 292, 59, 89, 7, 10, 15, 56, 8, 101, 216, 240, 57, 212, 93, 175, 11, 14, 42, 86, 356, 59, 27, 287, 35, 123, 74, 14, 35, 58, 122, 116, 260, 76, 14, 29, 185, 203, 31, 96, 843, 15, 99, 59, 117, 220, 40, 82, 58, 40, 210, 51, 507, 54, 352, 33, 104, 194, 8, 65, 74, 53, 273, 75, 185, 13, 254, 16, 26, 57, 194, 35, 113, 137, 47, 4, 550, 408, 155, 8, 88, 41, 9, 13, 15, 73, 5, 253, 45, 4, 190, 121, 247, 178, 21, 138, 173, 59, 15, 12, 76, 149, 112, 56, 35, 142, 60, 77, 425, 128, 6, 16, 65, 54, 163, 51, 12, 74, 37, 751, 262, 76, 59, 17, 64, 87, 102, 79, 236, 10, 44, 61, 145, 280, 118, 100, 165, 47, 113, 70, 178, 520, 20, 17, 8, 180, 7, 71, 48, 26, 17, 39, 559, 92, 60, 37, 77, 26, 24, 64, 183, 145, 17, 105, 146, 689, 215, 199, 4, 35, 46, 12, 69, 63, 6, 189, 88, 42, 51, 148, 19, 291, 51, 224, 193, 229, 19, 7, 35, 148, 34, 108, 39, 97, 362, 184, 9, 77, 67, 103, 73, 83, 58, 25, 3, 18, 110, 350, 15, 51, 187, 758, 160, 91, 148, 23, 303, 81, 315, 32, 380, 148, 7, 40, 115, 87, 126, 59, 51, 87, 370, 54, 58, 9, 22, 48, 9, 69, 35, 692, 71, 84, 321, 5, 164, 334, 32, 371, 103, 166, 419, 363, 83, 13, 359, 716, 13, 235, 38, 239, 115, 83, 17, 10, 34, 84, 322, 67, 120, 355, 101, 18, 20, 39, 10, 62, 8, 79, 64, 171, 15, 64, 60, 343, 169, 47, 180, 86, 119, 158, 81, 113, 27, 722, 59, 323, 79, 215, 96, 60, 29, 156, 28, 13, 4, 114, 49, 163, 193, 121, 32, 87, 54, 224, 63, 149, 20, 448, 138, 238, 77, 2270, 19, 14, 33, 61, 4, 12, 236, 64, 99, 38, 299, 77, 144, 22, 240, 29, 178, 258, 26, 18, 32, 58, 31, 12, 242, 227, 113, 109, 247, 117, 67, 109, 83, 59, 12, 120, 221, 16, 10, 19, 70, 128, 10, 396, 42, 14, 118, 60, 171, 104, 15, 46, 17, 45, 52, 34, 59, 179, 433, 72, 113, 300, 27, 5, 60, 172, 39, 77, 174, 153, 103, 2, 10, 187, 1, 65, 33, 100, 81, 12, 14, 142, 235, 76, 146, 75, 132, 49, 47, 47, 376, 9, 7, 205, 209, 50, 19, 49, 75, 190, 315, 233, 352, 77, 324, 164, 16, 74, 60, 165, 23, 44, 152, 164, 92, 57, 114, 61, 51, 67, 52, 75, 343, 41, 343, 39, 56, 186, 86, 167, 53, 178, 8, 164, 58, 73, 121, 323, 71, 18, 8, 536, 299, 159, 91, 104, 196, 148, 127, 93, 35, 106, 49, 76, 13, 262, 160, 151, 139, 51, 213, 63, 10, 265, 56, 124, 112, 93, 56, 68, 61, 73, 125, 392, 60, 155, 146, 7, 27, 14, 102, 184, 80, 228, 842, 8, 60, 213, 82, 111, 94, 30, 79, 82, 262, 165, 77, 70, 3, 41, 253, 171, 35, 27, 303, 139, 133, 353, 116, 18, 298, 108, 59, 76, 305, 20, 293, 211, 375, 105, 17, 70, 77, 30, 318, 92, 50, 58, 68, 84, 161, 62, 1375, 82, 77, 140, 210, 125, 247, 88, 448, 90, 89, 17, 29, 92, 73, 77, 60, 47, 387, 177, 99, 28, 16, 225, 16, 297, 56, 53, 160, 154, 98, 221, 90, 75, 55, 47, 66, 79, 56, 113, 192, 22, 3, 115, 197, 7, 206, 89, 61, 117, 97, 7, 111, 101, 30, 125, 164, 109, 108, 89, 143, 33, 619, 8, 92, 100, 184, 54, 259, 185, 70, 230, 21, 146, 14, 8550, 80, 83, 179, 8, 52, 214, 115, 70, 136, 281, 9, 123, 108, 241, 183, 167, 326, 173, 5, 109, 22, 254, 105, 1, 17, 57, 233, 139, 38, 339, 87, 77, 71, 9, 210, 56, 94, 20, 49, 89, 236, 77, 115, 232, 3, 136, 98, 199, 77, 18, 184, 59, 286, 12, 238, 194, 26, 42, 58, 744, 330, 146, 22, 319, 120, 114, 210, 89, 64, 155, 12, 13, 43, 169, 285, 31, 108, 9, 34, 338, 32, 251, 79, 122, 97, 14, 14, 18, 10, 124, 11, 41, 81, 29, 22, 367, 108, 23, 141, 70, 319, 234, 8, 56, 266, 72, 58, 27, 12, 48, 22, 73, 75, 146, 137, 239, 7, 79, 354, 618, 94, 178, 62, 5, 46, 40, 70, 48, 4, 16, 128, 92, 35, 102, 12, 98, 60, 547, 57, 96, 117, 113, 90, 78, 42, 56, 91, 87, 58, 98, 211, 66, 267, 97, 129, 202, 132, 5, 223, 69, 21, 379, 123, 94, 38, 190, 49, 265, 114, 5, 58, 9, 113, 126, 88, 24, 39, 39, 2, 9, 71, 205, 72, 59, 24, 89, 45, 16, 204, 31, 136, 79, 235, 159, 126, 39, 57, 20, 92, 86, 35, 9, 268, 95, 69, 13, 120, 155, 27, 152, 6, 108, 23, 271, 4, 621, 163, 21, 30, 128, 193, 108, 255, 98, 136, 171, 62, 55, 7, 11, 125, 113, 233, 44, 10, 88, 215, 7, 149, 191, 128, 55, 41, 219, 148, 52, 103, 49, 28, 194, 120, 15, 65, 180, 56, 135, 236, 54, 295, 209, 226, 236, 198, 41, 89, 50, 50, 197, 46, 229, 6, 47, 20, 309, 262, 77, 197, 83, 4, 14, 50, 150, 12, 36, 135, 24, 26, 146, 105, 73, 13, 202, 87, 5, 9, 5, 189, 97, 339, 38, 64, 57, 120, 259, 39, 176, 341, 91, 830, 187, 68, 28, 19, 32, 62, 166, 354, 86, 13, 36, 119, 50, 165, 57, 113, 320, 92, 146, 421, 40, 179, 103, 90, 80, 107, 188, 23, 5, 196, 152, 84, 45, 62, 80, 17, 111, 110, 181, 46, 278, 18, 17, 124, 204, 50, 162, 41, 163, 70, 646, 226, 91, 74, 320, 336, 70, 184, 154, 119, 292, 170, 42, 24, 150, 63, 118, 56, 31, 34, 144, 195, 326, 51, 467, 344, 108, 183, 2, 90, 45, 40, 89, 281, 29, 40, 25, 121, 182, 120, 66, 44, 91, 473, 103, 116, 48, 67, 45, 51, 47, 193, 35, 152, 4, 24, 381, 28, 67, 119, 180, 36, 49, 166, 208, 31, 119, 67, 36, 4, 18, 249, 230, 189, 227, 270, 213, 83, 1958, 39, 43, 50, 91, 96, 66, 287, 14, 90, 100, 38, 59, 93, 818, 192, 521, 71, 28, 113, 105, 91, 121, 186, 156, 98, 87, 70, 304, 51, 53, 4, 111, 136, 16, 53, 97, 82, 8, 78, 290, 713, 7, 151, 36, 18, 56, 136, 56, 38, 155, 142, 74, 208, 148, 225, 5, 750, 56, 110, 258, 174, 58, 207, 158, 129, 66, 26, 34, 195, 2, 84, 29, 212, 195, 526, 68, 145, 146, 56, 175, 84, 30, 43, 96, 48, 64, 9, 43, 10, 205, 775, 97, 230, 41, 367, 206, 230, 83, 19, 223, 46, 128, 17, 365, 353, 142, 129, 371, 100, 101, 46, 119, 44, 33, 11, 98, 109, 24, 108, 53, 94, 221, 17, 331, 86, 119, 20, 98, 261, 327, 3, 51, 36, 65, 9, 37, 23, 42, 364, 90, 227, 8, 147, 37, 5, 68, 55, 172, 111, 236, 8, 23, 104, 33, 228, 3, 12, 57, 192, 7, 554, 7, 47, 21, 43, 36, 98, 14, 9, 160, 84, 205, 30, 98, 39, 172, 4, 108, 627, 147, 98, 80, 68, 28, 99, 133, 162, 375, 289, 54, 69, 14, 98, 214, 307, 50, 210, 30, 311, 493, 24, 111, 140, 46, 43, 63, 36, 522, 45, 170, 4, 541, 73, 786, 39, 158, 42, 57, 95, 96, 304, 160, 254, 17, 105, 35, 45, 73, 37, 74, 28, 76, 175, 74, 274, 132, 1, 179, 54, 126, 12, 330, 316, 159, 45, 41, 50, 58, 93, 103, 134, 4, 105, 60, 24, 52, 63, 149, 344, 242, 203, 176, 10, 376, 104, 179, 54, 65, 21, 11, 21, 122, 80, 281, 110, 31, 24, 114, 179, 14, 88, 125, 105, 327, 301, 96, 161, 30, 268, 73, 83, 208, 70, 55, 248, 2, 17, 130, 177, 60, 219, 32, 42, 124, 42, 209, 121, 45, 92, 78, 100, 122, 154, 133, 130, 49, 78, 39, 317, 89, 63, 16, 463, 106, 113, 141, 220, 13, 232, 180, 3, 60, 60, 112, 99, 69, 213, 20, 174, 102, 4, 190, 53, 20, 28, 63, 24, 10, 27, 95, 61, 167, 61, 52, 305, 75, 9, 44, 269, 156, 340, 39, 167, 94, 35, 111, 315, 37, 74, 66, 23, 7, 46, 252, 69, 221, 49, 13, 172, 181, 110, 305, 53, 72, 76, 54, 130, 18, 79, 213, 56, 158, 8, 21, 125, 98, 317, 8, 94, 294, 4, 82, 4, 294, 139, 47, 20, 91, 53, 342, 28, 852, 57, 6, 177, 384, 8, 102, 13, 212, 114, 15, 408, 2169, 108, 128, 91, 60, 15, 61, 50, 235, 4, 107, 76, 421, 117, 79, 38, 11, 71, 53, 80, 41, 62, 81, 18, 45, 15, 263, 99, 565, 41, 34, 54, 56, 50, 37, 131, 116, 124, 53, 210, 111, 72, 387, 11, 319, 56, 23, 45, 76, 161, 74, 104, 493, 175, 373, 6, 72, 143, 28, 93, 172, 93, 95, 148, 348, 95, 56, 4, 49, 72, 304, 46, 924, 32, 81, 53, 55, 32, 55, 4, 332, 103, 279, 35, 11, 162, 103, 17, 63, 12, 321, 156, 16, 11, 15, 7, 79, 119, 49, 36, 105, 11, 320, 167, 90, 162, 162, 108, 60, 273, 69, 21, 27, 314, 26, 1285, 185, 192, 253, 163, 82, 9, 118, 144, 34, 58, 149, 178, 42, 39, 92, 176, 70, 79, 54, 119, 100, 104, 257, 72, 30, 70, 191, 61, 171, 240, 4, 236, 161, 42, 317, 8, 17, 54, 200, 291, 24, 146, 83, 26, 42, 37, 30, 3, 84, 59, 324, 140, 47, 135, 9, 77, 27, 42, 42, 7, 49, 101, 75, 96, 104, 210, 38, 42, 128, 6, 85, 174, 232, 9, 69, 11, 159, 75, 43, 28, 135, 71, 752, 169, 104, 171, 242, 346, 247, 117, 355, 49, 50, 150, 43, 111, 168, 18, 343, 116, 142, 859, 50, 8, 56, 193, 121, 183, 42, 240, 43, 67, 903, 253, 18, 112, 85, 13, 260, 6, 202, 13, 3, 198, 117, 275, 71, 37, 71, 208, 7, 16, 435, 26, 106, 295, 92, 62, 83, 121, 305, 310, 115, 189, 89, 108, 83, 161, 38, 28, 34, 47, 68, 43, 109, 73, 163, 43, 71, 78, 182, 13, 87, 16, 166, 106, 63, 81, 65, 339, 147, 49, 68, 173, 384, 5, 52, 67, 281, 25, 29, 105, 104, 121, 77, 245, 88, 282, 321, 80, 146, 297, 303, 197, 181, 13, 64, 18, 17, 6, 77, 47, 94, 329, 204, 28, 34, 178, 83, 102, 88, 119, 21, 48, 8, 9, 572, 94, 88, 183, 17, 115, 48, 229, 89, 55, 22, 103, 94, 206, 55, 146, 15, 209, 48, 93, 360, 26, 40, 61, 131, 66, 175, 245, 58, 96, 59, 95, 107, 143, 227, 17, 62, 48, 22, 22, 409, 91, 32, 58, 16, 15, 44, 127, 272, 12, 915, 315, 50, 320, 137, 59, 100, 245, 146, 69, 20, 152, 45, 23, 45, 69, 3, 223, 244, 20, 372, 22, 5, 224, 72, 15, 247, 110, 126, 79, 248, 235, 245, 308, 94, 264, 18, 127, 99, 12, 30, 56, 164, 32, 112, 20, 82, 14, 32, 4, 55, 32, 91, 70, 49, 14, 108, 31, 32, 174, 46, 25, 242, 17, 69, 65, 37, 178, 107, 276, 25, 154, 24, 105, 148, 5, 33, 49, 107, 68, 127, 81, 119, 8, 68, 51, 43, 358, 217, 16, 16, 280, 63, 302, 185, 222, 9, 56, 218, 268, 80, 75, 138, 27, 39, 15, 54, 237, 327, 17, 37, 12, 128, 239, 34, 173, 64, 71, 43, 174, 108, 166, 137, 95, 15, 115, 19, 186, 80, 155, 29, 7, 41, 79, 102, 336, 296, 83, 112, 67, 75, 127, 9, 44, 9, 100, 6, 228, 8, 17, 31, 13, 116, 13, 118, 31, 146, 21, 135, 188, 120, 82, 182, 67, 230, 637, 39, 105, 122, 200, 276, 86, 70, 42, 146, 8, 25, 101, 65, 348, 27, 60, 101, 10, 16, 11, 17, 8, 79, 224, 111, 290, 276, 58, 242, 134, 15, 25, 113, 48, 146, 273, 143, 204, 260, 111, 84, 63, 17, 255, 41, 25, 238, 326, 17, 112, 36, 24, 318, 278, 324, 251, 69, 46, 41, 70, 42, 41, 46, 48, 118, 22, 18, 219, 320, 17, 308, 177, 11, 105, 18, 145, 15, 76, 15, 24, 140, 94, 50, 6, 72, 87, 18, 340, 53, 87, 188, 45, 3, 19, 71, 33, 256, 24, 190, 65, 8, 66, 108, 508, 53, 12, 130, 154, 143, 51, 40, 43, 69, 83, 198, 74, 87, 102, 136, 47, 140, 45, 134, 152, 106, 16, 62, 48, 676, 481, 7, 5, 193, 172, 115, 251, 54, 41, 34, 6, 129, 76, 46, 167, 71, 56, 7, 230, 133, 50, 65, 237, 23, 8, 41, 169, 127, 87, 47, 16, 65, 22, 296, 165, 35, 222, 8, 146, 333, 167, 88, 135, 203, 114, 456, 254, 359, 227, 81, 86, 146, 128, 247, 13, 140, 175, 46, 3, 111, 150, 102, 6, 201, 200, 50, 51, 284, 171, 97, 83, 117, 82, 66, 22, 167, 263, 30, 238, 153, 77, 26, 53, 209, 372, 135, 101, 52, 8, 279, 481, 62, 6, 163, 11, 23, 308, 265, 105, 63, 25, 139, 257, 6, 88, 352, 120, 107, 73, 349, 195, 406, 60, 137, 48, 142, 41, 185, 56, 6, 12, 43, 72, 212, 122, 118, 18, 86, 203, 93, 118, 5, 223, 166, 20, 14, 317, 347, 148, 105, 20, 94, 61, 395, 164, 13, 153, 83, 153, 28, 101, 176, 91, 20, 353, 268, 65, 2082, 233, 143, 39, 3035, 106, 69, 166, 249, 169, 48, 72, 53, 289, 111, 257, 348, 28, 60, 14, 494, 8, 13, 10, 170, 439, 241, 79, 64, 299, 7, 30, 223, 80, 135, 125, 106, 4, 1, 63, 376, 12, 98, 53, 5, 308, 61, 198, 69, 331, 394, 161, 229, 20, 98, 345, 37, 111, 139, 195, 22, 118, 715, 42, 266, 15, 73, 44, 316, 462, 21, 238, 22, 18, 121, 42, 118, 47, 61, 9, 44, 150, 171, 170, 26, 131, 25, 100, 130, 86, 27, 80, 318, 171, 50, 13, 7, 5, 81, 15, 78, 117, 14, 95, 118, 69, 217, 49, 100, 120, 138, 56, 3, 404, 338, 90, 166, 90, 70, 151, 83, 185, 430, 8, 10, 8, 5, 158, 125, 275, 178, 72, 98, 104, 29, 58, 69, 176, 342, 41, 130, 143, 971, 54, 203, 160, 43, 27, 144, 5, 297, 66, 8, 4, 62, 74, 19, 51, 184, 133, 122, 53, 13, 82, 358, 46, 60, 70, 113, 51, 94, 43, 61, 351, 65, 165, 174, 57, 267, 73, 372, 169, 202, 215, 44, 62, 113, 267, 8, 117, 64, 244, 89, 69, 128, 91, 187, 168, 186, 103, 176, 134, 2, 108, 66, 145, 224, 19, 105, 61, 8, 175, 37, 130, 295, 73, 6, 57, 20, 204, 38, 170, 109, 63, 65, 242, 70, 237, 156, 204, 111, 91, 41, 164, 68, 30, 357, 6, 246, 234, 30, 131, 36, 8, 33, 134, 106, 86, 8, 12, 9, 50, 245, 8, 97, 9, 107, 32, 313, 126, 18, 18, 112, 97, 14, 189, 137, 76, 22, 297, 92, 42, 29, 99, 93, 482, 34, 149, 17, 145, 121, 113, 335, 335, 145, 117, 303, 122, 121, 5, 14, 185, 155, 156, 42, 176, 893, 265, 89, 47, 67, 110, 329, 32, 288, 124, 71, 247, 50, 197, 125, 261, 91, 119, 372, 16, 97, 81, 90, 123, 48, 50, 96, 41, 3, 424, 106, 191, 46, 7, 133, 48, 155, 6, 154, 6, 73, 340, 299, 69, 34, 54, 24, 63, 50, 80, 71, 12, 73, 262, 20, 58, 348, 63, 191, 66, 252, 134, 84, 5, 95, 27, 140, 83, 247, 141, 30, 29, 93, 19, 20, 79, 87, 164, 32, 100, 303, 61, 64, 37, 17, 266, 14, 96, 138, 183, 60, 80, 146, 118, 94, 63, 5, 131, 11, 2, 4, 300, 240, 45, 32, 167, 27, 296, 17, 193, 163, 92, 185, 35, 309, 104, 19, 37, 168, 14, 125, 176, 77, 26, 175, 73, 47, 62, 388, 12, 201, 10, 346, 356, 55, 143, 21, 346, 8, 95, 91, 108, 502, 29, 327, 50, 66, 19, 79, 19, 163, 138, 64, 40, 18, 128, 4, 173, 8, 182, 118, 360, 184, 61, 153, 79, 79, 274, 74, 436, 87, 113, 150, 186, 232, 232, 67, 163, 6, 179, 14, 308, 7, 84, 82, 26, 10, 323, 79, 67, 58, 142, 101, 44, 24, 54, 149, 38, 28, 57, 102, 16, 45, 8, 148, 14, 3, 59, 617, 25, 96, 75, 88, 84, 121, 196, 39, 83, 190, 268, 359, 169, 192, 12, 205, 22, 13, 138, 41, 87, 236, 22, 39, 168, 101, 116, 187, 12, 371, 218, 100, 65, 71, 182, 62, 91, 198, 331, 56, 14, 85, 238, 126, 214, 117, 123, 87, 81, 30, 131, 45, 262, 50, 33, 72, 8, 94, 56, 191, 60, 21, 84, 147, 14, 29, 48, 104, 103, 42, 123, 9, 274, 84, 181, 40, 42, 86, 15, 133, 55, 49, 46, 143, 78, 61, 9, 26, 9, 94, 259, 213, 4, 196, 57, 92, 21, 278, 284, 375, 53, 20, 86, 77, 29, 231, 7, 605, 11, 114, 7, 104, 100, 274, 10, 97, 30, 64, 6, 125, 29, 44, 39, 24, 108, 169, 48, 106, 75, 89, 12, 171, 87, 78, 1, 65, 136, 151, 105, 57, 138, 181, 132, 64, 87, 20, 58, 125, 357, 8, 17, 20, 47, 449, 70, 151, 144, 4, 39, 106, 291, 348, 45, 57, 287, 73, 423, 72, 51, 161, 204, 226, 185, 111, 86, 8, 427, 191, 257, 7, 177, 164, 13, 209, 44, 34, 218, 27, 56, 69, 277, 72, 864, 15, 29, 163, 84, 19, 108, 90, 36, 45, 16, 347, 27, 70, 57, 395, 349, 57, 32, 86, 54, 11, 89, 262, 387, 239, 973, 64, 22, 226, 153, 178, 188, 159, 56, 346, 65, 5, 227, 281, 136, 376, 42, 157, 10, 269, 70, 40, 104, 238, 306, 2, 187, 90, 114, 218, 127, 86, 337, 305, 39, 77, 33, 244, 189, 12, 154, 69, 369, 55, 138, 195, 80, 5, 14, 73, 186, 93, 79, 297, 102, 54, 51, 11, 211, 147, 6, 168, 264, 187, 257, 55, 268, 18, 179, 37, 93, 285, 9, 206, 96, 261, 202, 27, 45, 72, 203, 11, 120, 94, 392, 74, 25, 4, 14, 506, 11, 23, 277, 7, 51, 34, 36, 195, 124, 117, 152, 77, 80, 65, 5, 86, 162, 118, 35, 94, 506, 13, 63, 9, 487, 88, 124, 176, 36, 9, 212, 8, 162, 75, 75, 83, 42, 462, 36, 33, 121, 64, 260, 601, 5, 117, 127, 486, 107, 63, 14, 27, 188, 141, 331, 77, 13, 22, 113, 139, 84, 10, 131, 110, 19, 7, 80, 641, 65, 299, 146, 184, 93, 106, 113, 26, 312, 11, 87, 44, 5, 4, 121, 103, 305, 106, 130, 124, 189, 8, 41, 183, 222, 69, 312, 20, 23, 22, 87, 17, 82, 416, 78, 108, 36, 181, 30, 278, 106, 42, 4, 210, 567, 1, 148, 49, 76, 146, 73, 208, 23, 63, 9, 30, 139, 31, 316, 6, 760, 115, 91, 24, 167, 308, 11, 82, 38, 67, 262, 130, 44, 7, 190, 178, 788, 236, 251, 12, 115, 49, 45, 141, 5, 189, 182, 160, 80, 29, 106, 111, 75, 284, 254, 134, 57, 78, 295, 15, 95, 303, 176, 140, 65, 259, 20, 25, 38, 238, 215, 170, 171, 14, 157, 301, 36, 241, 16, 130, 325, 20, 282, 11, 60, 54, 162, 75, 129, 8, 13, 294, 130, 383, 9, 48, 4, 55, 151, 4, 77, 38, 92, 117, 85, 35, 64, 91, 34, 76, 76, 12, 25, 25, 12, 49, 66, 316, 67, 14, 251, 34, 89, 173, 132, 79, 27, 222, 289, 233, 212, 277, 154, 147, 347, 63, 16, 87, 48, 87, 91, 540, 268, 16, 57, 199, 43, 156, 18, 179, 150, 72, 364, 28, 19, 156, 56, 190, 42, 184, 252, 199, 360, 32, 90, 137, 52, 11, 98, 18, 69, 47, 24, 44, 105, 85, 5, 77, 19, 85, 79, 3, 23, 131, 68, 115, 254, 157, 94, 16, 83, 321, 24, 73, 232, 21, 84, 164, 197, 102, 29, 44, 10, 173, 94, 6, 291, 59, 53, 217, 297, 123, 101, 72, 269, 8, 78, 152, 180, 248, 222, 58, 111, 18, 81, 34, 83, 160, 8, 88, 100, 286, 95, 83, 29, 100, 73, 20, 282, 76, 171, 162, 814, 232, 171, 61, 153, 21, 30, 28, 185, 108, 20, 52, 7, 122, 83, 174, 180, 47, 13, 7, 37, 238, 42, 347, 46, 248, 140, 56, 121, 102, 40, 81, 586, 9, 24, 103, 40, 113, 36, 188, 107, 99, 86, 215, 361, 74, 9, 539, 43, 45, 234, 239, 18, 64, 186, 7, 17, 105, 147, 29, 2, 98, 355, 89, 21, 11, 70, 16, 76, 99, 93, 213, 206, 58, 83, 77, 219, 24, 43, 263, 171, 107, 13, 303, 147, 170, 48, 100, 19, 88, 37, 68, 23, 93, 27, 181, 333, 246, 22, 3, 293, 228, 27, 34, 120, 7, 5, 159, 98, 91, 69, 28, 60, 65, 104, 53, 66, 26, 94, 64, 287, 167, 61, 28, 115, 52, 158, 125, 131, 305, 29, 42, 219, 201, 32, 3, 78, 14, 134, 45, 419, 111, 142, 159, 41, 10, 178, 360, 4, 365, 18, 174, 92, 352, 129, 39, 65, 639, 15, 399, 68, 12, 40, 56, 13, 13, 232, 69, 36, 160, 5, 138, 14, 8, 161, 86, 376, 7, 279, 73, 76, 341, 24, 321, 36, 95, 29, 74, 124, 172, 295, 60, 41, 63, 22, 170, 30, 43, 20, 69, 61, 200, 18, 5, 12, 7, 32, 80, 24, 114, 344, 43, 102, 25, 290, 543, 159, 68, 46, 322, 114, 8, 49, 61, 13, 100, 89, 5, 266, 73, 312, 177, 179, 46, 122, 16, 85, 94, 76, 6, 66, 17, 96, 59, 298, 15, 313, 175, 150, 213, 48, 29, 270, 12, 44, 60, 78, 79, 345, 353, 79, 35, 134, 27, 42, 97, 3, 55, 79, 25, 76, 8, 6, 277, 192, 59, 62, 44, 174, 251, 50, 22, 378, 163, 77, 23, 28, 62, 181, 100, 266, 300, 97, 14, 185, 55, 241, 12, 131, 44, 32, 202, 41, 66, 100, 100, 90, 17, 112, 67, 180, 41, 140, 43, 36, 129, 874, 251, 105, 18, 155, 319, 41, 52, 66, 62, 179, 9, 48, 7, 175, 166, 34, 50, 310, 69, 90, 166, 113, 88, 343, 53, 23, 82, 28, 10, 9, 614, 16, 543, 142, 150, 141, 74, 59, 150, 122, 485, 179, 44, 85, 187, 93, 151, 44, 23, 76, 81, 128, 1583, 170, 144, 140, 132, 132, 70, 282, 70, 24, 9, 291, 139, 422, 61, 35, 38, 11, 97, 29, 18, 127, 92, 96, 14, 79, 4, 31, 45, 9, 220, 50, 100, 3, 17, 35, 35, 94, 334, 50, 81, 303, 257, 204, 101, 34, 56, 90, 116, 26, 40, 25, 38, 90, 36, 12, 121, 83, 81, 134, 16, 82, 61, 196, 49, 88, 20, 216, 121, 32, 465, 183, 74, 97, 57, 252, 265, 125, 209, 123, 10, 296, 62, 170, 136, 92, 133, 221, 38, 129, 371, 107, 194, 172, 100, 143, 49, 337, 12, 155, 160, 170, 16, 152, 60, 105, 62, 101, 106, 34, 64, 296, 10, 40, 180, 62, 342, 259, 15, 243, 251, 14, 54, 55, 13, 91, 76, 181, 12, 16, 50, 13, 224, 70, 356, 83, 8, 70, 64, 187, 72, 80, 37, 77, 76, 233, 64, 228, 210, 61, 97, 129, 42, 159, 91, 4, 200, 222, 17, 36, 13, 123, 95, 216, 5, 391, 42, 149, 73, 91, 55, 197, 31, 155, 144, 145, 7, 202, 21, 108, 47, 196, 16, 5, 5, 818, 12, 71, 23, 378, 195, 87, 790, 233, 85, 347, 324, 54, 10, 44, 52, 14, 124, 98, 84, 201, 67, 130, 86, 113, 28, 27, 76, 31, 184, 159, 23, 6, 49, 23, 366, 627, 320, 92, 79, 332, 88, 39, 267, 605, 119, 356, 124, 42, 44, 73, 56, 171, 9, 227, 67, 123, 14, 10, 95, 42, 38, 185, 48, 58, 185, 29, 3, 531, 362, 10, 259, 119, 52, 177, 97, 63, 239, 368, 247, 68, 20, 148, 299, 33, 94, 11, 72, 312, 31, 26, 178, 7, 9, 153, 109, 267, 110, 77, 279, 23, 61, 14, 41, 94, 375, 194, 143, 6, 23, 4, 277, 246, 104, 153, 57, 177, 28, 51, 9, 256, 95, 7, 9, 101, 29, 141, 88, 75, 53, 489, 297, 390, 163, 30, 349, 42, 72, 16, 192, 259, 22, 234, 199, 137, 120, 353, 66, 47, 301, 186, 190, 122, 58, 279, 86, 32, 72, 57, 47, 124, 163, 69, 169, 19, 229, 30, 181, 105, 441, 125, 124, 107, 98, 17, 14, 100, 47, 11, 103, 15, 118, 82, 14, 14, 202, 22, 54, 33, 1090, 188, 43, 81, 240, 164, 139, 93, 26, 252, 40, 12, 711, 27, 160, 71, 41, 146, 5, 413, 95, 85, 65, 194, 192, 75, 60, 102, 88, 56, 22, 113, 16, 168, 145, 98, 204, 682, 95, 74, 144, 107, 642, 10, 134, 49, 36, 167, 24, 96, 228, 191, 214, 499, 185, 53, 29, 11, 8, 208, 62, 253, 123, 345, 52, 46, 88, 269, 81, 10, 152, 14, 21, 98, 65, 232, 146, 86, 30, 257, 48, 199, 15, 142, 15, 305, 13, 202, 166, 143, 19, 259, 26, 43, 6, 53, 370, 147, 116, 458, 11, 135, 114, 104, 34, 20, 19, 187, 109, 40, 40, 91, 80, 52, 197, 233, 305, 7, 257, 94, 65, 130, 5, 256, 3, 169, 144, 17, 123, 128, 201, 353, 142, 119, 132, 25, 106, 49, 68, 69, 69, 7, 541, 7, 311, 26, 121, 28, 177, 65, 19, 58, 255, 332, 147, 211, 147, 339, 147, 136, 180, 324, 29, 8, 26, 21, 66, 54, 110, 492, 67, 128, 59, 81, 90, 193, 147, 94, 152, 272, 143, 9, 3, 355, 73, 111, 88, 130, 77, 179, 77, 218, 5, 81, 81, 90, 52, 16, 61, 62, 81, 454, 102, 207, 66, 37, 51, 70, 100, 128, 88, 132, 256, 439, 96, 93, 55, 36, 353, 66, 143, 266, 215, 88, 53, 343, 820, 8, 70, 108, 17, 141, 756, 41, 52, 19, 30, 791, 163, 54, 1315, 149, 226, 51, 176, 349, 12, 253, 9, 221, 36, 8, 10, 219, 557, 36, 174, 71, 107, 59, 151, 70, 110, 56, 33, 106, 116, 13, 184, 13, 86, 47, 9, 58, 97, 160, 98, 16, 9, 167, 53, 273, 34, 15, 126, 42, 111, 5, 296, 15, 236, 36, 35, 98, 145, 76, 118, 319, 42, 87, 346, 8, 43, 15, 27, 91, 60, 64, 23, 48, 377, 7, 80, 142, 132, 140, 136, 75, 1325, 25, 290, 117, 59, 115, 245, 18, 86, 131, 47, 100, 198, 98, 88, 210, 78, 34, 32, 54, 88, 130, 138, 59, 228, 145, 37, 138, 498, 72, 68, 57, 52, 6, 153, 345, 124, 197, 63, 100, 43, 70, 65, 5, 111, 180, 194, 1066, 90, 1334, 42, 15, 12, 100, 89, 45, 25, 385, 65, 101, 55, 27, 35, 43, 85, 93, 297, 241, 55, 176, 252, 82, 129, 109, 142, 254, 78, 163, 102, 102, 22, 99, 115, 209, 21, 75, 187, 8, 226, 150, 45, 186, 93, 643, 46, 105, 28, 107, 166, 190, 49, 224, 13, 38, 318, 17, 313, 93, 6, 64, 138, 76, 528, 243, 5, 93, 744, 185, 27, 123, 1999, 91, 82, 62, 257, 187, 109, 746, 112, 50, 153, 185, 5, 301, 152, 91, 84, 248, 282, 212, 374, 79, 48, 440, 378, 475, 95, 237, 107, 103, 39, 57, 56, 116, 409, 120, 34, 10, 217, 69, 105, 59, 108, 168, 157, 375, 180, 67, 41, 160, 106, 120, 27, 82, 34, 38, 38, 22, 18, 141, 123, 453, 24, 209, 6, 70, 50, 82, 101, 16, 28, 40, 102, 48, 57, 149, 132, 91, 28, 83, 215, 252, 116, 10, 117, 285, 83, 78, 1, 48, 123, 40, 24, 140, 96, 185, 64, 130, 199, 338, 11, 85, 133, 81, 367, 12, 138, 32, 127, 248, 3, 661, 33, 23, 42, 48, 124, 158, 166, 150, 19, 69, 96, 152, 219, 169, 97, 140, 155, 28, 131, 119, 206, 216, 105, 105, 284, 114, 8, 117, 56, 58, 230, 350, 38, 60, 92, 152, 61, 161, 6, 9, 176, 117, 10, 228, 142, 91, 87, 10, 262, 292, 94, 288, 279, 187, 104, 40, 56, 67, 20, 3, 4, 80, 13, 38, 177, 134, 82, 54, 146, 79, 42, 65, 292, 108, 378, 128, 44, 9, 381, 297, 88, 97, 223, 111, 114, 30, 120, 228, 51, 267, 175, 7, 295, 129, 147, 211, 77, 6, 305, 31, 179, 34, 176, 8, 221, 50, 65, 65, 61, 31, 127, 53, 66, 54, 185, 65, 41, 320, 93, 315, 5, 221, 210, 54, 32, 310, 40, 153, 36, 108, 135, 89, 26, 157, 359, 27, 224, 118, 167, 164, 239, 156, 78, 120, 274, 7, 4, 28, 415, 38, 48, 116, 35, 115, 10, 38, 97, 37, 9, 169, 256, 106, 6, 227, 236, 6, 381, 68, 112, 331, 129, 51, 44, 64, 226, 142, 140, 236, 313, 22, 6, 9, 23, 32, 162, 29, 55, 9, 80, 159, 218, 66, 24, 359, 50, 24, 122, 97, 52, 137, 278, 128, 6, 134, 113, 52, 97, 17, 81, 3, 174, 11, 137, 69, 136, 120, 172, 212, 13, 878, 9, 65, 178, 172, 100, 53, 214, 339, 62, 81, 199, 121, 22, 18, 2, 8, 66, 14, 169, 102, 209, 73, 222, 26, 206, 16, 70, 304, 39, 139, 123, 276, 267, 79, 5, 186, 315, 15, 168, 105, 107, 398, 10, 138, 18, 33, 115, 160, 156, 69, 38, 78, 94, 16, 230, 233, 459, 11, 315, 93, 37, 123, 86, 154, 77, 127, 30, 48, 257, 71, 10, 182, 150, 249, 157, 65, 76, 6, 40, 194, 63, 360, 385, 46, 105, 19, 71, 259, 179, 56, 142, 81, 66, 140, 21, 34, 111, 185, 72, 18, 26, 83, 10, 113, 87, 278, 122, 181, 28, 311, 269, 313, 213, 36, 288, 79, 111, 157, 302, 86, 58, 104, 141, 13, 115, 26, 475, 116, 44, 36, 103, 80, 91, 18, 141, 81, 85, 43, 222, 117, 150, 83, 99, 98, 27, 232, 11, 32, 22, 161, 31, 278, 32, 99, 59, 178, 194, 44, 79, 8, 24, 15, 86, 160, 335, 11, 180, 112, 223, 250, 86, 49, 68, 40, 295, 291, 18, 44, 214, 286, 58, 11, 173, 320, 328, 47, 270, 226, 12, 103, 63, 162, 20, 5, 86, 7, 752, 13, 92, 89, 65, 113, 28, 176, 86, 14, 96, 135, 76, 23, 27, 134, 146, 47, 47, 259, 100, 7, 82, 47, 10, 336, 86, 46, 55, 14, 29, 58, 46, 66, 125, 43, 133, 128, 66, 81, 309, 1241, 191, 94, 96, 132, 120, 46, 132, 82, 34, 17, 213, 10, 88, 281, 60, 56, 76, 54, 16, 147, 73, 18, 3, 64, 150, 2, 180, 21, 328, 140, 2, 85, 165, 107, 165, 110, 65, 35, 66, 60, 214, 44, 146, 59, 303, 38, 7, 141, 197, 60, 99, 203, 87, 315, 96, 130, 85, 154, 211, 15, 46, 48, 64, 43, 102, 56, 18, 13, 209, 372, 236, 42, 57, 70, 140, 12, 62, 302, 212, 132, 59, 69, 93, 169, 71, 154, 73, 402, 65, 138, 123, 281, 208, 70, 84, 57, 215, 257, 48, 111, 224, 303, 9, 216, 100, 59, 264, 4, 107, 164, 18, 215, 17, 93, 8, 173, 251, 26, 301, 14, 116, 62, 80, 336, 41, 14, 69, 130, 389, 169, 26, 45, 65, 67, 313, 11, 75, 71, 20, 74, 17, 91, 16, 49, 128, 97, 10, 27, 249, 67, 183, 92, 8, 37, 84, 21, 23, 85, 36, 2, 85, 188, 48, 135, 76, 24, 89, 82, 51, 293, 11, 159, 123, 122, 42, 159, 120, 61, 53, 222, 6, 20, 9, 37, 15, 48, 154, 90, 95, 50, 51, 40, 230, 66, 201, 37, 20, 12, 144, 270, 138, 253, 117, 54, 291, 359, 79, 36, 14, 26, 201, 178, 12, 26, 139, 16, 131, 525, 37, 322, 269, 223, 130, 106, 76, 220, 14, 124, 87, 353, 255, 46, 3, 48, 100, 68, 70, 19, 137, 103, 20, 101, 138, 20, 13, 45, 88, 184, 207, 75, 64, 149, 6, 187, 30, 60, 26, 44, 22, 144, 21, 73, 158, 138, 151, 3, 242, 238, 121, 15, 40, 49, 9, 6, 11, 205, 119, 36, 60, 61, 26, 214, 107, 232, 73, 64, 100, 23, 366, 81, 178, 27, 63, 39, 424, 79, 140, 22, 112, 10, 89, 66, 7, 92, 98, 177, 55, 163, 92, 18, 9, 8, 41, 8, 56, 153, 122, 280, 198, 34, 90, 308, 277, 128, 244, 11, 33, 40, 28, 384, 9, 112, 193, 73, 36, 88, 27, 176, 67, 114, 37, 75, 223, 221, 64, 38, 84, 38, 13, 100, 134, 227, 43, 65, 884, 26, 37, 511, 66, 13, 84, 11, 26, 115, 107, 336, 1432, 22, 213, 74, 321, 114, 231, 102, 28, 107, 119, 93, 150, 139, 103, 188, 283, 115, 158, 147, 52, 253, 122, 76, 29, 142, 20, 59, 27, 334, 12, 182, 12, 19, 85, 79, 93, 62, 79, 100, 213, 87, 133, 126, 94, 86, 36, 67, 7, 64, 19, 16, 27, 34, 56, 252, 634, 121, 73, 162, 1020, 30, 45, 95, 10, 61, 62, 43, 86, 238, 222, 51, 174, 290, 227, 3, 135, 289, 63, 94, 621, 83, 207, 70, 40, 71, 125, 98, 16, 60, 50, 61, 363, 60, 55, 53, 298, 212, 258, 101, 172, 243, 30, 76, 269, 52, 116, 19, 119, 123, 81, 36, 53, 50, 238, 53, 5, 165, 141, 103, 130, 64, 26, 111, 530, 121, 64, 42, 172, 30, 20, 23, 144, 59, 76, 118, 245, 92, 131, 7, 162, 73, 57, 99, 115, 54, 40, 57, 11, 371, 73, 210, 37, 100, 14, 114, 49, 34, 352, 57, 119, 52, 149, 82, 21, 302, 40, 10, 51, 134, 314, 253, 35, 101, 284, 8, 57, 27, 29, 42, 266, 274, 205, 143, 58, 58, 103, 211, 22, 700, 150, 157, 28, 450, 58, 32, 91, 132, 61, 8, 54, 20, 76, 9, 6, 141, 35, 118, 196, 247, 36, 103, 63, 194, 911, 13, 336, 20, 797, 377, 68, 187, 97, 12, 137, 229, 96, 45, 49, 734, 15, 78, 94, 33, 311, 330, 23, 164, 117, 32, 77, 40, 69, 219, 104, 23, 17, 16, 71, 252, 5, 218, 62, 116, 91, 150, 77, 9, 76, 91, 242, 13, 122, 26, 368, 92, 156, 24, 7, 178, 147, 26, 35, 117, 28, 77, 143, 448, 67, 103, 329, 352, 313, 104, 140, 37, 354, 20, 457, 75, 112, 267, 568, 4, 49, 146, 142, 24, 30, 91, 123, 130, 103, 4, 81, 31, 63, 51, 114, 99, 130, 56, 101, 85, 7, 120, 165, 59, 254, 201, 94, 162, 16, 112, 61, 34, 18, 234, 94, 179, 14, 158, 354, 224, 169, 127, 10, 352, 165, 42, 276, 115, 21, 300, 144, 102, 110, 282, 9, 246, 237, 459, 62, 97, 383, 13, 49, 158, 32, 16, 81, 124, 158, 74, 163, 150, 141, 24, 141, 110, 334, 45, 15, 290, 37, 114, 88, 349, 198, 318, 240, 129, 2, 70, 10, 69, 10, 25, 173, 55, 179, 12, 20, 57, 140, 4, 208, 143, 214, 75, 108, 225, 133, 67, 7, 41, 27, 45, 643, 152, 14, 26, 7, 32, 224, 408, 64, 16, 113, 86, 146, 123, 167, 144, 31, 220, 219, 15, 21, 251, 109, 229, 163, 96, 45, 28, 59, 646, 35, 24, 83, 73, 18, 87, 25, 137, 11, 23, 150, 18, 50, 157, 172, 96, 59, 122, 92, 67, 190, 123, 98, 207, 41, 100, 239, 24, 152, 8, 63, 73, 359, 310, 4, 66, 468, 140, 234, 74, 25, 26, 100, 35, 108, 88, 23, 30, 54, 67, 84, 79, 314, 277, 80, 44, 39, 251, 397, 28, 18, 42, 12, 142, 364, 7, 88, 224, 111, 116, 40, 95, 301, 4, 10, 4, 149, 100, 130, 4, 50, 73, 128, 52, 26, 11, 74, 314, 8, 56, 95, 111, 334, 113, 21, 316, 69, 31, 91, 294, 199, 300, 192, 161, 10, 80, 89, 81, 307, 151, 34, 150, 8, 27, 129, 186, 99, 4, 76, 70, 8, 23, 100, 115, 95, 51, 1740, 8, 116, 5, 73, 3, 12, 52, 300, 105, 50, 81, 83, 2, 122, 6, 13, 44, 76, 310, 274, 204, 135, 80, 155, 400, 87, 83, 235, 17, 896, 130, 6, 38, 127, 10, 21, 141, 92, 21, 95, 27, 47, 483, 237, 93, 20, 179, 227, 78, 38, 37, 333, 60, 91, 89, 331, 25, 76, 14, 186, 117, 107, 146, 3, 290, 6, 150, 140, 167, 18, 14, 26, 134, 17, 114, 61, 34, 362, 78, 515, 112, 195, 207, 28, 24, 53, 43, 14, 1144, 410, 37, 16, 45, 43, 214, 75, 172, 45, 286, 15, 50, 94, 42, 48, 216, 22, 230, 17, 144, 161, 92, 4, 10, 372, 47, 278, 88, 23, 497, 31, 346, 6, 198, 12, 68, 71, 90, 214, 249, 104, 205, 162, 4, 254, 52, 56, 40, 448, 109, 329, 122, 70, 259, 175, 195, 68, 119, 232, 301, 27, 66, 85, 165, 136, 26, 85, 158, 391, 57, 83, 33, 486, 63, 11, 146, 35, 84, 25, 129, 78, 125, 27, 75, 40, 191, 133, 19, 99, 555, 33, 11, 106, 333, 137, 163, 232, 86, 17, 68, 126, 71, 114, 99, 68, 46, 139, 75, 6, 262, 100, 110, 90, 14, 66, 37, 327, 83, 19, 275, 118, 150, 66, 53, 10, 29, 141, 250, 84, 92, 300, 132, 240, 132, 223, 115, 192, 97, 27, 121, 259, 163, 60, 57, 13, 51, 4, 33, 73, 6, 50, 213, 120, 71, 56, 84, 182, 52, 74, 204, 64, 282, 119, 216, 148, 77, 283, 754, 97, 159, 156, 46, 56, 155, 13, 27, 19, 88, 138, 25, 196, 86, 116, 117, 11, 289, 509, 66, 125, 170, 145, 92, 906, 201, 81, 145, 57, 85, 65, 16, 69, 141, 34, 109, 166, 45, 79, 33, 12, 166, 88, 222, 605, 231, 16, 127, 120, 228, 354, 171, 300, 89, 151, 160, 55, 85, 67, 14, 219, 12, 201, 194, 80, 106, 136, 46, 284, 20, 57, 106, 58, 167, 8, 46, 148, 238, 69, 254, 189, 309, 84, 35, 93, 674, 11, 240, 13, 116, 186, 195, 67, 42, 120, 58, 90, 185, 9, 201, 276, 365, 224, 535, 380, 2, 179, 30, 91, 66, 83, 377, 6, 152, 84, 80, 65, 30, 1100, 93, 53, 131, 13, 59, 16, 22, 186, 20, 27, 4, 56, 53, 36, 237, 54, 141, 49, 174, 64, 9, 12, 67, 56, 35, 309, 499, 169, 29, 143, 137, 153, 90, 124, 492, 67, 798, 373, 89, 204, 69, 31, 159, 65, 15, 249, 152, 257, 333, 306, 44, 120, 12, 161, 78, 72, 46, 87, 54, 168, 132, 28, 35, 207, 109, 312, 50, 116, 89, 1050, 69, 218, 67, 227, 285, 71, 38, 245, 72, 288, 347, 190, 147, 24, 62, 6, 68, 88, 62, 63, 8, 21, 1011, 9, 146, 110, 137, 661, 93, 202, 157, 97, 136, 154, 25, 205, 267, 26, 113, 11, 72, 19, 91, 43, 84, 50, 107, 42, 125, 124, 366, 149, 240, 36, 39, 31, 130, 153, 102, 375, 7, 76, 55, 42, 2, 60, 162, 34, 32, 157, 5, 18, 15, 8, 159, 192, 12, 43, 116, 117, 402, 25, 163, 7, 207, 37, 363, 86, 33, 236, 91, 202, 34, 338, 116, 356, 11, 124, 119, 10, 8, 97, 5, 297, 146, 150, 56, 145, 89, 290, 33, 11, 79, 77, 139, 281, 85, 40, 104, 103, 97, 80, 37, 29, 44, 177, 49, 157, 206, 28, 42, 367, 229, 78, 74, 16, 31, 81, 73, 133, 16, 132, 156, 105, 22, 4, 52, 21, 48, 88, 193, 295, 389, 90, 89, 35, 16, 47, 96, 42, 143, 151, 92, 87, 248, 137, 47, 29, 34, 29, 140, 186, 128, 240, 75, 8, 6696, 84, 106, 505, 78, 653, 183, 119, 37, 40, 144, 97, 308, 13, 182, 187, 219, 125, 69, 2099, 103, 121, 15, 101, 436, 53, 47, 305, 93, 235, 41, 52, 1, 66, 79, 22, 67, 213, 34, 205, 64, 35, 99, 13, 80, 7, 158, 106, 267, 183, 261, 308, 11, 238, 53, 16, 153, 360, 87, 101, 148, 53, 185, 32, 869, 99, 114, 342, 196, 122, 70, 60, 140, 332, 231, 34, 20, 102, 131, 40, 53, 99, 274, 108, 72, 170, 2, 82, 22, 83, 89, 13, 47, 764, 98, 153, 1, 15, 112, 86, 149, 192, 204, 52, 136, 155, 35, 54, 28, 334, 113, 294, 137, 685, 253, 15, 74, 145, 17, 136, 17, 70, 255, 308, 118, 115, 144, 57, 64, 20, 37, 7, 67, 29, 128, 40, 24, 112, 21, 81, 54, 103, 115, 100, 255, 373, 31, 168, 157, 97, 39, 210, 46, 306, 36, 14, 1115, 205, 27, 11, 15, 17, 107, 20, 8, 130, 12, 118, 98, 91, 129, 7, 45, 66, 169, 80, 80, 61, 86, 272, 75, 68, 6, 85, 35, 45, 102, 260, 11, 42, 62, 27, 2, 42, 15, 263, 30, 6, 29, 3, 85, 209, 74, 63, 92, 112, 47, 44, 47, 14, 946, 14, 82, 456, 128, 81, 186, 147, 16, 119, 10, 83, 83, 128, 263, 21, 77, 87, 305, 63, 10, 2, 56, 150, 145, 24, 442, 137, 119, 33, 62, 266, 200, 130, 40, 64, 460, 270, 81, 169, 208, 194, 51, 59, 75, 68, 523, 232, 58, 16, 205, 169, 135, 17, 34, 150, 92, 22, 58, 8, 40, 181, 127, 254, 111, 92, 41, 159, 73, 450, 30, 120, 8, 146, 13, 106, 67, 26, 81, 92, 164, 16, 74, 61, 21, 26, 1237, 126, 122, 38, 5, 33, 100, 136, 126, 85, 13, 519, 209, 96, 6, 42, 106, 88, 73, 258, 52, 103, 82, 406, 15, 43, 43, 73, 54, 457, 31, 55, 128, 191, 9, 36, 201, 53, 315, 67, 38, 69, 35, 203, 457, 10, 69, 34, 133, 56, 380, 199, 27, 138, 141, 33, 88, 41, 245, 143, 16, 235, 5, 106, 985, 209, 17, 95, 62, 262, 224, 39, 43, 56, 55, 107, 97, 421, 71, 194, 459, 212, 194, 581, 201, 5, 9, 273, 9, 45, 31, 209, 72, 30, 56, 120, 21, 521, 45, 179, 12, 107, 13, 261, 107, 31, 68, 24, 50, 25, 70, 191, 75, 8, 166, 124, 120, 260, 64, 270, 8, 66, 213, 312, 51, 10, 49, 279, 104, 48, 64, 332, 287, 66, 30, 344, 22, 685, 13, 176, 80, 40, 91, 15, 158, 236, 148, 240, 126, 108, 25, 212, 188, 122, 286, 39, 30, 58, 31, 233, 150, 137, 22, 31, 12, 82, 73, 338, 139, 222, 173, 130, 157, 63, 178, 13, 132, 23, 31, 48, 39, 166, 3, 186, 5, 36, 11, 77, 22, 299, 3, 462, 179, 104, 9, 128, 153, 70, 3, 100, 14, 5, 158, 116, 26, 131, 11, 636, 46, 115, 347, 756, 115, 78, 173, 101, 7, 42, 141, 227 ] } ], "layout": { "height": 300, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Lengths of messages in train dataset (words)" }, "width": 700 } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "95-quantile length: 352\n" ] } ], "source": [ "fig = go.Figure(data=[go.Histogram(x=data_train[\"vector\"].apply(len), histnorm='probability')])\n", "fig.update_layout(\n", " title=\"Lengths of messages in train dataset (words)\",\n", " width=700,\n", " height=300\n", ")\n", "fig.show()\n", "\n", "max_len = int(np.quantile(data_train[\"vector\"].apply(len), q=0.95))\n", "print(\"95-quantile length: {}\".format(max_len))" ] }, { "cell_type": "code", "execution_count": 47, "id": "83d1812d", "metadata": {}, "outputs": [], "source": [ "class GRU(nn.Module):\n", " def __init__(self, vocab_size, embedding_dim, n_hidden, n_out):\n", " super().__init__()\n", " self.vocab_size = vocab_size\n", " self.embedding_dim = embedding_dim\n", " self.n_hidden = n_hidden\n", " self.n_out = n_out\n", "\n", " self.emb = nn.Embedding(self.vocab_size, self.embedding_dim)\n", " self.gru = nn.GRU(self.embedding_dim, self.n_hidden)\n", " self.dropout = nn.Dropout(0.3)\n", " self.out = nn.Linear(self.n_hidden, self.n_out)\n", "\n", "\n", " def forward(self, sequence, lengths):\n", " batch_size = sequence.size(1)\n", " self.hidden = self._init_hidden(batch_size)\n", " \n", " embs = self.emb(sequence)\n", " embs = pack_padded_sequence(embs, lengths, enforce_sorted=True)\n", " gru_out, self.hidden = self.gru(embs, self.hidden)\n", " gru_out, lengths = pad_packed_sequence(gru_out)\n", " dropout = self.dropout(self.hidden[-1])\n", " output = self.out(dropout)\n", "\n", " return F.log_softmax(output, dim=-1)\n", "\n", "\n", " def _init_hidden(self, batch_size):\n", " return Variable(torch.zeros((1, batch_size, self.n_hidden)))" ] }, { "cell_type": "code", "execution_count": 48, "id": "05311946", "metadata": {}, "outputs": [], "source": [ "def get_target(label, total_labels=4):\n", " target = [0] * total_labels\n", " target[label_2_idx.get(label)] = 1\n", " return target\n", "\n", "labels = set(data[\"category\"])\n", "label_2_idx = {label: idx for label, idx in zip(sorted(labels), range(len(labels)))}\n", "idx_2_label = [label for label, _ in sorted(label_2_idx.items(), key=lambda x: x[1])]\n", "\n", "data_train[\"target\"] = data_train[\"category\"].apply(get_target)\n", "data_test[\"target\"] = data_test[\"category\"].apply(get_target)\n", "data_eval[\"target\"] = data_eval[\"category\"].apply(get_target)" ] }, { "cell_type": "code", "execution_count": 49, "id": "4b053db8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train loss:\t0.4102\n", "Val loss:\t0.4631\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp8AAAF2CAYAAAAoS/PfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABey0lEQVR4nO3dd3hUVf7H8ffMJJNeKOmEUER6bwKyNpQmxbJiFwuW1VUX/S26KojuWlbXXnBd2y52RBBFkCqKFOnSWyBAGsV00mbu749JBkLaTEhmUj6v55knkzvn3vnOMCSfnHvPOSbDMAxERERERDzA7O0CRERERKTpUPgUEREREY9R+BQRERERj1H4FBERERGPUfgUEREREY9R+BQRERERj1H4FBERERGPUfgUEREREY9R+BQRERERj1H4FBE5w8SJE2nTpk2N9n3yyScxmUy1W5CLzqZuERFPUfgUkQbDZDK5dFu+fLm3SxURkUqYtLa7iDQUM2fOLPP9f//7XxYtWsT//ve/MtsvvfRSoqKiavw8RUVF2O12/Pz83N63uLiY4uJi/P39a/z8NTVx4kSWL1/OgQMHPP7cIiKu8vF2ASIirrrxxhvLfL969WoWLVpUbvuZ8vLyCAwMdPl5fH19a1QfgI+PDz4++tEqIlIZnXYXkUblwgsvpFu3bqxfv54//OEPBAYG8re//Q2AuXPnMnr0aGJjY/Hz86N9+/Y8/fTT2Gy2Msc489rJAwcOYDKZePHFF/n3v/9N+/bt8fPzo3///vz6669l9q3omk+TycR9993HnDlz6NatG35+fnTt2pUFCxaUq3/58uX069cPf39/2rdvzzvvvHNW15Hm5uby0EMPER8fj5+fHx07duTFF1/kzJNeixYt4vzzzyc8PJzg4GA6duzofN9Kvf7663Tt2pXAwECaNWtGv379+OSTT2pUl4g0XfrzXEQanePHjzNy5EiuvfZabrzxRucp+A8//JDg4GAmT55McHAwS5cuZerUqWRlZfHCCy9Ue9xPPvmE7Oxs7rrrLkwmE//85z+58sor2b9/f7W9pT///DOzZ8/mT3/6EyEhIbz22mtcddVVJCUl0aJFCwA2btzIiBEjiImJYfr06dhsNp566ikiIiJq9D4YhsHYsWNZtmwZt99+O7169WLhwoX83//9H0eOHOHll18GYNu2bVx++eX06NGDp556Cj8/P/bu3cvKlSudx3r33Xe5//77ufrqq3nggQfIz89ny5YtrFmzhuuvv75G9YlIE2WIiDRQ9957r3Hmj7ELLrjAAIwZM2aUa5+Xl1du21133WUEBgYa+fn5zm233HKLkZCQ4Pw+MTHRAIwWLVoYJ06ccG6fO3euARjz5s1zbps2bVq5mgDDarUae/fudW7bvHmzARivv/66c9uYMWOMwMBA48iRI85te/bsMXx8fModsyJn1j1nzhwDMP7+97+XaXf11VcbJpPJWc/LL79sAMbRo0crPfa4ceOMrl27VluDiEh1dNpdRBodPz8/br311nLbAwICnPezs7M5duwYQ4cOJS8vj507d1Z73AkTJtCsWTPn90OHDgVg//791e47bNgw2rdv7/y+R48ehIaGOve12WwsXryY8ePHExsb62x3zjnnMHLkyGqPX5H58+djsVi4//77y2x/6KGHMAyD77//HoDw8HDAcVmC3W6v8Fjh4eEcPny43GUGIiLuUvgUkUYnLi4Oq9Vabvu2bdu44oorCAsLIzQ0lIiICOdgpczMzGqP27p16zLflwbR33//3e19S/cv3Tc9PZ2TJ09yzjnnlGtX0TZXHDx4kNjYWEJCQsps79y5s/NxcITqIUOGcMcddxAVFcW1117LF198USaITpkyheDgYAYMGECHDh249957y5yWFxFxlcKniDQ6p/dwlsrIyOCCCy5g8+bNPPXUU8ybN49Fixbx/PPPA1Ta43c6i8VS4XbDhRnrzmbfuhYQEMCKFStYvHgxN910E1u2bGHChAlceumlzsFYnTt3ZteuXXz22Wecf/75fPXVV5x//vlMmzbNy9WLSEOj8CkiTcLy5cs5fvw4H374IQ888ACXX345w4YNK3Ma3ZsiIyPx9/dn79695R6raJsrEhISSE5OJjs7u8z20ksMEhISnNvMZjOXXHIJL730Etu3b+cf//gHS5cuZdmyZc42QUFBTJgwgQ8++ICkpCRGjx7NP/7xD/Lz82tUn4g0TQqfItIklPY8nt7TWFhYyFtvveWtksqwWCwMGzaMOXPmkJyc7Ny+d+9e57WZ7ho1ahQ2m4033nijzPaXX34Zk8nkvJb0xIkT5fbt1asXAAUFBYBjBoHTWa1WunTpgmEYFBUV1ag+EWmaNNWSiDQJgwcPplmzZtxyyy3cf//9mEwm/ve/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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ds_train = util.PaddedTextVectorDataset( # custom class\n", " data_train[\"description\"],\n", " data_train[\"target\"],\n", " corpus_dict,\n", " max_vector_len=max_len,\n", ")\n", "ds_test = util.PaddedTextVectorDataset(\n", " data_test[\"description\"],\n", " data_test[\"target\"],\n", " corpus_dict,\n", " max_vector_len=max_len,\n", ")\n", "ds_eval = util.PaddedTextVectorDataset(\n", " data_eval[\"description\"],\n", " data_eval[\"target\"],\n", " corpus_dict,\n", " max_vector_len=max_len,\n", ")\n", "\n", "train_dl = DataLoader(ds_train, batch_size=512, shuffle=True)\n", "test_dl = DataLoader(ds_test, batch_size=512, shuffle=False)\n", "eval_dl = DataLoader(ds_eval, batch_size=512, shuffle=False)\n", "\n", "vocab_size = len(corpus_dict.word_to_idx)\n", "emb_dim = 4\n", "n_hidden = 15\n", "n_out = len(label_2_idx)\n", "\n", "model = GRU(vocab_size, emb_dim, n_hidden, n_out)\n", "opt = optim.Adam(model.parameters(), 1e-2)\n", "\n", "train_losses, test_losses = util.fit(\n", " model=model,\n", " train_dl=train_dl,\n", " test_dl=test_dl,\n", " loss_fn=F.cross_entropy,\n", " opt=opt,\n", " epochs=21\n", ")\n", "torch.save(model, \"models/gru\")" ] }, { "cell_type": "code", "execution_count": 50, "id": "18e00818", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Balanced accuracy score: 85.1%\n" ] } ], "source": [ "test_dl = DataLoader(ds_test, batch_size=1, shuffle=False)\n", "eval_dl = DataLoader(ds_eval, batch_size=1, shuffle=False)\n", "\n", "_, y_pred_test_gru, y_pred_prob_test_gru = util.predict(model, test_dl)\n", "scores[\"gru\"] = balanced_accuracy_score(\n", " data_test[\"category\"],\n", " list(map(lambda x: idx_2_label[x], y_pred_test_gru))\n", ")\n", "print(\"Balanced accuracy score: {:.1f}%\".format(scores[\"gru\"] * 100))" ] }, { "cell_type": "code", "execution_count": 51, "id": "88df07aa", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}
text=%{text}", "legendgroup": "", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "text": [ "17.9%", "17.0%", "8.8%", "23.6%", "32.7%" ], "textposition": "auto", "type": "bar", "x": [ "Books", "Clothing & Accessories", "Electronics", "Household", "UNK" ], "xaxis": "x", "y": [ 746, 711, 367, 984, 1363 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Predictions Per Tag. Model: GRU" }, "width": 700, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "# Tags" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, _, y_pred_prob_eval_gru = util.predict(model, eval_dl)\n", "\n", "eval_pred_gru = val.predict_labels(y_test_baseline, y_pred_prob_test_gru,\n", " y_pred_prob_eval_gru, np.array(idx_2_label))\n", "eval_auto_gru = val.predict_labels(y_test_baseline, y_pred_prob_test_gru,\n", " y_pred_prob_eval_gru, np.array(idx_2_label), 0.999)\n", "vis.show_predicted_labels_distribution(eval_pred_gru, \"GRU\")" ] }, { "cell_type": "markdown", "id": "8b041869", "metadata": {}, "source": [ "Inference time estimation" ] }, { "cell_type": "code", "execution_count": 52, "id": "32172120", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.12 s, sys: 23.2 ms, total: 5.14 s\n", "Wall time: 5.16 s\n" ] } ], "source": [ "%%time\n", "tic = datetime.now()\n", "ds_eval = util.PaddedTextVectorDataset(\n", " data_eval[\"description\"],\n", " data_eval[\"target\"],\n", " corpus_dict\n", ")\n", "eval_dl = DataLoader(ds_eval, batch_size=1, shuffle=False)\n", "_, _, y_pred_prob_eval_gru = util.predict(model, eval_dl)\n", "\n", "inference_time_s[\"gru\"] = (datetime.now() - tic).total_seconds()" ] }, { "cell_type": "markdown", "id": "696dc85f", "metadata": {}, "source": [ "### GRU / LSTM + pretrained embeddings" ] }, { "cell_type": "code", "execution_count": 53, "id": "1d076c97", "metadata": {}, "outputs": [], "source": [ "class LSTMPretrained(nn.Module):\n", " def __init__(self, n_hidden, n_out):\n", " super().__init__()\n", " self.emb = nn.Embedding.from_pretrained(glove.vectors)\n", " self.emb.requires_grad_ = False\n", " self.embedding_dim = 300\n", " \n", " self.n_hidden = n_hidden\n", " self.n_out = n_out\n", "\n", " self.lstm = nn.LSTM(self.embedding_dim, self.n_hidden, num_layers=1)\n", " self.dropout = nn.Dropout(0.5)\n", " self.out = nn.Linear(self.n_hidden, self.n_out)\n", " \n", " def forward(self, sequence, lengths):\n", " batch_size = sequence.size(1)\n", " self.hidden = self.init_hidden(batch_size)\n", " embs = self.emb(sequence)\n", " embs = pack_padded_sequence(embs, lengths, enforce_sorted=True)\n", " lstm_out, (self.hidden, _) = self.lstm(embs)\n", " lstm_out, lengths = pad_packed_sequence(lstm_out)\n", " dropout = self.dropout(self.hidden[-1])\n", " output = self.out(dropout)\n", " return F.log_softmax(output, dim=-1)\n", " \n", " def init_hidden(self, batch_size):\n", " return Variable(torch.zeros((1, batch_size, self.n_hidden)))" ] }, { "cell_type": "code", "execution_count": 54, "id": "86d186ae", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train loss:\t0.1827\n", "Val loss:\t0.2285\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp8AAAF2CAYAAAAoS/PfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcDUlEQVR4nO3dd3iUZd728e/MJJNeID0hkNB7LwJ2UFBEsQHuqqCr7z4utkV3xS2iroLuuoqKa3ue1d11lWYBG4g0FZXeSeiBAKmUVNJm5v3jTiGQkEKSO5Ocn+OYA3LNPff8hlBOrmpxuVwuRERERESagNXsAkRERESk9VD4FBEREZEmo/ApIiIiIk1G4VNEREREmozCp4iIiIg0GYVPEREREWkyCp8iIiIi0mQUPkVERESkySh8ioiIiEiTUfgUETnH1KlTiYuLq9drn376aSwWS8MWVEsXU7eISFNR+BQRt2GxWGr1WL16tdmliohINSw6211E3MUHH3xQ6et///vfLF++nP/85z+V2q+55hoiIiLq/T7FxcU4nU68vLzq/NqSkhJKSkrw9vau9/vX19SpU1m9ejVJSUlN/t4iIrXlYXYBIiK1deedd1b6+ueff2b58uXntZ8rPz8fX1/fWr+Pp6dnveoD8PDwwMNDf7WKiFRHw+4i0qJceeWV9O7dm02bNnH55Zfj6+vLH/7wBwAWL17MuHHjiI6OxsvLi06dOvGXv/wFh8NR6R7nzp1MSkrCYrHw0ksv8c4779CpUye8vLwYMmQIGzZsqPTaquZ8WiwWHnzwQT777DN69+6Nl5cXvXr1YunSpefVv3r1agYPHoy3tzedOnXi7bffvqh5pHl5eTz22GPExsbi5eVFt27deOmllzh30Gv58uVceumlBAcH4+/vT7du3cp/3cq8/vrr9OrVC19fX9q0acPgwYP58MMP61WXiLRe+u+5iLQ4J06c4LrrrmPy5Mnceeed5UPw77//Pv7+/kyfPh1/f39WrlzJU089RXZ2Nn/7299qvO+HH35ITk4Ov/71r7FYLPz1r3/llltu4eDBgzX2lv7www988skn/OY3vyEgIIDXXnuNW2+9lSNHjhASEgLAli1bGDt2LFFRUTzzzDM4HA6effZZwsLC6vXr4HK5uPHGG1m1ahW/+tWv6N+/P8uWLeN3v/sdx44d45VXXgFg165d3HDDDfTt25dnn30WLy8v9u/fz9q1a8vv9e677/Lwww9z22238cgjj1BQUMD27dtZt24dv/jFL+pVn4i0Ui4RETc1bdo017l/jV1xxRUuwPXWW2+dd31+fv55bb/+9a9dvr6+roKCgvK2KVOmuDp06FD+9aFDh1yAKyQkxHXy5Mny9sWLF7sA1+eff17eNnPmzPNqAlx2u921f//+8rZt27a5ANfrr79e3jZ+/HiXr6+v69ixY+Vt+/btc3l4eJx3z6qcW/dnn33mAlzPPfdcpetuu+02l8ViKa/nlVdecQGujIyMau990003uXr16lVjDSIiNdGwu4i0OF5eXtxzzz3ntfv4+JT/PCcnh8zMTC677DLy8/NJTEys8b6TJk2iTZs25V9fdtllABw8eLDG144ePZpOnTqVf923b18CAwPLX+twOPj222+ZMGEC0dHR5dd17tyZ6667rsb7V+Wrr77CZrPx8MMPV2p/7LHHcLlcfP311wAEBwcDxrQEp9NZ5b2Cg4M5evToedMMRETqSuFTRFqcmJgY7Hb7ee27du3i5ptvJigoiMDAQMLCwsoXK2VlZdV43/bt21f6uiyInjp1qs6vLXt92WvT09M5c+YMnTt3Pu+6qtpq4/Dhw0RHRxMQEFCpvUePHuXPgxGqR44cyX333UdERASTJ09mwYIFlYLoE088gb+/P0OHDqVLly5Mmzat0rC8iEhtKXyKSItzdg9nmdOnT3PFFVewbds2nn32WT7//HOWL1/Oiy++CFBtj9/ZbDZble2uWuxYdzGvbWw+Pj589913fPvtt9x1111s376dSZMmcc0115QvxurRowd79uxh3rx5XHrppXz88cdceumlzJw50+TqRcTdKHyKSKuwevVqTpw4wfvvv88jjzzCDTfcwOjRoysNo5spPDwcb29v9u/ff95zVbXVRocOHTh+/Dg5OTmV2sumGHTo0KG8zWq1MmrUKF5++WV2797N888/z8qVK1m1alX5NX5+fkyaNIn33nuPI0eOMG7cOJ5//nkKCgrqVZ+ItE4KnyLSKpT1PJ7d01hUVMQ//vEPs0qqxGazMXr0aD777DOOHz9e3r5///7yuZl1df311+NwOJg7d26l9ldeeQWLxVI+l/TkyZPnvbZ///4AFBYWAsYOAmez2+307NkTl8tFcXFxveoTkdZJWy2JSKswYsQI2rRp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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ds_emb_train = util.PaddedTextVectorDataset(\n", " data_train[\"description\"],\n", " data_train[\"target\"],\n", " emb=glove,\n", " max_vector_len=max_len,\n", ")\n", "ds_emb_test = util.PaddedTextVectorDataset(\n", " data_test[\"description\"],\n", " data_test[\"target\"],\n", " emb=glove,\n", " max_vector_len=max_len,\n", ")\n", "ds_emb_eval = util.PaddedTextVectorDataset(\n", " data_eval[\"description\"],\n", " data_eval[\"target\"],\n", " emb=glove,\n", " max_vector_len=max_len,\n", ")\n", "\n", "dl_emb_train = DataLoader(ds_emb_train, batch_size=512, shuffle=True)\n", "dl_emb_test = DataLoader(ds_emb_test, batch_size=512, shuffle=False)\n", "dl_emb_eval = DataLoader(ds_emb_eval, batch_size=512, shuffle=False)\n", "\n", "n_hidden = 50\n", "n_out = len(label_2_idx)\n", "\n", "emb_model = LSTMPretrained(n_hidden, n_out)\n", "opt = optim.Adam(emb_model.parameters(), 1e-2)\n", "\n", "train_losses, test_losses = util.fit(model=emb_model, train_dl=dl_emb_train, test_dl=dl_emb_test,\n", " loss_fn=F.cross_entropy, opt=opt, epochs=11)\n", "torch.save(emb_model, \"models/lstm_pretrained_emb\")" ] }, { "cell_type": "code", "execution_count": 55, "id": "cfbad52c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Balanced accuracy score: 93.7%\n" ] } ], "source": [ "dl_emb_test = DataLoader(ds_emb_test, batch_size=1, shuffle=False)\n", "dl_emb_eval = DataLoader(ds_emb_eval, batch_size=1, shuffle=False)\n", "\n", "y_true_emb_test, y_pred_emb_test, y_pred_prob_emb_test = util.predict(emb_model, dl_emb_test)\n", "scores[\"lstm+emb\"] = balanced_accuracy_score(\n", " np.argmax(y_true_emb_test, axis=1),\n", " y_pred_emb_test\n", ")\n", "print(\"Balanced accuracy score: {:.1f}%\".format(scores[\"lstm+emb\"] * 100))" ] }, { "cell_type": "code", "execution_count": 56, "id": "a70e6a0b", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}
text=%{text}", "legendgroup": "", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "text": [ "22.3%", "20.2%", "16.1%", "36.8%", "4.7%" ], "textposition": "auto", "type": "bar", "x": [ "Books", "Clothing & Accessories", "Electronics", "Household", "UNK" ], "xaxis": "x", "y": [ 932, 841, 671, 1533, 194 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Predictions Per Tag. Model: LSTM + pretrained embs" }, "width": 700, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "# Tags" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, _, y_pred_prob_eval_emb = util.predict(emb_model, dl_emb_eval)\n", "\n", "eval_pred_emb = val.predict_labels(y_test_baseline, y_pred_prob_emb_test,\n", " y_pred_prob_eval_emb, np.array(idx_2_label))\n", "eval_auto_emb = val.predict_labels(y_test_baseline, y_pred_prob_emb_test,\n", " y_pred_prob_eval_emb, np.array(idx_2_label), 0.99)\n", "vis.show_predicted_labels_distribution(eval_pred_emb, \"LSTM + pretrained embs\")" ] }, { "cell_type": "markdown", "id": "66c64289", "metadata": {}, "source": [ "Inference time estimation" ] }, { "cell_type": "code", "execution_count": 57, "id": "9a2fcbd1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.03 s, sys: 164 ms, total: 5.2 s\n", "Wall time: 5.22 s\n" ] } ], "source": [ "%%time\n", "tic = datetime.now()\n", "ds_emb_eval = util.PaddedTextVectorDataset(\n", " data_eval[\"description\"],\n", " data_eval[\"target\"],\n", " emb=glove\n", ")\n", "dl_emb_eval = DataLoader(ds_emb_eval, batch_size=1, shuffle=False)\n", "_ = util.predict(emb_model, dl_emb_eval)\n", "inference_time_s[\"lstm+emb\"] = (datetime.now() - tic).total_seconds()" ] }, { "cell_type": "markdown", "id": "d78555b7", "metadata": {}, "source": [ "### BERT" ] }, { "cell_type": "code", "execution_count": 58, "id": "ae9a5310", "metadata": {}, "outputs": [], "source": [ "ds_train_bert = bert.get_dataset(\n", " list(data_train[\"description\"]),\n", " list(data_train[\"target\"]),\n", " max_vector_len=64\n", ")\n", "ds_test_bert = bert.get_dataset(\n", " list(data_test[\"description\"]),\n", " list(data_test[\"target\"]),\n", " max_vector_len=64\n", ")\n", "ds_eval_bert = bert.get_dataset(\n", " list(data_eval[\"description\"]),\n", " list(data_eval[\"target\"]),\n", " max_vector_len=64\n", ")" ] }, { "cell_type": "code", "execution_count": 59, "id": "dc276861", "metadata": {}, "outputs": [], "source": [ "batch_size = 64\n", "\n", "dl_train_bert = DataLoader(ds_train_bert, sampler=RandomSampler(ds_train_bert), batch_size=batch_size)\n", "dl_test_bert = DataLoader(ds_test_bert, sampler=SequentialSampler(ds_test_bert), batch_size=batch_size)\n", "dl_eval_bert = DataLoader(ds_eval_bert, sampler=SequentialSampler(ds_eval_bert), batch_size=batch_size)" ] }, { "cell_type": "code", "execution_count": 60, "id": "3e1482ad", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No GPU available, using the CPU instead.\n" ] } ], "source": [ "if torch.cuda.is_available(): \n", " device = torch.device(\"cuda\")\n", "else:\n", " print('No GPU available, using the CPU instead.')\n", " device = torch.device(\"cpu\")" ] }, { "cell_type": "code", "execution_count": 61, "id": "3938de5d", "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertModel: ['cls.predictions.transform.dense.weight', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.dense.bias', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.bias', 'cls.seq_relationship.weight', 'cls.predictions.bias']\n", "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n", "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n" ] }, { "data": { "text/plain": [ "BERTModel(\n", " (l1): BertModel(\n", " (embeddings): BertEmbeddings(\n", " (word_embeddings): Embedding(30522, 768, padding_idx=0)\n", " (position_embeddings): Embedding(512, 768)\n", " (token_type_embeddings): Embedding(2, 768)\n", " (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n", " (dropout): Dropout(p=0.1, inplace=False)\n", " )\n", " (encoder): BertEncoder(\n", " (layer): ModuleList(\n", " (0-11): 12 x BertLayer(\n", " (attention): BertAttention(\n", " (self): BertSelfAttention(\n", " (query): Linear(in_features=768, out_features=768, bias=True)\n", " (key): Linear(in_features=768, out_features=768, bias=True)\n", " (value): Linear(in_features=768, out_features=768, bias=True)\n", " (dropout): Dropout(p=0.1, inplace=False)\n", " )\n", " (output): BertSelfOutput(\n", " (dense): Linear(in_features=768, out_features=768, bias=True)\n", " (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n", " (dropout): Dropout(p=0.1, inplace=False)\n", " )\n", " )\n", " (intermediate): BertIntermediate(\n", " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", " (intermediate_act_fn): GELUActivation()\n", " )\n", " (output): BertOutput(\n", " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", " (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n", " (dropout): Dropout(p=0.1, inplace=False)\n", " )\n", " )\n", " )\n", " )\n", " (pooler): BertPooler(\n", " (dense): Linear(in_features=768, out_features=768, bias=True)\n", " (activation): Tanh()\n", " )\n", " )\n", " (l2): Dropout(p=0.3, inplace=False)\n", " (l3): Linear(in_features=768, out_features=4, bias=True)\n", ")" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b_model = bert.BERTModel(n_out=4)\n", "b_model.to(device)" ] }, { "cell_type": "code", "execution_count": 62, "id": "dcc8835c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Embedding Layer:\n", "l1.embeddings.word_embeddings.weight (30522, 768)\n", "l1.embeddings.position_embeddings.weight (512, 768)\n", "l1.embeddings.token_type_embeddings.weight (2, 768)\n", "l1.embeddings.LayerNorm.weight (768,)\n", "l1.embeddings.LayerNorm.bias (768,)\n", "\n", "First Transformer\n", "l1.encoder.layer.0.attention.self.query.weight (768, 768)\n", "l1.encoder.layer.0.attention.self.query.bias (768,)\n", "l1.encoder.layer.0.attention.self.key.weight (768, 768)\n", "l1.encoder.layer.0.attention.self.key.bias (768,)\n", "l1.encoder.layer.0.attention.self.value.weight (768, 768)\n", "l1.encoder.layer.0.attention.self.value.bias (768,)\n", "l1.encoder.layer.0.attention.output.dense.weight (768, 768)\n", "l1.encoder.layer.0.attention.output.dense.bias (768,)\n", "l1.encoder.layer.0.attention.output.LayerNorm.weight (768,)\n", "l1.encoder.layer.0.attention.output.LayerNorm.bias (768,)\n", "l1.encoder.layer.0.intermediate.dense.weight (3072, 768)\n", "l1.encoder.layer.0.intermediate.dense.bias (3072,)\n", "l1.encoder.layer.0.output.dense.weight (768, 3072)\n", "l1.encoder.layer.0.output.dense.bias (768,)\n", "l1.encoder.layer.0.output.LayerNorm.weight (768,)\n", "l1.encoder.layer.0.output.LayerNorm.bias (768,)\n", "\n", "Output Layer\n", "l1.pooler.dense.weight (768, 768)\n", "l1.pooler.dense.bias (768,)\n", "l3.weight (4, 768)\n", "l3.bias (4,)\n" ] } ], "source": [ "params = list(b_model.named_parameters())\n", "\n", "print(\"Embedding Layer:\")\n", "for p in params[0:5]:\n", " print(\"{:<55} {:>12}\".format(p[0], str(tuple(p[1].size()))))\n", "\n", "print(\"\\nFirst Transformer\")\n", "\n", "for p in params[5:21]:\n", " print(\"{:<55} {:>12}\".format(p[0], str(tuple(p[1].size()))))\n", "\n", "print(\"\\nOutput Layer\")\n", "\n", "for p in params[-4:]:\n", " print(\"{:<55} {:>12}\".format(p[0], str(tuple(p[1].size()))))" ] }, { "cell_type": "code", "execution_count": 63, "id": "f6257a0f", "metadata": {}, "outputs": [], "source": [ "optimizer = optim.AdamW(b_model.parameters(), lr=2e-5, eps=1e-8)\n", "\n", "def loss_fn(outputs, targets):\n", " return torch.nn.BCEWithLogitsLoss()(outputs, targets)" ] }, { "cell_type": "code", "execution_count": 64, "id": "fdcda1d9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total steps: 610\n" ] } ], "source": [ "epochs = 2\n", "total_steps = len(dl_train_bert) * epochs\n", "\n", "scheduler = get_linear_schedule_with_warmup(\n", " optimizer, \n", " num_warmup_steps=0,\n", " num_training_steps=total_steps\n", ")\n", "print(f\"Total steps: {total_steps}\")" ] }, { "cell_type": "code", "execution_count": 65, "id": "ff356b52", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-03-03 14:15:10.808611\tEpoch 1 / 2\n", "Training...\n", "2024-03-03 14:17:40.838341\tstep 40 / 305 done\n", "2024-03-03 14:20:14.857773\tstep 80 / 305 done\n", "2024-03-03 14:22:48.736802\tstep 120 / 305 done\n", "2024-03-03 14:25:13.014470\tstep 160 / 305 done\n", "2024-03-03 14:27:44.785613\tstep 200 / 305 done\n", "2024-03-03 14:30:18.897717\tstep 240 / 305 done\n", "2024-03-03 14:32:55.940922\tstep 280 / 305 done\n", "2024-03-03 14:34:24.123007\tAverage training loss: 0.18\n", "\n", "2024-03-03 14:34:24.123525\tValidating...\n", "2024-03-03 14:35:27.273090\tAverage validation loss: 0.10\n", "\n", "2024-03-03 14:35:27.273182\tEpoch 2 / 2\n", "Training...\n", "2024-03-03 14:38:06.132608\tstep 40 / 305 done\n", "2024-03-03 14:40:34.198344\tstep 80 / 305 done\n", "2024-03-03 14:43:09.208080\tstep 120 / 305 done\n", "2024-03-03 14:45:44.655376\tstep 160 / 305 done\n", "2024-03-03 14:48:08.364332\tstep 200 / 305 done\n", "2024-03-03 14:50:32.822048\tstep 240 / 305 done\n", "2024-03-03 14:53:01.858647\tstep 280 / 305 done\n", "2024-03-03 14:54:30.465787\tAverage training loss: 0.08\n", "\n", "2024-03-03 14:54:30.466324\tValidating...\n", "2024-03-03 14:55:32.839279\tAverage validation loss: 0.09\n", "\n", "\n", "Training complete!\n" ] } ], "source": [ "bert.fit(b_model, dl_train_bert, dl_test_bert, optimizer, scheduler, loss_fn, device, epochs=epochs)\n", "torch.save(b_model, \"models/bert_fine_tuned\")" ] }, { "cell_type": "code", "execution_count": 66, "id": "de43d8cb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3min 36s, sys: 34.9 s, total: 4min 11s\n", "Wall time: 1min 2s\n" ] } ], "source": [ "%%time\n", "_, y_pred_prob_test_bert = bert.predict(b_model, dl_test_bert, device)" ] }, { "cell_type": "code", "execution_count": 67, "id": "f12b1e35", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Balanced accuracy score: 95.1%\n" ] } ], "source": [ "scores[\"bert\"] = balanced_accuracy_score(\n", " data_test[\"category\"],\n", " list(map(lambda x: idx_2_label[x], np.argmax(y_pred_prob_test_bert, axis=1)))\n", ")\n", "print(\"Balanced accuracy score: {:.1f}%\".format(scores[\"bert\"] * 100))" ] }, { "cell_type": "code", "execution_count": 68, "id": "c54ed121", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "hovertemplate": "x=%{x}
y=%{y}
text=%{text}", "legendgroup": "", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "text": [ "22.2%", "20.1%", "18.1%", "37.6%", "1.9%" ], "textposition": "auto", "type": "bar", "x": [ "Books", "Clothing & Accessories", "Electronics", "Household", "UNK" ], "xaxis": "x", "y": [ 928, 840, 753, 1569, 81 ], "yaxis": "y" } ], "layout": { "barmode": "relative", "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Predictions Per Tag. Model: BERT fine-tuned" }, "width": 700, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": {} }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "# Tags" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, y_pred_prob_eval_bert = bert.predict(b_model, dl_eval_bert, device)\n", "\n", "eval_pred_bert = val.predict_labels(y_test_baseline, y_pred_prob_test_bert,\n", " y_pred_prob_eval_bert, np.array(idx_2_label))\n", "eval_auto_bert = val.predict_labels(y_test_baseline, y_pred_prob_test_bert,\n", " y_pred_prob_eval_bert, np.array(idx_2_label), 0.999)\n", "vis.show_predicted_labels_distribution(eval_pred_bert, \"BERT fine-tuned\")" ] }, { "cell_type": "markdown", "id": "7a697e27", "metadata": {}, "source": [ "Inference time estimation" ] }, { "cell_type": "code", "execution_count": 69, "id": "87b0923d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3min 41s, sys: 33.5 s, total: 4min 14s\n", "Wall time: 1min 8s\n" ] } ], "source": [ "%%time\n", "tic = datetime.now()\n", "ds_eval_bert = bert.get_dataset(\n", " list(data_eval[\"description\"]),\n", " list(data_eval[\"target\"]),\n", " max_vector_len=64\n", ")\n", "dl_eval_bert = DataLoader(ds_eval_bert, sampler=SequentialSampler(ds_eval_bert), batch_size=batch_size)\n", "_ = bert.predict(b_model, dl_eval_bert, device)\n", "inference_time_s[\"bert\"] = (datetime.now() - tic).total_seconds()" ] }, { "cell_type": "markdown", "id": "9f526feb", "metadata": {}, "source": [ "## Choosing the model" ] }, { "cell_type": "markdown", "id": "0cfb813e", "metadata": {}, "source": [ "Quality" ] }, { "cell_type": "code", "execution_count": 70, "id": "dea12f74", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Balanced accuracy scores\n", "baseline: 79.8%\n", "gru: 85.1%\n", "lstm+emb: 93.7%\n", "bert: 95.1%\n" ] } ], "source": [ "print(\n", " \"Balanced accuracy scores\\n{}\".format(\n", " \"\\n\".join([\"{}: {:.1f}%\".format(method, score * 100) for method, score in scores.items()])\n", " )\n", ")" ] }, { "cell_type": "markdown", "id": "51bebf6b", "metadata": {}, "source": [ "Inference times" ] }, { "cell_type": "code", "execution_count": 71, "id": "844daa47", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Inference time per message estimation:\n", " sec method secs_per_message\n", "0 0.186754 BASELINE 0.000045\n", "1 5.161665 GRU 0.001238\n", "2 5.218329 LSTM+EMB 0.001251\n", "3 68.841768 BERT 0.016505\n" ] } ], "source": [ "inference_time = pd.DataFrame({\n", " \"sec\": list(inference_time_s.values()),\n", " \"method\": list(map(lambda x: x.upper(), inference_time_s.keys()))\n", "})\n", "inference_time[\"secs_per_message\"] = inference_time[\"sec\"] / data_eval.shape[0]\n", "\n", "print(\"Inference time per message estimation:\\n{}\".format(inference_time))" ] }, { "cell_type": "markdown", "id": "de9a565b", "metadata": {}, "source": [ "## Mislabelling examples" ] }, { "cell_type": "code", "execution_count": 72, "id": "39ae1d66", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Idx: 2\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Pragati Pro flower basket diary Pragati Pro flower basket diary\n", "\n", "\n", "Idx: 25\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "ZOZO [4+1] Premium Plastic Auto Trim Removal Multi-Use and Rust Free Stainless Steel Fastener Remover Combination Set Car Dash Audio Radio Door Panel Repair Installer Open Pry Tool Powseed 5pcs Multi-use Removal Tool Set FASTENER REMOVER Rust Free Design + Plastic. Large handle for comfort using. Easy Carry. Plastic Panel Removal Tool 4 pcs Made from Premium Plastic, Strong and Tough. Multi-use panel tools apply anywhere inside or outside your vehicle space and crevices that hard to reach.\n", "\n", "\n", "Idx: 31\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Inditradition Hand Paper Shredder/Paper Cutter With Steel Blades for A4 & A5 Sheets This Mini Paper Shredder is a clean alternative to destroying confidential papers and family documents. It is operated by the simple turn of the rotating handle and it shreds paper into strips of 3mm width. The paper shreds are collected into the Shredder Box. Ideal for home, office, schools and other institutions. It is washable and perfectly portable to use. Package contains 1 Pc Hand Shredder with Product Information on the package. Product Features:- Operates By Hand and Simple Turn of The Rotating Handle. Shreds Paper into Thin Strips of 3mm Width Which Collect in the Shredder Box. Fit For Office, School Or Family Use. Washable and Portable To Use. Made Of 100% Durable ABS Plastic, It Is Fit For Long-Term Use. Package Includes 1 Pc Hand Paper Shredder with Handle and Instructions For Use. Colors May Vary.\n", "\n", "\n", "Idx: 33\n", "True: Electronics\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Amscan 844869 Adult Bare Bone Skeleton Costume, Medium (6-8), Black Who said being an adult means you can't have fun? This Halloween is all about making memories and being the life of the party. Transform yourself into the character of your dreams with our Bare Bones Skeleton Halloween costume for women. The creative design and vibrant colors are guaranteed to get you noticed - best friends and family members will remember your costume for years to come. With quality materials and functional design you'll be able to spook the neighborhood feeling comfortable and at ease. Our Bare Bones Skeleton Halloween costume will make you so popular you'll have to turn off your phone to get away from themed party invitations and cosplay conventions. Whether you choose to save your costume for future events or pass it on to a friend, you'll always have the memories of you rocking this picture-perfect Halloween costume.\n", "\n", "\n", "Idx: 63\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Decals Design 'Kitchen Quote Modern Art' Wall Sticker (PVC Vinyl, 50 cm x 70 cm x 1 cm, Black) Ideal for family lounge, bedroom, cafe and restaurant, kids room, nursery room, etc. Features PVC, non-toxic and waterproof. These wall stickers decorate your home just in minutes. Our wall decal application instructions will make it easy for you to apply your wall decals. The surface you wish to attach your decal must be clean and free from dust, grease or any other contamination. Simply peel those pre-cut pieces of wall stickers off from the backing paper and apply them to the desired area. Refer to the finished design shown in between the sheet and follow the numbers mentioned on the pieces to form the desired pattern. Freshly painted or lacquered surfaces must be allowed to completely cure for minimum 30 days before the decal is applied. After pasting the wall stickers on your wall, press firmly along the border and remove air bubbles if any. Repeat, if required. Do not apply on wet walls. It will be helpful and fun if you take help of your friends or family members.\n", "\n", "\n", "Idx: 71\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "3M WR209MB Antimicrobial Product Protection - Foam Wrist Rest (Black) The 3M Foam Wrist Rest helps to alleviate the aches and pains associated with hours of typing by encouraging a neutral wrist posture. Showcasing a stylish black design that will match any office decor, this foam-filled wrist rest features a fabric covering that is soft to the touch. An anti-microbial finish inhibits the growth of micro-organisms and helps extend the product life of the wrist rest.\n", "\n", "\n", "Idx: 85\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Alliance Network - Steering Wheel Cover wooden finish (BEIGE) ALLIANCE NETWORK :- steering wheel covers fit middle size steering wheels. Suitable for:- Audi, BMW(except Mini), Chevrolet, , Fiat, Ford, Hyundai, Honda, Jeep, Land Rover, Lexus, MercedesBenz, Mazda, Nissan, Peugeot, Renault(except kwid), Skoda, TATA (except tiago,nano,tigor,nexon),Toyota, Volkswagen(except Jetta), Volvo, etc. If you are not sure whether our products fit your car, you may leave us a message. Better comfort:- Breathable, soft padding, contour shape and massaging design. Durability:- Heat resistant, cold resistant and wear-resistant. Increased safety:- A better grip on the wheel gives you more control on the road. Green material:-Our products are totally eco-friendly and healthy. ALLIANCE NETWORK has been devoted to designing, manufacturing and supplying high quality steering wheel covers for ten years. We choose high quality, eco-friendly and healthy materials. We employ advanced manufacturing technique and the whole production process is under strict quality control.\n", "\n", "\n", "Idx: 93\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Targus Smart Surge 4 APS12AP-50 Surge Protector (Black) 2m power cord. Child safety shutter. Circuit breaker to avoid power overload.\n", "\n", "\n", "Idx: 165\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "YaYa cafe Fathers Day Tu Mera Dil Tu Meri Jaan Oh I Love You Daddy Family T-Shirt Combo for Dad and Kid Matching Dad and Kids T-shirts: Gift Dad and daughter or Son Family T-shirts made for Awesome dads and kids. Our range of Matching family outfits are also available in plus size clothing. Fathers day gifts are the best way to strengthen the characteristics of best designed Dad and daughter or Son matching outfits. Browse through our collection of Family Tshirts in colorful designs and variety of sizes. Gift set contents: 1 Men's Tshirt for Father 1 Kids T-shirt for Daughter or Son Dad and daughter T Shirts set details - Fabric: Cotton Fabric Strength:160 - 180 GSM Style: Printed Neckline: Round Neck Sleeve Length: Half Sleeves Color fastness of fabric and print - 100% Sizes available for Men - S (38 inches), M (40 inches), L (42 inches), XL (44 inches), XXL (46 inches), 3XL (48 inches), 4XL (50 inches). Sizes available for Kids Tshirts (as per age group) - 1-2, 2-4, 5-7, 8-10, 11-14, 14-16 years.  Sizes available for Kids Onesies/Baby rompers (as per age group) - 0-3, 3-6, 6-9, 9-12 months baby in full/half sleeves.  Please go through the size chart thoroughly before confirming the sizes.  Care - Use mild detergent for cold wash, soft iron only, wash inside out, Don't soak, Dry in shade, Don’t bleach and Squeeze After Wash.  Gift Suggestions - Birthday gifts for father, Fathers day gifts, birthday gifts for dad, dad and daughter matching clothes T-shirts, father and baby dresses combo, new dad gifts, first fathers day gifts, gifts for would be dads, Matching Family t shirts for Dad and kids - daughter, son, Gifts for family, Holiday vacation t-shirts.\n", "\n", "\n", "Idx: 260\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "[TROIAREUKE] GPS MASK 1 Set (5 mask sheets in a box) NAVIGATING SYSTEM TO TRACK THE SKIN'S PROBLEMS & RECOVER 1 Step : O2 Mask Cleanser Apply on the dry skin (without water). Wait for the O2 Cleanser to work on your skin. Main purpose of the O2 is open up the skin channel for excellent penetration. After this O2 Cleansing mask skin will have higher tone and also skin will look refreshed but not dry. 2 Step : GPS Mask Apply the bio-cellulose GPS mask onto your face. Take off before it dries up (usually 20 minutes to 40 minutes) GPS mask and the perfect formulation in the mask will 100% on the moisturizing and also very smooth texture. GPS mask provides the perfect contact between the mask and the skin 3 Step : Cell Energy Cream Apply cream until the neck and facial areas. Troiareuke has put sufficient amount for you! Cell energy cream provides protection to the moisture and also the active ingredient to work inside the cell. For different skin types Oily Skin - Longer Cleansing time / 2030minutes of Mask Dry Skin - Longer time of Masks for providing more moisture into the deeper skin Combination skin - Longer Cleansing time on oily zones / 2030minutes of Mask\n", "\n", "\n", "Idx: 264\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Amardeep Inverter AC-DC Emergency LED Bulb B22 9-Watt (Power Backup Upto 4 Hours),White Now enjoy continuous lighting experience with AMARDEEP AC-DC LED BULB 9W. It has 2600mAh Lithium-Ion battery with BMS technology which gives you continuous lighting back up to 4 hours. It will take 8-10 hours for full charging. NO FEAR FROM POWER CUTS.\n", "\n", "\n", "Idx: 277\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "ShoppoStreet Mini Aroma Essential Oil Diffuser, Wood Grain Cool Mist Humidifier Portable Ultrasonic Humidifier with 6 Color Changing Lights Multi-Color (Color - As per Availability) Features: ShoppoStreet 100% brand new and high quality. 7 color changing wood grain humidifier. Material: ABS Water tank: 130ml Power: < 3 W Power mode: DC 5V, DC (USB) Size: (H) 95 X (D-dia.) 100 mm Make your home smells good. Prevent dry and cracked skin during dry winters. Humidifying the air, makes breathing easier and reduces coughing and sinus congestion due to colds, allergies, and flu. Placed at home, yoga, office, spa, bedroom, baby room, reduce the smell of cigarettes, cooking and pets. Perfect gifts for families and friends, who love aromatherapy or benefit from aromatherapy, Package Content 1 X Humidifier 1 X USB Cable 1 X Instruction Manual\n", "\n", "\n", "Idx: 323\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Boyu DG-2524 Protein Skimmer Imitation of the natural zoology and excellently eliminate protein and organic com pounds.\n", "\n", "\n", "Idx: 327\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Shopper52 Hot Melt Glue Gun for School Kids Art Craft Home Industrial Use Decorating Purpose with 2 Free Glue Sticks - HTGLVEGN Hot melt easy to use multi purpose glue gun for almost all bonding jobs of any office and house. Trigger-feed for even glue flow perfect for home repairs, hobbies and crafts lower temperature for delicate materials and safety two finger trigger for better control. Examples of usage, repair holes in window screens reattach the float for a tank after its mount corroded away repair broken tail light covers on cars reattach trim on cars reattach the side view mirror on a car re-attach the heel of a shoe repair the cracked housing of an electric appliance make an impromptu model for your kids school project reattach plastic kitchen cabinet drawers to wooden face plates repair of toys, furniture, tv, radio or any plastic product body cracks, etc. Re-attaching book binding or covers without stitching. Repair umbrellas whose spines have separated from the material other features, glue sticks absolutely free with this product plug in gun. Load the glue sticks into the back of the gun. Press trigger several times until the glue stick is firmly set into the inlet tube allow the glue gun to warm up for approximately 5 minutes squeeze trigger until glue flows from nozzle.\n", "\n", "\n", "Idx: 332\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "Kaspersky Internet Security 2014 (Old Edition) - 5 Users, 1 Year (CD) Kaspersky Internet Security – Multi-Device 2015 allows you to conveniently secure any combination of your PCs, Macs, Android tablets and smartphones with one activation code. Whatever device you’re using, you’ll get immediate scanning of all applications and files that you open, save or download from the web. Potential threats are monitored and analysed in real-time and dangerous threats are prevented before they can cause harm. A lot of you valuable digital assets are split among different devices – personal photos, videos, files, messages, work documents, and many more. Our advanced anti-phishing technologies leverage real-time information from the cloud, as well as proactive detection of fraudulent URLs, to ensure you’re not tricked into providing your valuable data to phishing websites. Get customized, optimal protection, performance and usability for each of your devices. Working ‘behind the scenes’ – Kaspersky Internet Security – Multi-Device 2015 delivers effective, hassle-free protection that has no visible effect on performance of your devices – and gives you the freedom to enjoy the Internet to its full potential.\n", "\n", "\n", "Idx: 413\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Yellow Chimes Jolly Charms 925 Silver Plated (hallmarked) Charm Bracelet for Girls & Women Yellow Chimes gives its own unique designs to renowned jewellery manufacturers all over the world and brings exclusive Jewellery to you. The price is assured to you as we remove all middlemen margins and real-estate expenses by directly purchasing from international manufacturers. Thus, beautiful and contemporary Fashion Jewellery is made available at very reasonable prices to our valuable customers. So, buy with confidence. \"One thing we can ensure is that our products are liked so much by people that definitely it will bring the smile on your face too.\"\n", "\n", "\n", "Idx: 444\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "ElecStars Kids LED Night Projector Lamp Making your or children's night magical doesn't require you to be a magician! Just a simple device can do it for you. This lamp is great for arousing curiosity in the kids for universe and astronomical Science. You can even locate the galaxy you are living in and a number of stars. This is a new popular cosmos star projector lamp. It can help you put the universe back home, provides you a piece of the sky that changes colour, rotating its base, and there will be different colorful space, so find the constellation that you belong to. It is ideal for decorating wedding, birthday, and parties. You can choose the different power operation methods, USB Cable or Batteries.\n", "\n", "\n", "Idx: 462\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Pure Cure + Co Glow Blood Purifying Formula For Healthy Skin, Clear Complexion Ayurvedic Mahamanjishtadi 60 X 500 Mg Tablets Size:Pack Of 1 An improper diet, stressful lifestyle and environmental pollution all take their toll on our skin, complexion and it's glow. This Ayurvedic formula takes a holistic approach to skin care — it helps to purify the blood, detox the body and improve circulation, there by ensuring healthy skin and a clear, glowing complexion for men and women. It is a natural pill that helps in boosting your immunity as well as supports healing, joint comfort, and weight loss.Ingredients:Amalaki, Anantamula, Aragvadha, Asana, Ativisha, Bakuchi, Bharangi, Bhringaraj, Bhunimba, Brahmi, Brihati, Chandan, Chitraka, Darvi, Devadaru, Dhatri, Dusparsa, Guduchi, Haridra, Haritaki, Indravaruni, indrayava, Karanja, Karutakah, Katvi, Khadira, Kushta, Kutaja, Manjishta, Murva, Mustaka, Nimba, Parpata, Patha, Patola, Pippali, Shatavari, Shunti, Subaha, Vacha, Valakam, Varuna mool, Vasa, Vibhitaki, Vidanga.Dosage:2 tablets twice daily before meals.\n", "\n", "\n", "Idx: 485\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Campus Action Synthetic Men's Green Colour Casual Shoes - 7UK For ultimate comfort and style, action Campus shoes and sandals are your perfect choice. Made from 100% PU, this pair of shoes and sandals allows you to move comfortably at home and garden. The shoes and sandals are available in regular tip shape. Action Campus shoes and sandals over these years of large-scale production and sales of world-class footwear for men, women and kids have been observing the tremendous growth in demand for sports footwear. Campus footwear for all ages, rose to the occasion in supplying all varieties, models, designs and specifications of sports shoes online india. People have varied requirements for sports shoes, for purposes of engaging in robust physical activities of walking, jogging, sprinting, trekking, cycling as well as body-shaping in gyms.\n", "\n", "\n", "Idx: 500\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "KANICT 7 inch Tempered Glass Toughened Glass Screen Protector for Lenovo Tab7 7304F Premium Quality Tempered glass for Lenovo Tab7 7304F Normal tempered glass is flat from sides and feels like a rock edge which hurts fingers and degrades user experience. With precise CNC cutting technology and perfect size for your phone our Tempered Glass is very slim (0.3mm) and curved from sides (2.5D) for smoothest experience and makes you feel you are not using a tempered even when you are. High Quality Glass, Silicone Adsorption: High quality glass and silicone adsorption gives natural glass feel and bubble free application. It provides flawless accuracy with no interference in touch responsiveness. High Buffering: Buffering means reducing the impact of the shock. 9H Scratch protection: Our Tempered Glass not only protects your phone from scratches but also protects itself. Hence, provides higher durability and increased longetivity. Oleophobic Coating Membrane: water and sweat resistance. Oleophobic membrane gives smoother long term usage, less smudges, reduced finger prints and does not let sweat to stick on the tempered glass. It is very easy to clean with a normal cotton cloth.\n", "\n", "\n", "Idx: 508\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "Lenovo 730s 24IKB AIO 23.8-inch All-in-One Desktop (8th gen Core i5-8250U/8GB/2TB/Windows 10 Home/2 GB Graphics), Iron Grey The IdeaCentre All-in-One 730S offers Advanced In-Cell Touch (AIT) technology that makes it possible to experience FHD resolution on an ultra-thin near edgeless 23.8” touchscreen display. Stream movies, call a friend or browse your favorite sites—you’ll see every detail. Balanced on a sleek, sturdy stand and finished in Iron Grey, the IdeaCentre AIO 730S display is surprisingly thin—measuring only 7 mm. This modern profile is a perfect accent for your home’s workspace. You’ll have everything you need, the moment you open the box—an all-in-one means no separate tower. Plus, you’ll have one cord for easy, instant set up. Also included is a wireless keyboard and a wireless mouse, complimenting your machine in Iron Grey. The IdeaCentre All-in-One 730S offers premium 8th Generation Intel® Core™ i5 processing for intelligent, ultra-fast responsiveness. Combined with 8 GB DDR4 memory, you’ll be able to get things done quicker, smoother and easier. Keep pace with the digital world. Accelerate everyday tasks and take your performance to the next level, with optional Radeon™ 530 discrete graphics. Enjoy blazing fast responsiveness in virtually everything you do, from office applications to browsers to video editors. Featuring a USB-C connection, IdeaCentre All-In-One 730S can transmit data at up to 5 Gbs per second. Meet Cortana, your own voice-activated personal digital assistant who is prepared to answer your questions, open necessary apps, set reminders and even read appointments from your calendar. Even better, the IdeaCentre All-in-One 730S is equipped with long-range microphones. Speak to Cortana from up to 4 meters away. Need to step away for a moment? Your IdeaCentre All-in-One 730S will detect your absence and automatically lock your computer. We think that’s pretty nifty.\n", "\n", "\n", "Idx: 534\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Tidy Up! Wire Bin (Black)\n", "\n", "\n", "Idx: 564\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "LA CROSSE TECHNOLOGY 308-1414MB Wireless Weather Station with Color LCD Precise, real-time backyard weather with wireless technology. Animated weather icons display your personal forecast based on barometric pressure. Monitor indoor outdoor temps humidity levels and their trends. Set personal alerts for both indoor remote temperatures. View mold risk either remotely or indoors with wireless sensor. Accurate atomic time and date and indicators for low battery power. Includes ac adapter for display and battery power for backup and for wireless sensor (not included.).\n", "\n", "\n", "Idx: 586\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "RADISSON Elevator Clear Writing Desk P.S Sheets (7m.m / 12x16-inch) RADISSON writing table top (small size) 12*16 inch 7m.m P.S SHEET (MAKE IN INDIA) with 15 days Warranty (t&c).The writing table top you used in your school work,office work and home work for reading,writing and drawing purposes.And also you gifted it to someone in any occasions.Always ensure that you purchase the product from seller - SAI FABRICATIONS to get original and genuine product.Avoid duplicate table top (elevator desk)they made up from chinese sheet.Always used P.S SHEETS PRODUCTS (MAKE IN INDIA) OR KOREAN PURE ACRYLIC SHEET PRODUCTS.if you like our product please give us your most valuable feedback to AMAZON SITE.THANKS WITH WARM REGARDS.\n", "\n", "\n", "Idx: 594\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "TVSE BSC 101 Bar Code Scanner with Ultrascan Decoding Technology TVS BSC 101 Bar Code Scanner with Ultrascan Decoding Technology Advanced Technology for Your Business Give your business the advantage of a TVS BSC 101 Bar code scanner and let it soar higher. Built with Ultra Scan technology, the TVS scanner gives you high speed bar code scanning for the items in your store. It delivers high speed performance of 330 scans per second. Do your best to satisfy your customer by saving their time. Such high speed scanning is made possible by the increased resolution of the device to up to 2500 pixels. All this advance technology will not only prep up your business but will also earn you more customers. Comfortable Use The TVS BSC 101 Bar code scanner will make your life much easier with easy and accurate billing process. With such amazing decoding accuracy, you can never miss on any item or get the price wrong. You can fix your scanner on a stand and set it up to auto scan for hands free operations. It can be easily installed with plug and play technology. No need for complicated manoeuvres, just aim and shoot at the bar code. The trigger of the device can be easily reached with your thumb. Built with sturdy and strong material, don’t worry if you or your employees accidentally drop the device. You scan items that are at a distance of up to 300 mm as it has higher depth-of-field. It has dimensions of 24.6 x 9.7 x 7.9 cm and weighs 181 g, which makes it easier to handle for long hours. Get the TVS BSC 101 Bar Code Scanner with Ultrascan Decoding Technology and give your business the boost it has been waiting for.\n", "\n", "\n", "Idx: 624\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Shag Car Travel Air Bed PVC Inflatable Mattress Pillow Camping Universal SUV Back Seat Couch with Repair Bag Compression Sacks More Tools\n", "\n", "\n", "Idx: 635\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "The Story of Peter Rabbit (Easter Ornament Books) \n", "\n", "\n", "Idx: 643\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "DeckUp Minang TV Stand and Home Entertainment Unit (Wenge, Matte Finish) Assembly Required: The Product Requires Basic Assembly And Comes With Diy (Do-It-Yourself) Assembly Instructions.Product Dimensions: Length (47 Inches), Width (16 Inches), Height (20 Inches).Primary Material: Engineered Wood With Melamine Laminate.Color: Dark Wenge, Finish: Matte Finish, Style: Contemporary.\n", "\n", "\n", "Idx: 660\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Turning Point From the Author Danielle Steel has been hailed as one of the world’s most popular authors, with nearly a billion copies of her novels sold. Her international bestsellers include The Duchess, The Right Time and Fairytale. She is also the author of His Bright Light, the story of her son Nick Traina’s life and death; A Gift of Hope, a memoir of her work with the homeless; and the children’s books Pretty Minnie in Paris and Pretty Minnie in Hollywood. Danielle divides her time between Paris and her home in northern California. \t\t\t\t \t \t\t\t\t\t About the Author Danielle Steel has been hailed as one of the world's most popular authors, with over 650 million copies of her novels sold. Her many international bestsellers include Property of a Noblewoman, Blue, Precious Gifts,Undercover, Country, Prodigal Son, Pegasus, A Perfect Life, and other highly acclaimed novels. She is also the author of His Bright Light, the story of her son Nick Traina's life and death; A Gift of Hope, a memoir of her work with the homeless;and the children's books Pretty Minnie in Paris and Pretty Minnie in Hollywood.\n", "\n", "\n", "Idx: 697\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Family Store Printed Designer Wire Bound Ruled Paper Sheets (300 Pages) Personal And Office Stationary Notebooks & Diary Notebooks for the love of writing. Beautiful designs outside, matte finish sheets inside.Write, draw, work, whatever you do, you will never forget to leave your beloved notebook behind. This notebook combines utility with style. Size: A4 No. of pages: 500Cover: Multi color with matte lamination Inside: 80 gsm super high quality sheets.\n", "\n", "\n", "Idx: 738\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Maybelline New York Gigi Hadid Tinted Primer, Medium Deep, 30g Colour:Medium Deep Maybelline new York introduces a limited edition collection designed and curated by gigi hadid. Use this tinted primer to create a natural contour with a sheer tint of color.\n", "\n", "\n", "Idx: 747\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Plantex Gamma 3 Sockets Plug-in Universal Spike Guard with USB/Wireless Conversion with LED Night Light/Extention Board 3-Outlet Surge: - Exclusive Design: unique workmanship combined with our commitment to prefection make this product a top quality one and reliable too. - Superior Components: to ensure excellent quality, all the components of this product undergo strint quality checks. - Versatile Socket: The sockets are unique and versatile so that it can be used for various house-hold appliances having varied types of plugs. - Protector Provides premium power protection for both home and professional workstations. Designed to protect PCs,phones/fax/modems,printers,stereos and other electronics. Product Specification: - Rated Voltage: 250Va.c. - Rated Current: 10Amp - USB Output Power: DC 5V, two with 2A, each with 1A SAFETY INSTRUCTIONS: Please always ensure that - The connection is done with the plug provided - The maximum load to be less than 10 Amp\n", "\n", "\n", "Idx: 770\n", "True: Electronics\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Swisso Analogue Black Dial Women's Watch - Sws-703-Slr-Blk https://amzn.to/2xep946 -- https://amzn.to/2s9TiLS -- Go On Link For More Swisso WatchesSwisso His and Hers Watches - Perfect Matching Couples GiftsSwisso is exclusively trendy and will always give up the most unique and high quality accessories and designs.Let your Wrist shine with a new designer Wrist Watches for Men and Women from Swisso and keep track of time in style! Wear it on and step into a world full of dreams.Best choice as a present Gift for anniversary,Valentine's Day, Christmas and birthday!These watches have been designed in attractive Dial ,Different Strap colours ranging from White to Black, Blue and Brown, Pink and Turquoise. Choose from a series of Different, Unique Fashionable Design Collections.For Other Strap Colors, copy the title and paste in the search box above!!Customer SatisfactionCustomer satisfaction is important to Us. We try to help you out as much as we can and reply to any questions you might have regarding your product, where to buy, the Swisso brand or any other questions you might have for us within 24 Hours.WarrantyWe offer a warranty of 1 Year From purchase date against all manufacturing defects excluding Strap, Glass, and damaged caused by unauthorized third parties,accidents, or incorrect use of the product.PackagingThese Watches are Packed in Proper Swisso Branded boxes and bubbled wrapped to protect from external damage.\n", "\n", "\n", "Idx: 790\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "Impex 5.1 FUSION 140 W Multimedia Bluetooth Speaker System (Black) IMPEX 5.1 Home Theater Fusion Bring the power of sound to your home. IMPEX introducing a elegantly designed powerful music system Fusion. Experience sound like never before with the revolutionary multimedia speaker systems from Impex. Enhanced connectivity and superior processing, Impex makes your life a 24*7 party. Thanks to aesthetic design, the range is a welcome addition to your home interiors as well. Impex 5.1 home theater Fusion Multimedia speaker system is sure to amplify entertainment with its high-tech features and versatility. Features: LED Display. output RMS Power :50w+18w*5 Driver unit:6.5\"+3*5\" SD/USB/Remote control Built in sound equalizer and FM tuner\n", "\n", "\n", "Idx: 845\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Bestofferbuy 4CH Remote Control Wall Climbing Climber Stunt Toy Car, Color may vary The Wall Driving Car is an utterly astonishing, gravity defying, remote controlled Stunt Car that does just what its name implies, it really does climb up walls. Thanks to industrial fans and an advanced air system, this tiny rc car pulls air in under itself which holds it to the wall. Drive it straight at the wall, and when it gets there it starts to tilt upwards and at 45 degrees the monster gravity defying Traction Technology kicks in literally sucking the thing to the wall, where you drive it around just as if it was on the floor. If racing horizontally isn't enough, family and friends will be amazed when they see you race your new micro car on the walls and even ceilings! The ultra lightweight car body coupled with a powerful suction fan, lets you zip along walls and ceilings at full throttle, leaving regular floor racers in the dust.\n", "\n", "\n", "Idx: 865\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "FINICKY-WORLD V380 Wireless HD IP Security Camera Dual Antenna Live View Finicky World WiFi Security Camera makes it easy to watch your kids, elderly parents, or pets wirelessly on your smartphone or tablet--anytime, anywhere. Easy Setup and Remote View at Anywhere: One-Key WiFi configuration makes setup easy; using mobile devices to quickly set up on WiFi within 5 minutes. And you can see live video with your iPhone, Android mobiles or tablets remotely when you are away from home. Full HD 720P Resolution:The Camera's HD resolution quality can help you view the targets clearly, and it offers 355 horizontal pan and 90 tilt which gives you a full view of any corner of the room clearly. Night Vision: Built-in IR LEDs with ICR offer good night vision of viewing and recording in complete darkness. 2-Way Audio & storage: This Camera has Microphone and Speaker, so you can talk to your pet, baby, elder lively and listen to their voice remotely. And you can use up to 64GB Micro SD Card to record and playback video and audio. You can watch SD card recorded videos using playback option of app. Package: Finicky World 1.3MP IP Camera Power Adapter Mounting Stand Mounting Screws User Manual Important: This camera can work with a 2.4Ghz WiFi Router, Wifi Dongles (Jio, Airtel, etc) but not with a 5.0Ghz. If you have a dual-band router, be sure to enable the 2.4Ghz signal.\n", "\n", "\n", "Idx: 887\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Thanjai Natural Indian Non-Iodised Sea Salt (3 Kg) Salt has been used as a natural flavoring for thousands of years, and it’s so vital to our existence that we’ve even been created with a portion of our tongues designated to taste saltiness. I did a Daniel fast last year and eliminated salt from my diet completely for 10 days, and everything I ate tasted completely bland. During that time, it made me realize how essential salt is to our lives and caused me to spend some extra hours researching all of the many uses and benefits of sea salt.\n", "\n", "\n", "Idx: 890\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Intex Challenger 3 Inflatable Raft Boat Set With Pump And Oars | 68370EP 68370E Features: -Challenger boat kit. -3 air chambers including inner auxiliary chamber inside main hull. -Two quick-fill, fast-deflate boston valves. -Rugged vinyl construction. -2 Inflatable seat cushions. -All-around grab line. -Inflatable I-beam floor for comfort and rigidity. -Grab handles on bow. -Welded on oar locks. -Includes 2 48\" aluminum oars and high output hand pump. -Oar holders. -Motor mount fittings. -U.S. Coast Guard I.D. -Repair kit, shelf box. -TUV approved. Specifications: -Capacity: 660 lbs. -Inflated dimensions: 54\" H x 116\" W x 17\" D. -Package dimensions: 24.5\" H x 17\" W x 9.5\" D. All products are imported from the USA. All electronic products must be used with a step down/up converter for Indian voltage compatibility. Genuine Imported Products from USA. Prices include Import Custom Duties and Taxes with Free Shipping to your doortstep!\n", "\n", "\n", "Idx: 893\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Mosquick Teakwood Multipurpose Flexible / Rollable Sofa Tray/Table Mat Real Genuine Teak Wood Multipurpose Sofa Tray , Table Mat , Laptop Desk , Place mat. Can also be used as a tray table with a flat arm. Product is roll-able and easily adapts to a the shape of the side arm. The product comes with a PU fabric backing to make the product anti skid and grips perfect on any surface\n", "\n", "\n", "Idx: 927\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Faces Ultime Pro Perfecting Primer, 30ml Faces primer help decrease sweating through the pores, which makes your makeup stay in place longer. It makes the skin velvety soft, which enhances the smooth effects it has on your makeup appearance. It creates a more youthful appearance and reduces the look of fine lines and wrinkles. It creates a blanket over them.\n", "\n", "\n", "Idx: 937\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Emerson Liebert iTON CX 600 VA Line Interactive UPS Emerson Liebert iTON CX 600VA is an outstanding UPS from the prestigious Emerson brand. This is a pure sine wave UPS designed to be used at homes and offices. The inverter gives an uninterrupted performance to the appliances which are connected to it such as the LED, LCD, personal computers, printers etc. The model has a long battery back-up.\n", "\n", "\n", "Idx: 948\n", "True: Clothing & Accessories\n", "Predicted: Books\n", "Description:\n", "Vector X Men's Fizer Indoor Football Shoes Vector X is one of the established sports brands who provide stylish and innovative sports gear to most of the aspiring sport players as well as others. As a brand they have produced thousands of spectacular gear which have been used by numerous renowned sport personalities. Football, volleyball, basketball, cricket, tennis, badminton and squash are the sports in whose accessories and gear they deal in regularly.\n", "\n", "\n", "Idx: 993\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Tupperware SS Modular Large Bowl, 2 Liters, Multicolor, (Set of 1) Tupperware SS Modular Large Bowl, 2 LitresThe Tupperware SS modular Large bowl comes with a Tupperware classic round seal that gives you an airtight as well as liquid-tight performance. Once sealed, this bowl locks in the flavour and freshness of the stored content, while maintaining its original essence. This particular product comes in two convenient sizes that enable easy and efficient storage and serving purposes. With a large capacity of 2L, this multipurpose plastic Large bowl fits the needs of your kitchen and family easily. You can use it to store chopped vegetables or leftover meals too. The Tupperware 2 litres Large bowl is a safe and durable addition to any modern kitchen. Made from non-toxic and food-grade materials, this product prevents chemicals from being released into your food or liquid contents during storage. This Tupperware modular bowl is easy to clean and maintain with just liquid soap and lukewarm water. With a smooth surface and aesthetic design, this stylish product easily blends with your kitchen decor. Designed to store food items for later use, this airtight product will keep the stored content fresh and odour-free too.Specification:Each bowl has the Tupperware classic round seal, which is airtight and liquid tightThis locks in the freshness and flavour and protect the texture of foodsPerfect for Refrigerator storageColors may vary, any one will be shippedCan be used to store and carry dry and liquid food!!!Amazing Homes Deals in wide range of Tupperware, Milton, Amway, Dynamit, Artistry, Padmini, VLCC branded products for your kitchen, kitchen appliance, health, beauty. Visit our Amazon store link for our product line.\n", "\n", "\n", "Idx: 1002\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "rsvp Women's Savona Dress Black 14 RV510-1287 Color: Royal Blue Features: -Canopy side wall. -Use with canopy tent frame. -Includes a zipper for connection. Product Type: -Canopy Accessory. Cover Color: -Black. Cover Color: -Blue. Cover Color: -Green. Cover Color: -Grey. Cover Material: -Fabric. Number of Items Included: -1. Dimensions: Overall Product Weight: -3 Pounds.\n", "\n", "\n", "Idx: 1031\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "swabs LED USB Intelligent Night Light Star Projector Lamp (Multicolour, Medium) LED Night Lights Starry Sky Stars Cosmos Master Lantern Projector, 11.5x11.5x13.5 cm Keywords: Star Night Lamp, flashlight, home LED Light Specifications: Item Type: Star Night Lamp Light color: black, purple, blue Voltage: 220 V Type of lighting: LED Item size: 11 * 8.9 * 11.6 cm / 4.33 '' * 3.50 '' * 4.57 '' app. Material: Plastic Features: This creates a larger, brighter light show for your viewing entertainment. This is the biggest upgrade anyone could add to their Estrella Light Show. The decoration of your room, home. Flashing star Auto, multi colors. Developed by 3 x AA batteries (not include) Package Contents: 1 * Star Night Lamp only (Battery and Power Line are not included)\n", "\n", "\n", "Idx: 1036\n", "True: Electronics\n", "Predicted: Clothing & Accessories\n", "Description:\n", "TheCoolio Safe Dot Reflector / Safety Jackets (Plain Orange) - Regular Pattern Features ~ Highly reflective | Neatly stitched | Fine finish | Light weight. Size ~ Chest 42\" (approx.) & Length is 25.5\" (approx.). Design ~ Regular Pattern. Applications ~ Personal Protective Equipments\n", "\n", "\n", "Idx: 1049\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Chris & Kate Blue Toiletry Bag | Travel Toiletry Kit Portable Cosmetic-Makeup Bag for Women | Shaving Kit Organizer Bag for Men\n", "\n", "\n", "Idx: 1052\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Tea Trunk Camomile Tea Pure whole flowers of Camomile sourced from the foothills of the Himalayas. Caffeine-free, this tea is perfect for soothing sips through the day or at bedtime. Known to calm your colds and cramps, this healing tea will keep you cosy on a rainy day in bed. Perfect before bedtime as it's caffeine-free. Fluff your pillows, it's been a long day. Taste notes are floral, warm and soothing. Paired perfectly with a good book. We sipped ours with a Ruskin Bond.\n", "\n", "\n", "Idx: 1053\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Satyam Crafts's Antique Black Golden Chrome Polish Handmade Wall Lantern Diya Hanger - Utility Iron Craft(19.3 cm x 2 cm x 25 cm) Material: Wrought Iron With Polish Multi purpose Uses:- Beautify Your House or Garden by Hanging Lanterns, String Light, Wind chimes,Ornaments Decor, Decorative, Planters, Flower Pots, Birds Feeders and more. Stylish:- Modern and Vintage. handcrafted in Rajasthan (india)\n", "\n", "\n", "Idx: 1073\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "Noise NOIHWP184 13-in-1 Budha Multifuntional Polyester Bandana, Free Size (Purple) Each head wrap can be worn in 13 different styles like bandanna, head-band, wrist-band, sleeves, cap, pirate cap, bavaclave, alice band and more (please refer to the collage for different ways and styles of wearing the head wraps). Apart from the styling, these head wraps protect you from dirt, dust and sunlight. These head wraps are made of seamless micro-fibre that absorbs sweat in summers and protects you in winters. Noise is a youth-centric unisex brand for adventure and sports. Their revolutionary head wraps are funky, sporty and yet a very useful fashion accessory for all age groups. Light and thin, breathable and silky smooth, both aesthetic and physical feel-good factors are in it just for you. Now have fun assembling your own headwrap for you and your loved ones.\n", "\n", "\n", "Idx: 1078\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Generic White 2.1A 2 USB Wall Socket Charger Power Panel Receptacle 5 Outlet Switch Description: supply power for mobile phones, digital products, or other electrical equipments. 2 usb ports provides you a hassle-colour:yellow' >solution for charging portable devices. It can meet charge needs of various devices such as ipad and tablet pc. The appearance and size are the same as ordinary sockets, and can be easily fixed. It is universally used in many places such as hotel, restaurant, home, public places, for the convenience of colour:yellow' >in charging digital products. With red indicator light and on off switch specifications: usb charging protected:overvoltage protection overcurrent protection leakage protection panel material:pc flame retardant plastic,safe and reliable. Input: ac110-250v 10a 50/60hz output: dc5v- 2100ma max operation temperature:-40~150. Size:86 * 86 * 6mm colour: white material: flame retardant plastics package includes: 1x wall power supply usb socket 2x screws\n", "\n", "\n", "Idx: 1121\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Japanese Candlestick Charting Techniques Review Quote from the first edition of Japanese Candlestick Charting Techniques: \"It's hard to be too effusive about the quality of Nison's work. This is clearly one of the best investment books ever written.\"Bruce Babcock, Jr., Editor-in-Chief, Commodity Traders Consumers Report From the Publisher “An exciting and valuable addition to the literature of technical analysis…", " this ancient Japanese technique is available to American traders in a comprehensive, well-written, and understandable format.”John Murphy, PresidentJJM Technical Advisors, Inc. andAuthor of Technical Analysis of the Financial Markets It’s hard not to be too effusive about the quality of Nison’s work…", " reading [his book] was a pleasure. This is clearly one of the best investment books ever written…", ". We strongly recommend this book, which has already become an investment classic.Bruce Babcock, Jr. Editor-in-Chief, Commodity Trades Consumer Report \t\t\t\t \t \t\t\t\t\t See all Product description\n", "\n", "\n", "Idx: 1140\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "SAFEYURA® Good Quality Kitchen Hand Gloves for Women These kitchen gloves are made of Natural Rubber.Durable and Waterproof: Extra-long cuffs turn up to catch drips and help keep inside of gloves dry Application: daily household washing bowls, plates, utensils, clothes. These Gloves are comfortable to wear and are flexible in use. It is used in general household work like scrubbing floors, kitchen sinks, shop work or cleaning vegetables, fruits etc. The gloves upper part helps to grip things better. The gloves are resistant to stretching, detergents and washing chemicals. You can use these gloves for gardening, cleaning your kitchen, washing utensils.These are long double colored unisex gloves for both men and women.So take care of your hands while doing daily household work. Features : 1. Application: daily household washing bowls, plates, utensils, clothes. 2.Keeps your hands dry from soap and other detergents. 3. Waterproof Kitchen Cleaning Gloves available with assorted (random) colors. 4. One of the best product which protects your hands and fingers from any kind of Chemical Allergy. 5. Package Contains 3 Pair of Rubber Full Size Kitchen Gloves.\n", "\n", "\n", "Idx: 1154\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "The Sound of Music (45th Anniversary Edition) (function(d,s,id){var js,stags=d.getElementsByTagName(s)[0];if(d.getElementById(id)){return;}js=d.createElement(s);js.id=id;js.src=\"http://g-ec2.images-amazon.com/images/G/01/imdb/plugins/rating/js/rating.min.js\";stags.parentNode.insertBefore(js,stags);})(document,'script','imdb-rating-api');A timeless cinematic treasure soars to new heights in this 45th anniversary edition. Digitally remastered for spectacular sound and pristine picture quality you've never seen or heard the sound of music like this before Julie Andrews light up the screen as maria a spirited young woman who leaves the convent to bring love and music to the home of captain Von Trapp (Christopher Plummer) and his seven children.\n", "\n", "\n", "Idx: 1213\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Literacy India Indha Multi Utility Magazine Cum Books Holder in Block Print Jute Add a sophisticated and artistic look to your office desktop or home, with our elegant Indha magazine holder. It is created with the natural organic fiber, jute, which is completely biodegradable and recyclable. A chic product, it features hand block printing done by the village women of Bajghera, Haryana and is made from natural color sourced from the mills of West Bengal. The MDF wood used as base is strong and does not have the tendency to split making it durable and long lasting. You can now organize all your daily office supplies and documents, while also giving your table a decorative appeal. Your purchase contributes to the livelihood of an impoverished artisan. Size: 25″ H x 10 “W x 23” L 1 compartment Color: Brown Material: jute Holds magazines, catalogs, binders, files, documents, etc.\n", "\n", "\n", "Idx: 1250\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "Pashtush Jaquard Weave Stole for Men, Pashmina Stole, Light Weight, Woven Embelished Design, Mens Scarf Mens Stole by pashtush. Made up of finest wool to give a luxurious look and an extraordinary elegant fall. Drapes naturally along the soft textured surface. Team this Pashtush stole with matching outfit to get the perfect royal look on any occasion. The stole size is supple allowing you more than two metres of of the finest material to take pleasure in. Size - free size Wash care - Pashtush wool is a delicate natural fibre. Its precious grace lends it a luxurious fall and smooth rich texture. In order to maintain this elegance it is recommended that you follow these care instructions on how to wash stoles. Dry Cleaning We recommend that you take your Pashtush stole to a professional dry cleaner for laundering. Ironing Even though your Pashtush stole does not require ironing, as it has been pre finished and pressed. it is recommended that you always use steam when pressing wool. Set your iron on the wool setting and avoid ironing your Stole when it is completely dry. Washing at Home If you are unable to have access to a professional dry cleaner then it is recommended that you Gently hand wash your stole in water, using a mild soap or detergent. Long-Term Storage. Since food stains and body oils attract moths, you should ensure that your stole is clean before packing it away in airtight bag or containers. Ideally it is recommended to use a moth repellent but do not place it directly on the fabric. Drying If wool gets wet, the best way to dry is at room temperature, away from any direct sunlight. Breathing and Refreshing Unpacking and hanging in a steamy bathroom can refresh your Pashtush Woolen Stole. Moisture from the steam has properties that will ease wrinkles. The brilliant quality wool used in Pashtush will breathe the fresh air and be ready to be worn.\n", "\n", "\n", "Idx: 1260\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Hunting Hobby HH42 Fishing Barrel Swivel Barrel swivel and snaps mix black coated piece - 20 free swivel wire - 3 with high tensile strength use for soft bait, hard bait, lead head hook, sequins etc. flexible rotation, not easy to wind around the fishing line unique design to reduce water resistance and improve the sensitivity.\n", "\n", "\n", "Idx: 1316\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Fortune Sona Masoori Regular, 5kg Sweet and aromatic rice\n", "\n", "\n", "Idx: 1371\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Mi LED TV 4A PRO 123.2 cm (49) Full HD Android TV (Black) Size name:49 inches Important Software Update Information : Mi LED TV 4A PRO (49) Here is the first update for Mi LED TV Pro. This update includes few fixes and optimizations. Update now and elevate your TV viewing experience. Latest Build: OPM1.171019.011.1010 How to Update: Settings -> About -> System Update -> Update will download and install automatically Mi LED TV 4A PRO Product Description: Wide Screen with a Great Resolution and Picture Quality The Mi LED TV 4A PRO dons features such as Full HD and HDR display, 64-bit Quad-core processor, DTS-HD audio, Google Voice Search, ultra-bright resolution, built-in Chromecast and Play Store, 7,00,000+ hours of content on PatchWall, multiple ports, 49-inch display screen and much more. This television has a wide display with which you will be able to view detailed visuals. The Mi LED TV 4A PRO is the smart Android TV that has almost everything that you are looking for in a TV. Built to Be Sturdy, Made for Entertainment Browse through features like DTS-HD sound, 7,00,000+ hours of content on PatchWall, in-built in Chromecast, personalised recommendations, Google Voice Search and much more. This television by Mi also allows you to accesses almost everything on the internet without any hassles. With multiple ports, you will be able to connect numerous entertainment devices. Watch your favourite movies, TV shows and much more with the 49-inch Mi LED TV 4A PRO. You will also be able to control your entertainment with your voice as the voice enabled remote gives you access to Google Voice Search. • The Mi TV Pro series is based on the Android TV OS and it supports the Bluetooth 4.2 version. Since Bluetooth profiles differ according to devices (headphones and speakers), some devices may not connect or work properly.Affordable, Stylish and Manufactured for the Best Performance Whether you want to mount the TV on the wall or sit it on the table, the Mi LED TV 4A PRO gives you the best performance as it comes with a 64-bit quad-core processor, 2GB RAM + 8GB storage, Bluetooth and Wi-Fi connectivity. With great looks, this TV is gives you access to great entertainment in the comfort of your living room. Tech Spec : Model : L49M5-AN Model Name : 4A Pro Model Year : 2018 Item Weight : 11 Kg Product Dimensions : 110.4 x 7.5 x 65 cm Item model number : L49M5-AN Ram Memory Installed Size : 2 Operating System : PatchWall based on Android TV Graphics Coprocessor : Mali -450 MP Response Time : 6.5 Milliseconds Resolution : 1080p Full HD Included Components : TV Number Of Items : 1 Display Technology : LED Screen Size : 49 Inches Display Type : LED Image Aspect Ratio : 16:09 Image Contrast Ratio : 4000:1 Supported Image Type : JPEG Display Resolution Maximum : 1920x1080 Pixels Supported Audio Format : mp3_audio Speaker Surround Sound Channel Configuration : DTS-HD Power Source : AC Batteries Included : No Batteries Required : No Refresh Rate : 60 hertz Total Usb Ports : 2 Connector Type : Built-in Wi-fi Digital Media Format : MPEG Supports Bluetooth Technology : Yes\n", "\n", "\n", "Idx: 1417\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "DALUCI Zodiac Signs Keychain Key Rings Bag Car Round Glass Cabochon Pendant Man Woman Gift Key Chain (Capricorn Sign) Colour:Capricorn Sign 100% Brand New And High Quality Metals Type: Zinc Alloy,Glass Gender: Unisex Style:Trendy Metal color: Silver Pendant Sezi: 2.5X3.6cm Glass Diameter: 2.5cm / 0.98 inch Ring Size:About 3.0 cm in Because different computer monitors The Colors May Have Different as the difference display,pls understand Hope you have a happy shopping ! Package Includes: 1 X Key chain\n", "\n", "\n", "Idx: 1450\n", "True: Clothing & Accessories\n", "Predicted: Electronics\n", "Description:\n", "Jump Start Apple iWatch Screen Protector 40mm, 5D Full Adhesive Advanced Touch Sensitive Screen Coverage Tempered Glass, Anti-Scratch Resistant Screen Compatible with iWatch 40mm Series 4 [Black] Size name:40mm  |  Colour:5D Glass Stainless Steel Iwatch Band Size: 42mm 38mm 40mm 44mm Color – METAL BAND 1. Black 2. Silver 3. Rose Gold 4. Red 5. Blue Material: Stainless Steel Compatible: Apple Watch Series 1 Series 2 Series 3 Series 4 Nike Series What You Get: 1 x Replacement Wrist Band for Apple Watch\n", "\n", "\n", "Idx: 1454\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Gorilla Efficio Energy Saving 5 Star Rated 3 Blade Ceiling Fan With Remote Control and BLDC Motor, 1200mm- Ivory Designed and Manufactured by IIT Bombay Alumni, Gorilla Fan is India's Most Energy Efficient Fan* that consumes only 28 Watts Power at the highest Speed. Gorilla Fan is equipped with a smart and powerful BLDC Motor which makes the fan super energy efficient. Gorilla fans are equipped with smart features like sleep mode, timer mode, boost mode which adds sheer comfort to your life. Gorilla fans are manufactured from Aluminum hence Gorilla Fans are rust proof. Gorilla Fans are ideal for use in Bedroom, Living Room, Study room and Dining room. The 1200MM blade size will typically cover an area of upto 144 Sq. ft which is typically the average size of bedrooms in Urban Areas.\n", "\n", "\n", "Idx: 1459\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "Amozo Soft TPU Silicon Rubberized Back Case Cover -Slim Sleek for OnePlus 6T (Black)\n", "\n", "\n", "Idx: 1536\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "Aveeno Baby Wash & Shampoo 18 Ounce Size:18oz Aveeno Baby Wash and Shampoo contains natural oat extract blended into a rich lathering cleanser that cleans without drying because it is soap-free and hypoallergenic. This tear-free formula can be used on the skin and hair for gentle cleansing that rinses clean with a soft, fresh fragrance. Aveeno Baby Wash and Shampoo is formulated to be gentle enough for newborns and babies with sensitive skin. Aveeno can be used every day to help keep your baby's skin and hair soft, smooth and feeling healthier. The Aveeno brand has been pediatrician recommended for over 60 years.\n", "\n", "\n", "Idx: 1547\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "On-Track System Suite 4.0 - PC\n", "\n", "\n", "Idx: 1561\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Shining Diva Fashion Charm Bracelet for Girls (Gold)(8306b) Shining Diva presents this Genuine High Quality 18K Rose Gold plated bangle bracelet for girls and women. This bracelet can be used by girls as daily wear or party wear. Shining Diva is a well known brand across fashion jewellery sector. Shining Diva products are stylish and funky. This gold plated jewellery is studded with crystals stones. Shining Diva has huge collection of latest jewellery accessories. Shining Diva is pioneer of Imitation jewelleries and designer crystal pendent for girls. Shining Diva Fashion and Traditional jewelry give true value for your money. Buy Shining Diva trendy, artificial and semi precious jewellery from Amazon. These are also ideal for birthday gifts for girls, gift for girlfriend, wedding gifts and anniversary gifts.\n", "\n", "\n", "Idx: 1577\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Anishop Antique Design Golden Metal Interactive Design Earring For Women Description: Flaunt your unique style with these Textured Earrings. Featuring a Geometric design and adorned its allure Wear it with casual or formal wear and make a bold style statement.\n", "\n", "\n", "Idx: 1602\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "amiciSense Touch Less Voltage Detector Tester Pen AC 90-1000V and Electrical Testers Touch Less, 100% Safe AC Voltage Tester, Must have for all homes, Just press the button, white LED light can be always on when there is absence of voltage \"Beep\" sound and red flashing LED.\n", "\n", "\n", "Idx: 1654\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "QXN PRO - BNC Connector with Copper Wire Moulded - 10PCS - 18CM - BNC Golden Male Plug Cable (White) Delivers high performance and versatile video for your AV audio video device equipment; Accurately transfer high bandwidth frequency quality detailed clean natural jitter-free in video / data signals High performance cable for connecting a camera, CCTV, VCR, antenna, or other devices Low profile metallic connectors ensure a secure connection and increase durability; Heavy shielding protects the transmission data against electromagnetic interference (EMI) and radio frequency interference (RFI) Oxygen Free Copper Lines combined with a double shielding allow for a maximum audio video quality; reduce distortion and signal loss; minimizes return loss, so music, dialogue and sound effects are always clear, dramatic, detailed in excellent signal quality\n", "\n", "\n", "Idx: 1675\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Amazing Sign Ladies Toilet Sign Board for Office/School/Museum (2) Number of Items:2 High Quality Vinyl Printing Material With Glowcy Lamination and pasted on 3 mm Foam Sheet with Back side Two Sided Adhesive tape so easy to installation at clean Surface.\n", "\n", "\n", "Idx: 1809\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Zenith 9mtr Golden Tessals Laces for Dresses, Sarees, Lehenga, Suits, Bags, Decorations, Borders, Crafts Designer Fancy and Stylish Buttons, Multicolour/Golden/Square/beeds/Designer for Dress/Lehenga Choli/Suits/Kurti and Craft.These are mainly used in ethnic indian dresses and art craft works.These beautiful designer Buttons can Use beautify your dresses, sarees, lehengas and dupattas to perfection. It is very useful For Ethnic Dresses Indo Western Tops, Gowns and Traditional designer. Great for garment, handbags, gift wrapping decoration. 100% Brand New And High Quality.\n", "\n", "\n", "Idx: 1835\n", "True: Clothing & Accessories\n", "Predicted: Electronics\n", "Description:\n", "ATTRACTIONZ Kitcone Analogue Metal Black Strap Multicolour Dial Women's Watch Due to lightning and photography effects Shining may look different in real This is Strap style analogue watch which has round dial and is suitable for Women. It comes with the quartz movement type. This wrist watch is good to go for casual occasions. This wrist watch ensures better durability and better performance.\n", "\n", "\n", "Idx: 1871\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Max Secure Antivirus - 1 PC's, 3 Year (Voucher) Size name:1 PC, 3 YEAR (VOUCHER) Max antivirus will protect your PC with every aspect like usb and external drive protection, anti malware, more powerful and faster, anti spyware.\n", "\n", "\n", "Idx: 1885\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Nite Flite Girls' Flamingo Cotton Pyjama Set Blue Let your girl be a 'Flamingo' in a flock of pigeons! Crafted from 100% cotton knit for blissful comfort, this is a classic collared button-down PJ set in a lovely teal colour. Featuring an oh-so-pretty flamingo pattern all over in a gracious salmon pink, we could almost eat this up! Elastic waistband with pink spun satin ribbon, contrast piping on sleeves and bottoms, and side pockets are add-ons for a great sleep and lounge experience.\n", "\n", "\n", "Idx: 1896\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "WISSEN Wooden Transportation knob Puzzle Tray 12*12 INCH\n", "\n", "\n", "Idx: 1905\n", "True: Clothing & Accessories\n", "Predicted: Books\n", "Description:\n", "Quechua Arpenaz Hiking Backpack 10 L ( Mint Green) Made for hikers of 10 years and older, hiking several hours on level ground. This 10 L hiking backpack is ideal for hikers who want to hike a couple of hours and want to bring: a picknick and a windbreaker!\n", "\n", "\n", "Idx: 1942\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Ambient Weather WS-2902A 10-in-1 Wi-Fi Professional Weather Station with Internet Monitoring, Compatible with Alexa Ambient Weather professional weather station allows you to monitor your home and backyard weather conditions with the brilliant, easy-to-read LCD color display. The enhanced Wi-Fi connectable option that enables your station to transmit its data wirelessly to the world's largest personal weather station network, weather underground. Experience the convenience of having your personal weather information with you on the go using your computer, tablet, or mobile device. In addition to underground, the weather station supports uploads to weather bug and weather cloud. The weather station measures wind speed, wind direction, rainfall, outdoor temperature and humidity, solar Radiation and UV. Also included inside the console is temperature, humidity and barometric pressure. The weather station also calculates dew point, wind Chill and heat index. The Osprey streams weather data real time (approximately 16 second updates) to the weather underground website, the best website for collecting and storing real-time personal weather station data. Send real time data to weather bug website. Weather bug backyard tracking Stations empower weather enthusiasts to get their name on the map and have their tracking Stations' data seen by millions of users via the weather bug application. Send real time data to weather cloud website. Weather cloud makes managing your device not only easy, but fun. Access the app from your computer, tablet or smartphone and enjoy the same user experience across all devices.\n", "\n", "\n", "Idx: 2009\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Reader's Digest - February 2019 Reader's Digest has been the world's biggest-selling magazine for nearly nine decades. It is also India's largest-selling magazine in English. Beneath the fun and excitement of its pages, the Digest is, above all else, a serious magazine that never loses sight of the fact that, each day, all of us confront a tough, challenging world. To the millions who read the Digest, it is not a luxury—it is a necessity. Deep within its widely varied package of humour, real-life dramas and helpful information, there is in every issue of the Digest a subtle power that guides people in every aspect of their lives.\n", "\n", "\n", "Idx: 2012\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Rawpockets 'African Jungle Story' Wall Sticker (PVC Vinyl, 100 cm x 90cm, Multicolor) Rawpockets wall decal, also known as a wall sticker, wall tattoo, or wall vinyl, is a vinyl sticker that is affixed to a wall or other smooth surface for decoration and also to express your different emotions. Decals make a fast, no-fuss alternative to messy paint and stencils. Self-adhesive backing removes without any surface damage. For best results, mount to a smooth surface. We use high-quality vinyl in a matte finish, to give a 'hand-painted\" look. Our vinyl graphics are easy to apply to any smooth surface. Put them on walls, wood, glass, tile, windows - Use your imagination! Vinyl designs are easily removed although they cannot be re positioned or reused. Special Instructions: Please do not stick on Wet Walls. Make sure the newly painted walls are cured properly. Clean the surface and free from dust or contaminations. Peel the pre-cut wall sticker pieces from the paper and paste it on your surface with your creative ideas.\n", "\n", "\n", "Idx: 2037\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Dell Original 65 WHR 6 Cell Battery for Precision Mobile M4600 M4700 M6600 M6700 WorkStations Always on the go- No more worries about running out of battery power! You can power your Laptop with this 6-Cell Lithium-Ion Primary Battery from DellTM. With a capacity of up to 65 WHr, the battery lets you work seamlessly when you are on the move for business trips or vacations. This battery provides uninterrupted reliable performance you need to get the most out of your system.\n", "\n", "\n", "Idx: 2092\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "120mm Aluminum Alloy Stainless Mesh Fan Filter Dust Guard (Black) Description: aluminum filter with stainless mesh for 12cm PC Case Fan. olded Design - Provides larger surface area for dust blocking. r Metal Wires - Allows more air flow to pass through. um Filter - Super durable and easy cleaning. ust - Stainless Mesh to prevent rusting. >Specification: Color: Blackal: Aluminium AlloyApprox 120mm*120mm*2mm>Package Includes: 1X Dustproof Aluminum Stainless Mesh Fan Filter.\n", "\n", "\n", "Idx: 2098\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Disney FROZEN Blue Music Box with Movie Artwork and the Melody of Let It Go by The Bradford Exchange by Bradford Exchange Bring home the magic of Disney's Frozen and the melody of Let It Go with this heirloom collectible treasure, Disney FROZEN Music Box, available from The Bradford Exchange;Licensed by Disney;Handcrafted heirloom-quality with a wintry blue finish, silvery ball feet and fully lined with elegant black velvet;Gleaming frame on the lid surrounds colorful movie montage artwork of sisters Anna and Elsa the Snow Queen, Kristoff and his faithful friend Sven, and the lovable Olaf;The heartwarming words of the movie: Love Will Thaw a Frozen Heart is inscribed on the lid in elegant script of this Disney FROZEN Music Box\n", "\n", "\n", "Idx: 2121\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Compton Valance Super F.A.R.T.s versus the Master of Time Review The crazy plotline, eccentric characters and witty footnotes and author comments had me laughing out loud... Cool illustrations and design make these ideal for reluctant readers but honestly everyone will enjoy this excellent series. --Lovereading4kids \t\t\t\t \t \t\t\t\t\t About the Author Matt Brown has worked as a radio producer, DJ and TV presenter, appearing on children's channel Nickelodeon and hosting shows including The Bigger Breakfast, Love Island Aftersun and \"I'm A Celebrity...Get Me Out of Here Now!\". He is currently the host of the Heart Thames Valley radio breakfast show. He has held snakes in jungles, driven huskies in the arctic circle and persuaded a taxi driver in Delhi to let him drive his cab.\n", "\n", "\n", "Idx: 2185\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Shinco 80 cm (32 Inches) HD Ready Smart LED TV SO32AS (Black) (2019 model) Size name:32 Inches Thinking of buying a new smart LED TV, your search ends here. Our brand assures availability of a wide range of LED TVs with latest technology. These televisions comes with an A+ Grade Panel enhance your viewing experience by keeping in combination, impeccable image quality and wide screen dimensions well-equipped with an Android Platform. At Shinco, we aim to capture and infuse the ever-expanding entertainment possibilities which endow the best way to watch your favourite movies and TV shows as well as browse through web videos on the expansive and stunning screen. Now say goodbye to the traditional ways of watching movies. Feel free to take advantage of multiple apps which are set open for download and can be taken into functioning in a way much cooler than working on a laptop. Rest on your couch and search through the content online whilst using screen mirroring capabilities to watch photos and movies from smartphones and tablets via quick wireless transfer. Access YouTube, stay connected to your social networking platform in between watching your favourite shows. All this now, at one place. Isn't it amazing?\n", "\n", "\n", "Idx: 2204\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Swad Digestive Chocolate Candy Jar, 300 Candies Swad digestive drops is a delicious and tingling candy that's fun to have at any time of the day. What's more, it is a great treat to your stomach too. Swad is a product that is universally relished by people of all ages. Swad's khatta meetha taste is the best way to enjoy while staying healthy. This Ayurveda-based candy is purely made of herbal ingredients which give it a unique blend of taste and health. Swad digestive drops comes in convenient pillow packs and is the perfect way to complete your daily meal. Swad has been a proud brand of Panjon Ltd. and enjoys a tremendous place in every Indian's heart. Available in 5 flavors - Swad regular, Swad imli, Swad mango, Swad orange, Swad kachaa aam and Swad chatpati. Each flavor is power packed with digestive and ayurvedic ingredients which give it a unique taste. Swad candies vividly enjoys the status of a pioneer in digestive candy segment. Living its most popular slogan \"Chahe Jitna Bhi Khao,Swad Se Pachao \",from grandfathers to grandchildren Swad is a family's favorite candy. Available in 20, 100, 300, 600 candies per jar/pack. Keep in a cool and dry place.\n", "\n", "\n", "Idx: 2228\n", "True: Clothing & Accessories\n", "Predicted: Books\n", "Description:\n", "The Koran Interpreted: A Translation About the Author Arthur John Arberry, as Head of the Department of Classics at Cairo University, acquired a firsthand knowledge of literary and social conditions in the Islamic Middle East. Between 1947 and 1969 he served as Sir Thomas Adams Professor of Arabic at Cambridge University. He published some twenty books in Islamic studies during his lifetime, many dealing with mysticism and poetry. Professor Arberry died in England in 1969.\n", "\n", "\n", "Idx: 2277\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Organic Tattva Natural Rock Salt, 500g Our Mission: Our brand mission is to help people live a healthier, wholesome life by providing them with a variety of 100 percent certified, authentic organic foods. We value honesty, integrity and continual self-improvement. We are committed to a sustainable environment, zero-additive foods and complete customer-satisfaction. Brand philosophy: The brand organic tattva is based on the principles of health, ecology, fairness and care. At organic tattva, the team works with accredited organic farmers who do not use fertilizers, pesticides and genetically modified seeds so that their consumers can enjoy the benefits of nature and relish nutritious, healthy, pure and chemical-free food, an important factor contributing to overall wellbeing.\n", "\n", "\n", "Idx: 2296\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Ekta - Jewellery Boutique (Sr), Multi Color Give your girls wings of creativity and imagination with this kit exciting kit that allows you to create your own designer jewellery the kit includes colourful acrylic beads loops clasps ear loops etc.\n", "\n", "\n", "Idx: 2298\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Popular Essentials Gold Sona Masuri Rice, 1kg\n", "\n", "\n", "Idx: 2306\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "The Out-of-Sync Child: Recognizing and Coping with Sensory Processing Disorder (The Out-of-Sync Child Series) Review Praise for the works of Carol Kranowitz   \"The Out-of-Sync Child has become the parents' bible to [Sensory Processing Disorder].\"--The New York Times “This book is great! It is a real contribution to the parents of the many children who are so hard to understand.  It will let parents off the hook of blaming themselves… and will help them get on to the job of addressing the child’s underlying difficulties.” --T. Berry Brazelton, MD, founder, Brazelton Foundation, Children’s Hospital, Boston   “Warm and wise, this book will bring both hope and practical help to parents who wonder why their kid doesn’t ‘fit in.’” --Jane M. Healy, learning specialist and author of Your Child’s Growing Mind   “The Out-of-Sync Child does a masterful job of describing the different ways children react to sensations and integrate their responses to their world. The book provides detailed, practical information that will help parents understand how the nervous system works.” --Stanley I. Greenspan, MD child psychiatrist and author (with Serena Wieder) of The Child with Special Needs   “Comprehensive yet easy to understand… helpful tools for parents to promote healthy integration.” --The Exceptional Parent About the Author Carol Stock Kranowitz, M.A., is the author of The Out-of-Sync Child Grows Up, The Out-of-Sync-Child, and The Out-of-Sync Child Has Fun. She is also the co-author on Growing an In-Sync Child with Joye Newman, M.A. She has been a preschool teacher for more than 25 years. She has developed an innovative program to screen young children for Sensory Processing Disorder, and writes and speaks regularly about the subject. She has an M.A. in Education and Human Development.\n", "\n", "\n", "Idx: 2313\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "The Intel Microprocessors: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium pro Processor, Pentium II, Pentium III, Pentium 4, and Core2 ... - Architecture, Programming, and Interfacing \n", "\n", "\n", "Idx: 2316\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "See Inside || Cat Interactive Toys with a Running Mice and a Scratching Pad,Catch The Mouse,Cat Scratcher Catnip Toy CATCH THE MOUSE CAT KITTEN CHAISE TOY: The Catch the Mouse toy is a grooming and fun all in one cat mat. The carpeted scratch pad keeps your cat's nails clean, healthy and strong. While the mouse spins round and round with just a swipe of the paw to encourage healthy exercise and play! FEATURES: Ideal for any size cat No batteries required keeps your kitty entertained for hours Non-slip rubber pads protect your floors Approx. Size: 25cm x 6.5cm Box Contains 1 x Cat Toy\n", "\n", "\n", "Idx: 2379\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Noise Mate 10W Alarm Clock Wireless Speaker (White) Colour:White Say hello to your best MATE- from assisting in waking you up with the help of alarm clock to providing weather updates, it takes care of your needs. Whether you want to listen to some soothing music or take a few work calls, MATE is perfect for indoor use. Pair it with your device, plug in the Auxiliary wire, insert the TF Card or if you are in the mood for anything random then just switch on FM and enjoy the surround sound. Portable enough to be taken anywhere and stylish enough to go match with the aesthetics of any room, this wireless speaker is the complete package.\n", "\n", "\n", "Idx: 2383\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Puma 22 Ltrs Puma Black Laptop Sleeve (7536901) Product Description Puma is known for best product quality. This bag comes with unique styling and with added features. Sporty, trendy and functional at the same time. \t\t\t\t \t \t\t\t\t\t brand_description Performance on all levels - This is PUMA.  As one of the world’s leading sports brands, PUMA believes in standing on the same playing field as the fastest athletes on the planet. With a mission of Forever Faster, PUMA shares excitement in Teamsports, innovates Golf, brings style into Running and Training and performance into Motorsports. PUMA has associations with some of the most elite athletes, such as sprint legend Usain Bolt, star striker Antoine Griezmann, Indian Cricket Captain Virat Kohli, fashion icons like Cara Delevingne, Selena Gomez, and many more.\n", "\n", "\n", "Idx: 2387\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "SWEETNIGHT Terry Cotton Women's Dressing Gown and Kimono (Blue) Feel comfortable and look stylish by wearing this Bath Gown set from Sweet Night. Made from cotton, this set comprises a Gown and matching Robe with Pocket and this set is Regular Fit. You can wear this set after Bath for a comfortable feel.\n", "\n", "\n", "Idx: 2405\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Quick Heal Total Security Latest Version - 2 PCs, 3 Years (DVD) Style Name:2 Devices, 3 Years (CD/DVD) Product Description Secures your online banking activities, ensures that your children stay safe on the Internet, and guarantees your PC’s safety against known and unknown malware. Quick Heal Total Security is a combination of everything that makes your PC super tough against malware threats, infected websites, phishing attacks, data theft, infected and spam emails.For Technical Assistance, please contact_us on: [ 18001217377 ]. From the Manufacturer Key Features Protects financial transactions during online banking and shopping Blocks infected, fake, and harmful websites Parental Control protects children from online threats PCTuner improves computer performance Block unknown USB drives from copying data from your computer 24x7 protection against all threats This item is non-returnable Advanced DNAScan The ingenious Quick Heal DNAScan technology is now enhanced to combine behavioral and characteristic inspection and monitoring of malicious programs. This results in a clean, more up-to-date, and accurate threat detection. User can select from three levels of detection. After detecting any suspicious behavior, the Behavior Detection System suspends further activities of the application and prompts user with Allow and Block options. If the application is blocked, the application is terminated and its executable is quarantined. Behavior Detection System’s options can be configured from Files & Folders – Advance DNAScan. There are three defined levels of detection that the user can select from, namely: High: Behavior Detection System will closely monitor the behavior of a running application and will alert if any unusual application behavior is noticed. Moderate: Behavior Detection System will alert if any suspicious activity of a running application is noticed. Low: Behavior Detection System will alert only if any malicious activity of a running application is noticed. Safe Banking This feature is designed to protect your online banking activities from fraudulent websites and malicious programs that steal financial information. This antivirus feature provides you with a safe desktop session where your financial transactions on banking portals, shopping and other e-commerce websites stay private and hidden from hackers. You can launch Safe Banking by clicking its shortcut on your desktop. You will be taken to a private session where you can shop and bank online securely. Vulnerability Scanner This is a proactive antivirus feature that notifies you of critical security vulnerabilities that can be used by hackers to compromise your PC and data stored in it. The feature also helps you fix these vulnerabilities. The feature runs in the background as soon as you initiate a Full System Scan on your PC. PC2Mobile Scan Earlier, users had to go through an exhaustive list of mobile devices to select their device type and scan it for viruses and malware. The improved PC2Mobile Scan feature has simplified this process. Users can now simply connect their mobile device, search for it and scan it in seconds. This feature supports Windows, Android, iOS, BlackBerry, and Symbian devices. Quick Heal Remote Device Management(RDM) This is a free portal where you can add your Quick Heal enabled device, view its current status, and get notified of any critical situation such as malware infections. Via the portal, you can also renew your product license. Firewall An essential antivirus feature, the Firewall comprises the Stealth Mode. When this mode is ON, your PC becomes invisible in a network.This prevents hackers from tracing your system and attacking it. Firewall offers multiple settings that you can configure depending on the level of protection you desire for your computer. You can set protection levels to High, Medium or Low for Internet traffic and applications that try to connect to your network. Core Protection Assures complete protection for your PC with a deep system scan through AntiVirus, AntiSpyware, AntiMalware, AntiRootkit, Silent Firewall, and IDS/IPS. AntiVirus Scans and removes viruses, worms, Trojans, and other threats that may sneak into your system through removable drives, email attachments or Internet downloads. AntiSpyware Detects, cleans, and blocks spywares to prevent identity theft. Secures your confidential information. AntiMalware Scans registry, files and folders at lightning speed, detecting and cleaning Spywares, Adwares, Roguewares, Dialers, Riskwares, and other potential threats. Detects and removes potentially unwanted applications (PUAs). AntiRootkit Detects and cleans rootkits proactively with a deep system scan. Firewall Protection Works silently in the background and monitors network activity for viruses, spywares, and other malicious agents. Using Intrusion Detection System (IDS), it detects harmful network activity and Intrusion Prevention System (IPS) prevents malicious network activity. Self Protection Protects Quick Heal files, folders, configurations, and registry entries from getting tampered by malicious threats. It also protects Quick Heal’s processes and services from being stopped. Improved Scan Engine The revamped virus protection avoids rescanning of files that have not been altered since the previous scan. This reduces system resource usage. Web Security Real time cloud-based security restricts access to malware infected, fraudulent, and phishing websites. Prevents threats transferred through websites hosting malicious codes as you surf the Internet. Browsing protection Protects your desktop and laptop from malicious online threats. AntiPhishing Automatically scans web pages as you surf the Internet for fraudulent activity to protect you against any phishing attack. Zero-day Protection Protects your system from zero-day threats which presently do not have any solution. Browser Sandbox Browsing in a secure interface. Running your web browser in Sandbox Browser gives you an uninterrupted and secure browsing experience. It provides Internet security by acting like a screen between the PC's operating system and malicious threats on the Internet. Email Security Quick Heal Total Security gives cloud-based email security that prevents spam, phishing, and infected emails from reaching your Inbox. AntiSpam blocks spam, phishing, junk, and other unwanted mails from reaching your Inbox. Uses live, cloud-based protection to check suspicious files restricting malware before it reaches your Inbox. Parental Control Helps you manage, monitor, and control your children’s Internet usage. Schedule, control, and monitor Internet usage for your children.Configure parental control based on user accounts. Parents can restrict their children or other users from accessing unwanted websites based on categories such as pornography, crime, violence, drugs, etc. Allow access to certain sites from blocked website categories by adding them to the exclusion list. When you block a website category, all sites under that category are blocked. But you can allow certain sites that you trust by adding them in the exclusion list. For example, if you block Social Networking & Chat category, you still can allow Facebook by adding it to the ‘Exclude list’. Control Internet activity and usage by scheduling Internet access timings. This helps you control Internet usage and activity of your children and other users. If you allow your children to access the Internet between 7:00 PM to 8:00 PM every day, or other times on weekends, you can do so easily using the ‘Schedule Internet Access’ option. This will prevent your children from accessing the Internet without your knowledge or spending unnecessary time online. You can restrict access to specific websites that you think are unsuitable for your children or other users, though such sites may not necessarily be in the adult category. For example, you may restrict websites based on fashion, drugs, etc. Data Theft Protection Prevents unauthorized copying of data using flash drives. Prevents unauthorized copy of confidential or sensitive data from your PC. Prevents USB storage devices such as pen drives, CD writers and other external drives from accessing your PC. Restricts data from either being copied to removable drives or being transferred from external devices to your system. Privacy Protection Securely deletes sensitive data files to prevent recovery by any recovery tools. Permanently removes files from your system, unlike the normal deletion process where deleted data can still be recovered. PCTuner Speeds up the performance of your PC by tuning start-up applications, services, and cleaning unwanted registry entries and files. Disk Cleanup Removes all the invalid files or junk files such as invalid shortcuts, temporary Internet files, and cookies, etc., that clutter the harddrive and affect system performance. This creates a lot of free disk space that can be used for other applications and improves system performance. Registry Cleanup Cleans invalid and junk entries from system registry and boosts system performance. Duplicate File Finder Deletes copies of predefined file categories, by searching for duplicate files on your computer. Conserves disk space by moving redundant files. Defragmenter Boosts system performance by defragmenting page files and registry hives of your operating system. Traces Cleanup Removes traces from Internet history and most recently used list of various applications. Safely deletes history, cleans the cookies, cache, auto-complete forms, and passwords so that user’s privacy is not breached. It also erases traces of frequently used applications such as Microsoft Office Applications, Media Player, WinZip, etc. Stay Connected Our users now have direct access to our Facebook and Twitter pages with just a click. Quick Heal Facebook prompt encourages the user to like Quick Heal’s Facebook page. This prompt appears when a user logs in to his/her Facebook profile. Quick Heal Twitter prompt encourages users to like Quick Heal’s Twitter page. This prompt appears after 15 days of Quick Heal installation. Flash Drive Protection Automatically scans external storage devices. Prevents activation of malicious files by protecting USB drives from autorun infections. Safe Mode Protection This facility stops unauthorized users from changing Quick Heal security settings when the system is running on Safe Mode. Password Protection must be turned ON to use this feature. Silent Mode Suppresses prompts across all Quick Heal modules thereby reducing system load and allowing uninterrupted PC usage. Allows the user to play games, watch movies or presentations without interruption by suppressing prompts across all Quick Heal modules. This reduces system load without compromising on computer security. Import and Export Settings Users can import Quick Heal security settings from one computer and export it to other computers. This is helpful in cases where reinstallations or multiple computer configurations are concerned. Forgot Password This feature helps users disable Quick Heal’s Password Protection in case the password is forgotten. However, this feature is restricted to registered and activated copies of Quick Heal. Others Emergency Disk Helps create an emergency bootable CD/USB for Windows PC that scans and cleans all the drives including NTFS partitions. Boot Time Scan Allows you to schedule a Boot Time Scan of the PC that scans and cleans all drives before the operating system starts any stubborn viruses, rootkits, special purpose Trojans and loggers. AntiVirus ProInternet Security EssentialsAntiVirus Server EditionInternet SecurityTotal SecurityAdvance DNAScan ✓ ✓ ✓ ✓ ✓ Core Protection Anti virus ✓ ✓ ✓ ✓ ✓ AntiSpyware ✓ ✓ ✓ ✓ ✓ AntiMalware ✓ ✓ ✓ ✓ ✓ Anti - Rootkit ✓ ✓ ✓ ✓ ✓ Firewall ✓ ✓ ✓ ✓ ✓ Intrusion Detection ✓ ✓ ✓ ✓ ✓ Intrusion Prevention ✓ ✓ ✓ ✓ ✓ Mail Protection: Spam protection ✓ ✓ ✓ ✓ Internet Protection Browser Sandbox ✓ ✓ ✓ ✓ Safe Banking ✓ ✓ ✓ Phishing Protection ✓ ✓ ✓ ✓ Web Security ✓ ✓ Parental Control ✓ ✓ Vulnerability Scan ✓ ✓ ✓ ✓ Virtual Keyboard ✓ ✓ ✓ Privacy Protection: Data Theft Protection ✓ ✓ PC Optimization Registry Cleanup ✓ Disk Cleanup ✓ Traces Cleanup ✓ Registry Defragmenter ✓ Duplicate File Finder ✓ Mobile Phone Protection PC2Mobile Scan ✓\n", "\n", "\n", "Idx: 2441\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "A & T Hidden Micro Mini Secret Spy Pen Camera Recorder Dvr VGA 720x480p Kit with No Lights Recording, Up to 32GB SD Card (Silver) NO NEED TO LOOK TO ANOTHER SPY PEN, GUARANTEED!! This rechargeable pocket covert camera is the only thing you need to get discreetly good on any kind of performance, studies, meetings, keep your detailed notes, or for your uncover missions! No one will ever notice, this tiny pinhole ''eye'' in your shirt or on your desk office. The video and audio quality will definitely satisfy your expectations because it is high quality! A recorder pen that is one of the cool spy gadgets into your spying equipment, for real spys! This thing rips pen and pencil because it writes also perfect! It is one of the cheapest but cool things to buy and have! Resolution 720*480P (720x480AVI, 1280x1024JPG) · 30 fps · 0.3 megapixel · High Capacity Li-thion 180 mAh Rechargeable Battery · Up to 32gb SD/TF card (not included) · Charging DC 5V · Charging/Data USB extension cable · PC and MAC compatible FOR LONG LIFE OF THIS DEVICE\n", "\n", "\n", "Idx: 2462\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Old and New Original Designs in Tatting. Book No. 5. a Manual of Selected Edges, Insertions and Articles Suitable for Luncheon Sets, Yoks, Curtains, ... Medallions, Piano Scarfs, Cushions, Etc \n", "\n", "\n", "Idx: 2496\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "CVC FEC0053 ELECTROCLEAN SPRAY- 100 ML CVC ELECTROCLEAN® is a contact cleaner spray which is compatible with rubbers & plastics, formulated for use on vehicle electronic and electrical systems.\n", "\n", "\n", "Idx: 2547\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Guide To Indian Stock Market Jitendra Gala’s Guide to Indian Stock Market is all about where to invest your hard earned cash in the stock market. The book is divided into chapters so that it can help the reader make intelligent decisions and not spend in sectors which won’t give you sufficient returns. It is an ideal book for all those who are new to stock market or are trading in market without having the necessary knowledge. The book also explains the reader all fundamentals of Indian Stock Market and Reasonable plans for making money & escaping big losses in today's sky high stock market. This book is good for understanding the basics of share market. The book gives a fair idea about entering the stock market. The book can be easily bagged from Amazon.in. The contents of the book are: Investment Markets, Securities, Primary Market , IPO Related Information, Credit Rating & Agencies, Secondary Market , Depository , How to Enter Stock Market, How to Trade in Stock Market , Benefits of Investments in Stock Market, How to Make Money in Stock Market, Factors Influencing the Market, Stock Market Terminologies, Debt Investment, Derivatives ,Mutual Funds, Commodities, Technical Analysis, Fundamental Analysis, Why Investors Loose Money, Investors Grievance & Redressal, Safeguards For Investors, Rights given to Shareholder, SEBI - Prohibition of Insider Trading, Source of Information, Taxation and many more Important Chapters. About the Author Jitendra Gala is an Indian author. He has authored books like A Simplified Approach to Option Strategies and Guide to Indian Stock Market.\n", "\n", "\n", "Idx: 2560\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Adichai Educational Toy Real Working Science Microscope Refined Scientific Instruments For Children - Multi Color One of patron says that he purchased this Microscope out of his interest and curiosity and just as reminiscent of his past memories as he was a BSC graduate and used Microscopes extensively in his Biology laboratory. Surprisingly after purchasing he found that this Microscope performed as good as the laboratory Microscopes.\n", "\n", "\n", "Idx: 2575\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Legrand 369550 Video Door Phone (White) Legrand Video door entry kit- 4.3 inch LCD internal unit. Legrand door entry kits are available in hands-free and handset options to ensure utmost security of your home. The user can control his home from every room, with the expandable system of Legrand Door Phones in which up to four internal video units can be configured. Installation of these door phones is easy as it is only a 4-wire installation. The entrance panels are weatherproof, include rain shield have a hidden wide angle camera along with a hidden LED for night vision. All video units are interchangeable and compatible with each other. The video LCD internal units are available in 7 and 4.3 inch sizes, color display and with handset and hands-free versions.\n", "\n", "\n", "Idx: 2577\n", "True: Electronics\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Well Point Silver Plated Stainless Steel Long Chain for Men and Women Perfect fashion accessory for men who are of distinguished intellect, classic style and are fashion savvy. These stainless steel long chain is the perfect accessory for any wardrobe. We provide gorgeous, amazing and exquisite jewelry. Easy to put on or take off. Please keep away from harsh materials like perfumes, disclaimer: product color may slightly vary due to photographic lighting sources or your monitor settings occasion: festive, wedding and party wear and also collage and office wear.\n", "\n", "\n", "Idx: 2588\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Action Shoes Men's Formal Shoes What one needs is a partner that's always on the move, that tracks your every move, just right and smartly too. And that's exactly the inspiration behind our trendy footwear collection ranging from performance sport shoes to semi-formal and formal footwear for men, women, teenagers and kids. Ultimate in design, comfort, and fit. Action shoes not only look good but also are good for your feet. Each Action product is the manifestation of our high standards of workmanship, access to latest technology. That's how Action is synonymous with maximum quality and performance. and of course that essential look. So get into Action. And feel free to walk on the rough roads of life. Surely you'll be the winner.\n", "\n", "\n", "Idx: 2593\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Dog Toy, Dog Chew Knot Ball Rainbow Colorful Rubber Cord Woven Toy with Jingle Bell Inside, Dog Cat Training Playing Chewing Smarter Interactive IQ Toys Gift for Pets An innovative and colorful rainbow rubber ball with inside metal bell design catches your pets' eyes in seconds, inspiring your pets' spirits and getting rid of their loneliness, a fabulous companion for them when you are not home. Effectively protect your furniture from dogs' chew and bite and it is made of extra-rough rubber, long service life ensured. Feature: Color: rainbow color Diameter: 7cm Weight: 50g (0.11ib) Material: non-toxic and extra-tough rubber Package including: 1 x rainbow rubber pet chew ball\n", "\n", "\n", "Idx: 2616\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "Kartique Brass Handmade Navigational Telescope with Gift Box (Brown, 20-inch) This 20 inch victorian brass telescope with lens safety brass cap this is a quality reproduction of an antique victorian brass telescope. The telescope is inset with optical lenses to provide a magnification of 7 x. The telescope measures 20 inches when fully extended and collapses to a compact 6 inches. Ideal for using on boats, hiking trips, bird watching and gifting.Brass nautical collection.Reproduction of vintage marine telescope.Ideal for captain, pirate role for kids.Collapsible length 6 inch, full length 20 inches. Very unique gifting option.Can be used for picnic, hiking. Do not look directly at sun. Warning: Do not look at sun with telescope , do not test telescope indoor you may get blur view to follow the manual step 1: go to open area step 2 : pull all the pipes of telescope step 3 : with all the pipes stretched out , put your eye on the eyepiece and focus on something at least 500 m far away object. Start pushing the pipe last pipe near your eye slowly till you see the object clearly.\n", "\n", "\n", "Idx: 2633\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "BAJAJ VACCO 900W \"Go-Ezzee\" Non-Stick Chapati Maker C-02 (Silver) Portable Automatic Chapati / Roti Making Machine, Light Weight - Fast - Convenient - Hyginic - Saves Time and Energy, No Roller Pin 'Belan' Required - Automatic Double Thermostat - Temp. Control - High Quality Teflon - Non -Stick Coated Aluminium - Tawas Sturdy S.Steel Body, Shock-Proof Insulated-Bakelite Handles Ideal for making Crisp Roties, Papads ,Khakhras, Parothas ect, It is in fact a Portable - Moving Tawa.\n", "\n", "\n", "Idx: 2637\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "RADISSON Writing Table Top Elevator Writing Desk (12*16)Inch 7mm Smoke Colour P.S Sheet RADISSON WRITING TABLE TOP 12*16 INCH 7MM SMOKE P.S SHEET (MAKE IN INDIA)with 15 days warranty(t&c).The writing table top you used in your school work,office work and home work for reading,writing and drawing purposes.And also you gifted it to someone in any occasions. Avoid duplicate table top (elevator desk)they made up from chinese sheet.Always used P.S SHEETS PRODUCTS (MAKE IN INDIA) OR KOREAN PURE ACRYLIC SHEET PRODUCTS.\n", "\n", "\n", "Idx: 2690\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Cables Kart‚Universal Adapter Worldwide Travel Adapter with Built in Dual USB Charger Ports (White)\n", "\n", "\n", "Idx: 2691\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "The 4 Lenses of Innovation: A Power Tool for Creative Thinking\n", "\n", "\n", "Idx: 2718\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Epson ELPLP69 Replacement Projector Lamp / Bulb BRAND NEW AND ORIGNAL LAMP\n", "\n", "\n", "Idx: 2719\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "The Complete Photo Guide to Slipcovers: Transform Your Furniture with Fitted or Casual Covers About the Author Linda Neubauer is the senior editor for the lifestyles books of Creative Publishing international. She has written and edited dozens of books on sewing, quilting, and crafting. She lives in the Twin Cities.\n", "\n", "\n", "Idx: 2750\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Tufkote Vinyl Film Decal 3D carbon Fiber Twill-Weave Matte Design, Size 24 X 12 Inches (Black) Color Name:Black Permanent acrylic pressure sensitive adhesive. Stretchable with heat. Conforms to contours and bends easily. High temperature and water resistant. Can be cleaned with soap and water. Stands up against water, dirt, grease, salt, mild acids and oil. Long life with excellent UV durability. Easy Remove without residue. Designed for auto wrapping. Specifications Width : 24 Inches Length : 12 Inches [add qty to increase, Max length 150 feet] Color : Black. Please check with local authorities if permission required. Vehicle color change may not be allowed in your area. Multi-use : Stick on any plain clean surface - Design helmets, bikes, cars, cycles, cupboards, fridge etc. Other colors available - White, maroon, lemon green, blue, red, purple, orange, black, golden, silver. Installation Step 1: Cleaning the surface with rubbing alcohol prior to install will help in adhesion and clean and contaminants that may cause imperfections. Step 2: Using a heat gun can aid in the installation by making the vinyl more pliable and also help in removing wrinkles. Step 3: Using a soft rubber squeegee will help smooth out bubbles and wrinkles. DO NOT install in rainy or cloudy weather. DO NOT wax one week before pasting DO NOT wash 48 hrs after install. If there is a crimp or crease or if the temperature is low, blow with heat gun first from a distance and then paste.\n", "\n", "\n", "Idx: 2767\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Rise N Shine Analogue White Copper Dial Vintage Look Table Alarm Wind-Up Clock With Night Led Display - Rnswt084 New Stylish Vintage Look Copper Colour Table Clock With Alarm will surely wake you up!!! Perfect For Home And Office Desk Runs on 1 pc AA BATTERY(1PC) (Free Battery Included ) High-Quality Finish Chrome Finish BODY- METAL MIX Battery Included: Yes No. of Batteries: 1 Color: Light Blue Material -Metal\n", "\n", "\n", "Idx: 2772\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "ToyShine Girl's Rainbow Loom Band Kit Toy Rainbow loom band kit toy, more than 2500 bands are available. Best toy gift birthday gift for girls.\n", "\n", "\n", "Idx: 2785\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Eerafashionicing 9.5mtr Golden Tessals Laces With 2 Pink Button for Dresses, Sarees, Lehenga, Suits, Bags, Decorations, Borders, Crafts ( Combo Laces with Button) About Products:- Eerafashionicing Designer Fancy and Stylish Patches, Latkan, Laces, Buttons, beeds, Designer for Dress, Lehenga Choli, Suits, Kurti and Craft. These are mainly used in ethnic indian dresses and art craft works. These beautiful designer Iteam can Use beautify your dresses, sarees, lehengas and dupattas to perfection. - It is very useful For Ethnic Dresses Indo Western Tops, Gowns and Traditional designer - Great for garment, handbags, gift wrapping decoration. - 100% Brand New And High Quality. - For more designs and sizes click or search \"\"Eerafashionicing\"\" Brand\n", "\n", "\n", "Idx: 2887\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Bemis 4LR Medic-Aid 4-Inch Toilet Seat Lift Spacer, Round, White Size name:round  |  Style name:4-Inch Spacer 7B4LR 000 Features: -Lid Included: Yes. -Remote Included: No. -Toilet seat equipped with a vinyl-coated steel mount bracket. -Toilet seat available in a white finish only. -Medic Aid Lift collection. -Distressed: No. Product Type: -Raised toilet seat. Dimensions: Overall Height - Top to Bottom: -4\". Overall Width - Side to Side: -14.13\". Overall Depth - Front to Back: -17.5\". Overall Product Weight: -6 lbs.\n", "\n", "\n", "Idx: 2892\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Asian Hobby Crafts 40 Watt Hot Melt Glue Gun with Glue Stick,Multi Color (3 Pieces) Color:Multi Color Glue gun is a form of thermoplastic adhesive, that is commonly supplied in solid cylindrical sticks of various diameters, designed to be melted in an electric hot glue gun. The gun uses a continuous-duty heating element to melt the plastic glue, which may be pushed through the gun by a mechanical trigger mechanism or directly by the user. The glue squeezed out of the heated nozzle is initially hot enough to burn and blister skin. The glue is tacky when hot and solidifies in a few seconds to one minute.\n", "\n", "\n", "Idx: 2922\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "2 S Dosa Rice, 1kg\n", "\n", "\n", "Idx: 2932\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Syga Wall Sticker (PVC Vinyl, 61 cm x 5 cm x 5 cm, AY9166) Easy to install just peel and paste on wall by arranging design like puzzle. Step 1: Preparation installation, the surface you wish to attach your decal to must first be clean and free from dust, grease or any other contamination. Freshly painted or lacquered surfaces must be allowed to completely cure before the decal is applied. We recommend waiting a minimum of 2 to 3 weeks. Step 2: Peel and stick simply peel those wall stickers off from backing paper and apply them on the design area. Step 3: Press firmly to squeeze out any air bubbles. Grab a cloth and give wall sticker few wipe down to ensue each wall sticker is firmly stick to the surface.\n", "\n", "\n", "Idx: 3001\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Ready Player One (Blu-ray 3D & Blu-ray) (2-Disc) Film centers on a young outcast named Wade Watts. In the near future, Watts escapes from his daily drudgery by logging onto an MMO game called 'The Oasis'. When the game's billionaire founder dies, he offers players his fortune as the prize in an Easter egg hunt within The Oasis. Watts gets in on the action then after five years finds himself facing off against corporate foes who will go to any lengths to get the money -- in both the real world and in The Oasis.\n", "\n", "\n", "Idx: 3023\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Jockey Women's Bikini Cotton provides softer feel while elastane adds stretchability to the fabric.Panties designed to sit low on the hips.Ultrasoft elastic is exposed to give added design details.\n", "\n", "\n", "Idx: 3108\n", "True: Clothing & Accessories\n", "Predicted: Books\n", "Description:\n", "Madame Pompadour's Garter: A Thrilling and Historical Romance of the Reign of Louis XV.... \n", "\n", "\n", "Idx: 3114\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "What the Dog Saw: And Other Adventures About the Author Malcolm Gladwell is a staff writer for The New Yorker. He was formerly a business and science reporter at the Washington Post.\n", "\n", "\n", "Idx: 3170\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Intel 7th Gen i5 NUC - NUC7i5BNH Barebone he Intel® NUC Kit NUC7i5BNH is built with a dual-core 7th Generation Intel® Core™ i5 processor. So you’ve got the performance to turn the Intel® NUC into a powerhouse of productivity and play, streaming your favorite movies and music, or running analytics. With dual-array front microphones, you can take full advantage of Windows® 10 and Cortana. Intel® Iris™ Plus graphics transform the viewing experience with 4K Ultra HD video and premium content playback, enabling new ways to enjoy the latest Hollywood blockbusters. And the multi-color LED ring lets you personalize your NUC with the look you want—making it at home in the living room, den, office, or any place you can imagine. Room for up to 32 GB of DDR4 RAM lets you increase performance easily. Also features a 2.5\" drive bay for an SSD or HDD with up to 2 TB of storage space.\n", "\n", "\n", "Idx: 3188\n", "True: Electronics\n", "Predicted: Clothing & Accessories\n", "Description:\n", "YeahiBaby Baby Photography Prop Basketball Outfits Headband Rompers Costume Crochet Photo Props 2pcs DescriptionOur photography props made of breathable fabric. Super soft and stretchy. A knitted basketball desgin hat and a crochet net wrap will make your baby cute and beautiful.Perfect for photography.Features- Color: As shown- Material: Cotton.- Hat circumference: 40cm.- Net wrap: waistline: 55cm; height: 36cm.Package Including1 x Hat1 x Wrap\n", "\n", "\n", "Idx: 3193\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "LADIES HANDBAGS,NUDE COLOR\n", "\n", "\n", "Idx: 3212\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Samsung Original EO-MG920BBEGIN Mono Bluetooth Headset for Galaxy S6 (Black) Sophisticated, Ergonomic Design : Show some style with the EO-MG920 Bluetooth headset. Its glossy, patterned front casing gives it a sophisticated look, while its ergonomic, slim and lightweight (9.2g) design delivers you a comfortable fit, even during extended wearing periods. Comfortable Fit : The EO-MG920 Bluetooth headset comes with both small- and medium-sized hybrid type eartips, which not only reduce outside noise thanks to exceptional sound insulation, but also deliver you an exceptionally comfortable fit. The EO-MG920’s clear earhook provides you wearing comfort, no matter what the day ahead has in store for you. Clear Voice Call Quality : Exclusively designed for making and receiving voice calls, the EO-MG920 Bluetooth headset is equipped with noise-reduction and echo-cancelling functionality, allowing for clearer voice calls. With its ideal mouth-to-microphone positioning, the EO-MG920 delivers exceptionally clear sound reproduction. Long Battery Life : The EO-MG920 Bluetooth headset offers up to 300 hours of standby time and seven hours of continuous talk time, allowing you stay in touch with the people who matter most to you, no matter where you need to be.\n", "\n", "\n", "Idx: 3226\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "CAPPL The Magnetic Dream Board - 26\" X 19\" - With 10 Pcs Of Magnets Color Name:Small The Magnetic Dream Board, has been Designed by Ms. Kajal Soni and Ms. Sonal Chhajed, with feedback from a lot of Users. The Board has been designed to help you articulate, and Present your Dreams / To Do Lists in a Visual Form. The Board has been designed in a modular form and you can Put your wishes on the Board, and once they are fulfilled you can put your next wishes. The Board is ideal for Persons of all Age Groups including Kids, Youngsters and Adults. The Board can be mounted on the wall , Horizontally as well as Vertically and can be mounted within 5 minutes. Necessary Accessories required for mounting are included. The Board is made by Professionals and is of 26\" X 19 \" Size, and is made up of wood and Metal Surface. Contents of the Package : 1. Board 2. Ceramic Magnets 3. Instruction Manual, along with sample Examples 4. Screws and other accessories for Mounting How to use the Board : 1. Place the Board on your wall in your Living Room / Drawing Room or any other Place which you visit on a Daily Basis. 2. Put your wish / Dreams / To Do Lists / Short term Goals & Long term Goals , ideally in form of Images / Photos on the board using Magnets. 3. Review the Board in Morning and Evening each day, and mentally prepare a Plan to achieve it. 4. Once you fulfill the Goal, share your next wish on the Board. 5. Get going and Hope this Product would be helpful.\n", "\n", "\n", "Idx: 3231\n", "True: Books\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Action Shoes Men's Synthetic Leather Formal Shoes Sophisticated, elegant and smart. A dress lace-up European style Oxford shoe from the synergy that compliments your personality. This unique design is also suitable for people in uniform such as the police, as it is lightweight and has a toe cap design. Appealing Toe Cap design. Lace-up system for a snug customized fit and cushioned insole.\n", "\n", "\n", "Idx: 3244\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "D3D Wireless HD IP Wifi CCTV Indoor Security Camera (Support upto 128 GB Micro SD card) (Black Color) Model:D8801 Colour:Black When it comes to security of your family, choose nothing but the best. D3D- World's leader in CCTV & Security Alarm Systems Description: Easy to setup and operate. No need of installtion service Just plug into power source and your Home and Office live view is always there on your mobile/Tablet Cloud Recording, save images on FTP server. Kepp recordings safe on cloud server even if camera is stolen or broken Support upto 128 GB SD card Step by step installation & FAQ videos 720HD resolution. Crisp & clear video every time Inbuilt Motion Detection Alarm via E-Mail, upload alarm snapshot to FTP P2P Wi-Fi connection Android and iOS mobile apps to remote control 360 rotation and all functions Features: 1 Year warranty & Customer Support in India Night vision (up to 10 meters) Video Chat with two way audio monitoring Support multiple users view live recording same time Save images and videos on mobile and tablets Best security solution for Home, Office, Shops & Schools etc. Package Included: 1x New D3D D-8801 IP Camera- Black 1x 1.5M High Quality India Power Supply (Output: 5V 2A) 1x Bracket 1x Pack of Screws 1x Detailed User Manual HOW TO INSTALL VIDEO LINK : https://youtu.be/mdefgUis6aA Troubleshotting: During setup, phone and camera must play 'dingdong' sound. If not, please reset the camera. Wi-Fi SSID and Wifi Password should not include special characters(/@& $). Supports 2.4 Ghz Wifi Frequency\n", "\n", "\n", "Idx: 3259\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "Gogolan Men's 10Pcs Functional Effervescent Spray Cleaner Set with 1 Spray Bottle Home All Purpose Stain Remover One Size White Color Name:white  |  Size:One size Feature: Multifunctional Effervescent Spray Cleaner is a powerful integrated cleaning agent. It is not only suitable for clothing stains, but also has strong decontamination effect on kitchen range hood stains, toilet floor stains, wood polish etc., which can replace your ordinary cleaning. With a one-piece cleaner, no chemical bleach, it can be safely used for pet stains without harming pets. Specification: Package includes: 10pcs Cleaning pills , 1 Spray Bottle 1 piece add 4 liters of water WARNING: Small parts.Keep away from children under 6 yrs Use methods: 1.Open glass bottle cover, put into a grain of block concentrated. 2.Fill up clear water ( recommended tap water ).\n", "\n", "\n", "Idx: 3275\n", "True: Clothing & Accessories\n", "Predicted: Electronics\n", "Description:\n", "Le Gear Pro Plus Face Mask (White) Colour:White Le Gear Pro Plus Face Mask (White).\n", "\n", "\n", "Idx: 3292\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Robo India IC-7402 7402 NOR gate IC (2 Pieces) Nor gate ic 7402. Data sheet available. 4 Nor gates.\n", "\n", "\n", "Idx: 3329\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Skylight CD, Import Atoma places the infinite reaches of the universe at the feet of their fans, presenting an atmospheric apocalyptic epos. In order to relate their tale, the Swedish trio create a synthesized sound sphere deeply anchored on a driving rock foundation. The songs evoke ethereal and electronic details that provide the complexity necessary to transform this release into a spectacular journey of discovery. Atoma's Skylight is a post rock/metal album that will make an adventurous astronaut of anyone who listens.\n", "\n", "\n", "Idx: 3354\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Rasper Clear Acrylic Table Top Elevator (Standard Size 21*15 Inches) 1 Year Limited Manufacturers Warranty Warranty T & C : This Product comes with standard 1 Year Manufacturer Warranty. The warranty certificate is valid for standard one year manufacturer warranty of the product,the warranty covers manufacturing defects only, and strictly doesn't applicable for any kind of physical damage to the product, tempering to the original product or missing or replaced orginial/genuine parts of brand/duplicate products. The warranty is manufacturers warranty hence is only applicable to the product directly purchased from the company (SHIVAM ACRYLIC PRODUCTS )itself,warranty is only applicable with the original warranty slip and the original invoice copy. No warranty would be applicable on/with missing documents out of these two documents. Keep this warranty certificate & Invoice copy safe for your future references. Warranty claims and repairs are only subject to Delhi Jurisdiction, And all the warranty claims will be settled in our DELHI(India) workshop. The warranty services are only for additional benefits to the customer, This warranty certificate, in any matter can not be treated/used as a legal document. By purchasing/using Our products & services you agree to our terms & conditions.\n", "\n", "\n", "Idx: 3394\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Advancedstore Natural Wooden Ice Cream Sticks (1000 Pieces) Size:1000 Pieces Ice creams Sticks made from 100% wooden material and comes in padck of 1000 Pcs.\n", "\n", "\n", "Idx: 3400\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Taparia 1621-8 Combination Plier Taparia combination plier is made of very special grade steel.It is the original product.It eases all your tasks and is very useful.\n", "\n", "\n", "Idx: 3410\n", "True: Electronics\n", "Predicted: Clothing & Accessories\n", "Description:\n", "40.5mm Snap-on Lens Cap LC-40.5 The JJC LC Series Snap-On Lens Cap is a lens cap for use with lenses that feature a 27-95mm filter thread. Keeping the lens covered with a lens cap when not in use will protect the lens from impact, dirt, or dust. LC-40.5 Snap-on Lens Cap Size 40.5mm\n", "\n", "\n", "Idx: 3444\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "DeckUp Meritus-L Wall TV Unit (Dark Wenge, Matte Finish) Color:Dark Wenge Assembly Required: The Product Requires Basic Assembly And Comes With Diy (Do-It-Yourself) Assembly Instructions.Product Dimensions: Length (49 Inches), Width (12 Inches), Height (11 Inches).Primary Material: Engineered Wood With Melamine Laminate.Color: Dark Wenge, Finish: Matte Finish, Style: Contemporary.\n", "\n", "\n", "Idx: 3462\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Dr. Morepen BG-03 Blood Glucose Test Strips, 50 Strips (Black/White)(Only Strips, No Glucometer) Dr. Morepen state of art manufacturing facility in the picturesque environs of baddi comprises a scientifically integrated complex of 10 plants, each with a specific product profile. The company's extensive facilities and factories are manned by a dedicated team of professionals who ensure stringent quality standards.\n", "\n", "\n", "Idx: 3481\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Shopystore 1Pc One Set Collets 635Mm 8Mm 6Mm Collet Chuck Engraving Trimming Mac Material high speed steel type chamfer end mills brand name jgzui unit type piece package weight package size\n", "\n", "\n", "Idx: 3487\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Ebee Ventilated Laptop Stand (Black) Color:Black Keep your laptop running cooler with this sleek-looking ventilated laptop stand from Ebee. Combining metal-mesh ventilated panels with an adjustable height, the laptop stand provides a better experience for you and better conditions for your laptop.\n", "\n", "\n", "Idx: 3502\n", "True: Household\n", "Predicted: Books\n", "Description:\n", "Sourcery: Complete & Unabridged (Discworld Novels) \n", "\n", "\n", "Idx: 3526\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "MSI GL63 8RE-455IN 2018 15.6-inch Laptop (Core i7-8750H/16GB/128GBSSD+1TB/Windows 10/6GB Graphics), Black As a world leading gaming brand, MSI is the most trusted name in gaming and eSports. We stand by our principles of breakthroughs in design, the pursuit of excellence, and technological innovation. Integrating gamers' most coveted extreme performance, real.\n", "\n", "\n", "Idx: 3556\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "WATERFLY Waist Bag Running Belt Fanny Pack Outdoor Sport Walking Riding Travel Waist Pouch for Men Women (Black)\n", "\n", "\n", "Idx: 3564\n", "True: Clothing & Accessories\n", "Predicted: Household\n", "Description:\n", "Desi Rang Yellow Reusable Antiskid Rain Shoe Cover Feature :Shoe Cover For Rain,Shoe Cover ReusableShoe Cover For Travel, Shoe Cover For Bike, Shoe Protector For Bikes, Shoe Protector For Bikers, Shoe Protection, Easy To Wear And Remove, Elastic In Nature, Cover Up Completelyantiskid And Reusable Material : Elastic RubberColor : YellowSize : Medium: Fits The Size Us 6 To Us 7 (Uk 5 To Uk 6, Eu 36 To Eu 43) Size : Large: Fits The Size Us 7.5 To Us 11.5 (Uk 6.5 To Uk 10.5, Eu 43 To Eu 46) Product Weight: Approx. 48G / 1.7Oz Included: 1 X Pair Of Shoes Cover\n", "\n", "\n", "Idx: 3566\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "Fujifilm Instax Mini Monochrome Film (10 Sheets) Style name:Monochrome - 10 Sheets This film is intended to add a further dimension of fun as far as photography is concerned. The monochrome film is available in a 10 exposure pack and produces 2 x 3-inch credit card-sized images in ISO 800.\n", "\n", "\n", "Idx: 3568\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Happy GiftMart Indoor Mid Size Foosball Table Football Game, Multi Color Soccer Game 51 cm Get the all time classic Foosball game, now available in a small living room friendly size. Kids will beam at the idea of being able to play Football on this compact table. This Football game table measures 51 X 31 X 10.5 cm, big enough to enjoy a full action game and yet compact enough to store. Perfect game for family fun and a great addition to your child's play room or party. The table comes with easy to hold handles and a slider score bar on the side to keep track of the score. Get one home today and let the match begin.\n", "\n", "\n", "Idx: 3590\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "Point Blanc (Alex Rider) About the Author Anthony Horowitz is the author of the number one bestselling Alex Rider books and The Power of Five series. He has enjoyed huge success as a writer for both children and adults, most recently with the latest adventure in the Alex Rider series, Russian Roulette and the highly acclaimed Sherlock Holmes novel, The House of Silk. His latest novel, Moriarty, is also set in the world of Sherlock Holmes and was published in October 2014. Anthony was also chosen by the Ian Fleming estate to write the new James Bond novel which will be published next year. Anthony has won numerous awards, including the Bookseller Association/Nielsen Author of the Year Award, the Children’s Book of the Year Award at the British Book Awards, and the Red House Children’s Book Award. In 2014 Anthony was awarded an OBE for Services to Literature. He has also created and written many major television series, including Injustice, Collision and the award-winning Foyle’s War.\n", "\n", "\n", "Idx: 3596\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Magicwand 4 Big Metal Beyblades With Led Lights 2 Launchers 1 Stadium 2 Spring Action Launchers Spinning Top - Multi Color Size:4 Blades A beyblade set which contains one stadium ,4 beyblades with led lights , 2 launchers;perfect gifting option to you loved one's & boast aroung in your friend circle;a beyblade battle stadium with 4 launchers 2 ripcords;in our endeavor to provide the products to our esteemed people possible, we periodically make product modifications, therefore actual product may vary a little than shown in the images.\n", "\n", "\n", "Idx: 3623\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Iloft® Replacement Ventilate Sport Soft Wristband Wrist Strap for Xiaomi Mi Band 3(Plus Screen Guard) (Black Green) Colour:Black Green ★New Lightweight Replacement Ventilate Sports Soft Wristband Wrist Strap For Xiaomi Mi Band 3 Main Feature: ❤PERFECT DESIGN: Fashion design, both lightweight and durable. And a row of the pressing die forming air holes, not only further reduce the weight, but also improve the permeability. Silica gel materials, environmental protection and non-toxic, feel more comfortable, perfect for sportswear. ❤EXCELLENT FITS: customized the mold by ourselves, Perfect and ONLY Fit to Xiaomi Mi Band Version 3.0 Fitness Tracker. ❤ADJUSTABLE SIZE: Free size fit your large and small Xiaomi Mi band 3 fitness super watch, convenient and enjoy very much for your exercise time ❤OPTIONAL COLOR: Kinds of color for choosing, Turns your fitness tracker band into a fashion statement with a different day. Track your steps in style wherever you go! ❤With sweat grooves design, it's helpful for sports It is with many air holes, which will make you feel ventilate Specifications: Product weight: 10g ★Product size: 26 x 1.80 x 0.5 cm / 10.23 x 0.71 x 0.20 inches Material: TPE Suitable for Xiaomi Mi Band 3 Note: The Tracker is not included in the package ★Package includes: 1x New Lightweight Replacement Ventilate Sports Soft Wristband Wrist Strap For Xiaomi Mi Band 3\n", "\n", "\n", "Idx: 3681\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Gerber 31-001773 Bear Grylls Survival Bracelet functional as both a critical survival tool and a fashion statement, the survival bracelet includes 12 feet of paracord in a stylish double cobra weave pattern. with truly one-hand size adjustability and a custom made survival whistle, the bear grylls survival bracelet is the most functional accessory you can put around your wrist.\n", "\n", "\n", "Idx: 3684\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "KAREN FOSTER Design Scrapbooking Paper, 25 Sheets, Rugby Collage, 12 x 12\n", "\n", "\n", "Idx: 3702\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Oral B Pro 600 Cross Action Electric Rechargeable Toothbrush (Multicolor) The Oral-B PRO 600 cross action electric toothbrush provides a clinically proven superior clean versus a regular manual toothbrush. The professionally inspired design of the cross action toothbrush head surrounds each tooth with bristles angled at 16 degrees, and 3D cleaning action oscillates, rotates, and pulsates to break up and remove up to 100 per cent plaque than a regular manual toothbrush. An in-handle timer helps you brush for a dentist-recommended 2 minutes. It is brought to you by Oral-B - one of the leading brand used by dentists worldwide. Compatible with the following replacement toothbrush heads: CrossAction, 3D white, sensitive clean, precision clean, floss action, trizone and dual clean.\n", "\n", "\n", "Idx: 3704\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Craft Hand Traditional Indian Wooden Nesting Doll/ Hand Painted Russian Matryoshka Stacking Dolls- Set of 5 Piece (Lady in Red Saree) Color:Red Matryoshka doll also known as a Russian nesting doll, stacking dolls, or Russian doll is a set of wooden dolls of decreasing size placed one inside another. Russian matryoshka dolls became popular all over the world during last 20-30 years. A set of matryoshkas consists of a wooden figure which separates, top from bottom, to reveal a smaller figure of the same sort inside, which has, in turn, another figure inside of it, and so on. It is a wonderful decoration for table, room or a fantastic present for your kids. Its high quality and excellent handcrafted toys. About The Craft Hand We are Manufacturer, Supplier and Exporter of Wooden Handicrafts. We have expert team of Craftsman, Carver and Sculptor. Our products are Wooden & Clay Items like Nesting Dolls, Wooden Buddha Head, Buddha Statue & clay Buddha Head, Home Decor Items etc.\n", "\n", "\n", "Idx: 3732\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Satyam Crafts's Antique Golden Chrome Polish Handmade Wall Lantern Diya Hanger - Utility Iron Craft(19.3 cm x 2 cm x 25 cm, Gold) Material: Wrought Iron With Polish. Multi purpose Uses:- Beautify Your House or Garden by Hanging Lanterns, String Light, Wind chimes,Ornaments Decor, Decorative, Planters, Flower Pots, Birds Feeders and more. Stylish:- Modern and Vintage. handcrafted in Rajasthan (india)\n", "\n", "\n", "Idx: 3759\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Gorilla Efficio+ Energy Saving 5 Star Rated 3 Blade Ceiling Fan With Remote Control and BLDC Motor, 1200mm- Earth Brown Designed and Manufactured by IIT Bombay Alumni, Gorilla Fan is India's Most Energy Efficient Fan* that consumes only 28 Watts Power at the highest Speed. Gorilla Fan is equipped with a smart and powerful BLDC Motor which makes the fan super energy efficient. Gorilla fans are equipped with smart features like sleep mode, timer mode, boost mode which adds sheer comfort to your life. Gorilla fans are manufactured from Aluminum hence Gorilla Fans are rust proof. Gorilla Fans are ideal for use in Bedroom, Living Room, Study room and Dining room. The 1200MM blade size will typically cover an area of 144 upto Sq. ft which is typically the average size of bedrooms in Urban Areas.\n", "\n", "\n", "Idx: 3760\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "BMS Lifestyle BMS01-ilo Multi-Function Electric Rice Cooker, 600ml (Colour May Vary) Tower fans offer a superior amount of air flow in an incredibly compact unit. These fans distribute air at a 90 degree angle, oscillating on a stationary base. This combination of design creates an incredibly efficient and effective product. This tower design is also the most recognizable attribute: their shape allows tower fans to slide into spaces that would otherwise be unable to house a fan unit. Most models offer air ionization, giving the space a clean fresh feeling.\n", "\n", "\n", "Idx: 3784\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "Samsung Original EO-BG920BFEGIN Bluetooth Headset with mic (Gold) Colour:Gold Ergonomic Design With an extremely comfortable fit along with a lightweight construction (33 g), the Samsung Level U in-ear wireless headphone keeps you cool in your long music sessions. It also comes with ergonomically designed hybrid-type ear tips adjustable to all neck sizes. Flaunt your personal style statement, with Level U that features a stylish accessory like design. How to Connect & Use Samsung Level U Bluetooth Headphone: https://youtu.be/SjgsuPLKG64\n", "\n", "\n", "Idx: 3821\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Lakme Absolute Blur Perfect Makeup Primer, 30 ml Lakme is India’s No.1 color cosmetics brand offering a wide range of high-end, world-class color cosmetics and skincare products. Lakme has a vast product range specially crafted by experts for the Indian skin. The brand has also been redefining fashion in India for over 15 years with Lakme Fashion Week, India’s premier fashion event. The Lakme Absolute Blur Perfect Makeup Primer is the perfect start for a flawless, professional makeup finish. The Lakme Absolute Blur Perfect Makeup Primer’s silky blur formula instantly brightens primes, softens blemishes and pores and creates a smooth skin surface to prep for makeup application. Makeup glides on effortlessly and blends seamlessly for a more vibrant, color true finish. The Lakme Absolute Blur Perfect Makeup Primer is the perfect canvas for makeup or wear-alone over your moisturiser for instant smoothness and radiance. Buy Now! The Lakme Absolute Make-Up Primer is a flawless make-up primer that preps your skin for professional make-up. • Creates the perfect base for make-up and helps it stay for longer. • Hides skin imperfections and gives you an even toned skin. • It is lightweight, water-proof, and has a smooth matte texture. Pro Tip For an even application and finish moisturize your skin with Lakme Peach Milk Moisturiser before applying the Primer.\n", "\n", "\n", "Idx: 3856\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Bonbela Children Cartoon Hooded Flannel Robe, Cute Animal Bathrobe, Siamese Sleepwear for Girls and Boys Four seasons home service, practical and durable, whether it is autumn, spring or winter, it can be used in all seasons. This baby robes can be worn in an air-conditioned room in the summer, giving the children a very soft feel. In the room with a fireplace in the winter, the children's robes are enough for the children to run freely in the room.Specifications: Material: Flannel, PolyesterColor: Green, Pink, Gray, Coffee, RedStyle: Green dinosaur, Pink kitten, Grey elephant, Coffee dog, Red christmas deerStyle: SiameseSleeve length: long sleeveWeave: KnittingLength: trousersSize: 90cm, 100cm, 110cm, 120cm, 130cmSuitable for the season: spring, autumn, winter, summer90cm: suitable for 1-2 years old, height: 31.5\"-35.5\"/80-90cm;100cm: suitable for 2-3 years, height: 35.5\"-39.4\"/90-100cm;110cm: suitable for 3-4 years old, height: 39.4\"-43.3\"/100-110cm;120cm: suitable for 4-5 years old, height: 43.3\"-47.2\"/110-120cm130cm: suitable for 5-6 years old, height: 47.2\"-49.2\"/120-125cm;Package includes: 1 x Nightgown\n", "\n", "\n", "Idx: 3910\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "Aquarius Boombox Large Gen 2 Tin Storage Fun Box Claim your old school self with this gen 2 tin boombox. It measures 7.75 x 6.75 x 4, has an embossed front cover and beefy handle. Great for storing your stuff..did anyone say CASSETTE tape?\n", "\n", "\n", "Idx: 3930\n", "True: Electronics\n", "Predicted: Household\n", "Description:\n", "SRI Happie Shop Aquarium Underwater Glowing Effect Multicolour Jelly Fish (Big, 7 Inch In Length) Randam colour available colours - blue, orange light green ; pink. Its not battery operated. Its simple imitation of jelly fish in different colors. Its is kept in the fish tank as an additional attraction and decoration. Its moves as the waters makes movement in your fish tank. Its glowing effect only. There is a facility to fix it in the bottom of the tank and the toy jelly fish erects up in the water and moves as your fish tank water is moved and slashed by the fishes, aeration from your air pump or water flow from top filter.\n", "\n", "\n", "Idx: 3938\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "ViviBright GP80 1800LM 1920*1080 HD Home Theater Portable LED Projector with Remote Controller, Support HDMI, VGA, AV, USB Interfaces,Black ViviBright GP80 Portable Projector - 1800 Lumen, 40 To 135 Inch Projection, HDMI, Stereo Speaker, 1080P Support Key Features... Vivibright GP80 1800 Lumen projector will bring a cinematic viewing experience to any home Lightweight and portable enough to take away on holidays, to work or a friend's house for the big game 38 To 135 Inch projections in a compact and portable projector Supports 1080P and has HDMI, AV, USB and VGA input ports.\n", "\n", "\n", "Idx: 3968\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Pramukh Fashion Women's Georgette Saree (New Cream, Multicolour, Free Size) Explore the collection of beautifully designed sarees from Shree. Each piece is elegantly crafted and will surely add to your wardrobe. Pair this piece with heels or flats for a graceful look.\n", "\n", "\n", "Idx: 4005\n", "True: Electronics\n", "Predicted: Books\n", "Description:\n", "SYNC: The Emerging Science of Spontaneous Order From Booklist The nonlinear dynamics of complex systems has been a most hip career field in recent decades. Publishers like to tap its professional popularity for a general audience--James Glieck's Chaos (1987) precipitated a trend leading up to such recent offerings as Albert-Laszlo Barabasi's Linked (2002). Strogatz nods to both predecessors in his tour of synchrony, which simply means ordered behavior through time, for example, the beat of a heart. Living things' exhibition of synchrony called forth the field of mathematical biology, whose principal figures and ideas occupy the first part of Strogatz's book; the second part delves into synchronic behavior of inanimate matter, such as superconductivity. Writing accessibly for the nonmathematical, Strogatz explains how \"coupled oscillators\" are central to synchrony; presents their ubiquity, from fireflies to vehicular traffic; and accents the personalities who make synchrony a creative frontier of science (or who went over to the dark side--paranormal research--such as Nobelist Brian Josephson). With a personable narrative voice, Strogatz delivers the goods for followers of complexity theory. Gilbert TaylorCopyright © American Library Association. All rights reserved Review \"SYNC is a wonderfully lucid and thoroughly entertaining story of the emerging science of synchrony.\" -- Brian Greene, author of The Elegant Universe, Professor of Physics and Mathematics, Columbia University\"A vivid, first-hand account of what it is like to be at the beginning of a scientific revolution.\" -- Focus\"Beautifully written and breathtaking in scope, SYNC tells both a personal and a scientific story.\" -- Charles S. Peskin, Professor of Mathematics and Neural Science, New York University\"Compulsively readable.\" -- Science\"Describes dozens of sights and sounds that arise from collective, synchronized behavior . . . Delightful.\" -- Discover\"Every now and then you come across a science book that's just fun and amazing to read.\" -- Leader-Post [Regina]\"Inspiring . . . offers a real sense of what it's like to be at the beginning of Something Big.\" -- NewScientist.com\"Offers a real sense of what it's like to be at the beginning of Something Big.\" -- New Scientist\"Strogatz . . . is a first-rate storyteller and an even better teacher . . . SYNC is a great read.\" -- Nature See all Product description\n", "\n", "\n", "Idx: 4038\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Wolfram Industrie Tungsten Rods Pack Of 10 Pcs Tungsten rods for TIG welding.\n", "\n", "\n", "Idx: 4044\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "Krevia Amazing Picnic Camping Portable Waterproof Tent For 2 Person Offering the easiest way to setup tent. Unlike other tents this is not only light weighted but can be set-up in less than one minute! Just carry your tent along! It is constructed with a durable polyester fabric wall and roof with silver polyurethane and a shock-corded fiberglass pole frame. The large front entrance is equipped with a zipper mesh closure and zippered storm flaps. A must have for all your outdoor trips. Specification : strong fiberglass; light to carry; good air ventilation; mesh door and windows; good waterproof; wearable and waterproof floor; Dome-style tent for 2 persons. Lightweight enough for hiking and traveling, and easy to setup and fold up. Lightweight steel stakes for stability and strength. Easy carry away, setup and fold up\n", "\n", "\n", "Idx: 4052\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "3D Innovations CHPSS508-6 3D Printer Turbo Blower Cooling Fan 5015 12V 50mm X 50mm X 15mm (Quantity: 1 Piece) (Size: 5015) Size:Size: 5015 3D printer turbo blower cooling fan 5010 12v 50mm x 50mm x 15mm is excellent for hot end nozzle cooling.\n", "\n", "\n", "Idx: 4056\n", "True: Household\n", "Predicted: Clothing & Accessories\n", "Description:\n", "Sathiyas Baby Girls Cotton Gathered Dresses (Multicolor, Set of 5) Your girl will look like a little fashion when she wears this multicolour dresss from the latest collection of Sathiyas. Made from a cotton, it is also extremely skin friendly. Designed with attractive print for that eye-catching appeal, Set of 5 Dress is perfectly suit for your new born, this cotton frock is best worn with belly shoes and a charming head band.\n", "\n", "\n", "Idx: 4136\n", "True: Books\n", "Predicted: Electronics\n", "Description:\n", "Digital Hearing Amplifier by Britzgo BHA-220. 500hr Battery Life, Modern Blue, Doctor and Audiologist designed ' FDA Approved ' premium digital hearing amplifier by britzgo. bha-220britzgo premium hearing amplifiers offer many of the benefits of a 1500 hearing amplifier but at a fraction of the cost.our digital sound amplifiers are ready to wear right out of the box with no testing or fitting required. whether at a concert with friends or an intimate dinner, hear in superior sound with a digital hearing amplifier. a psap by britzgo is great option for those not ready to spend thousands on a hearing amplifier but just need a little boost. features ã â‚ â super efficient power consumptionã â‚ â 500+ hour battery lifeã â‚ â all day comfort with this small, discreet deviceã â‚ â easy one finger operationã â‚ â active digital noise reductionã â‚ â modern stylish design and ready to wearwhat's in the kit?ã â‚ â premium wireless hearing amplifierã â‚ â compact carrying caseã â‚ â 3 different size ear tips for a good fit and comfortã â‚ â two long life batteriesã â‚ â cleaning brushã â‚ â easy to read instructionslightweight and comfortable, our hearing amplifiers are a great affordable option providing a clear sound boost when you need it the most.\n", "\n", "\n", "Idx: 4141\n", "True: Household\n", "Predicted: Electronics\n", "Description:\n", "GKP PRODUCTS Spy Hd Pen Camera with Voice-Video Recorder and Dvr-Hidden-Camcorder (Multi-Color) Model 209838 Experience advanced technology with the video recording pen camera. This hi-tech USgadget has sophisticated technology packed into the compact body of a pen. In addition to being a writing instrument, this gadget also serves as a camera, video and sound recorder. The fascinating pen has a special slot for your micro SD card. You can easily transfer your media files on to your computer, as the gadget has its own inbuilt USB device. The USB device simultaneously charges the gadget, while attached to your computer.a#dictionary#of#basic#japanese#grammar#computer#science#haiku#second#edition#by#jane#reichhold#literary#terms#public#administration#cambridge#international#english#2017#all#loor#mats#furniture#ganesh#gate#lights#gk#guide#hall#hanging#bells#hangings#home#lamp#light#fitting#ceiling#lobby#ma#made#easy#long#mirror#name#plate#nift#outdoor#papers#phy#diet#12i#12t#22i#35#35i#35t#cooler#50#50i#50t#70#7up#8i#8t#ac#air#and#fit#nutrition#bhel#biscuits#books#chips#chivda#coke#symphony#diary#dr#pepper#drink#drinks#for#weight#lo#ncert#r#watches#men#analysis#analytics#with#python#context#appeal#guys#class#10#12#clock#cool#bracelet#studio#copy#cushion#covers#decals#girls#eraser#pen#fan#gadi#autism#therapy#material#toys#cupping#set#occupational#equipments#speech#tools#kids#aid#alpha#hydroxy#ball#85#cm#bed#brush#chair#clay#cup#dolls#ed#2016#book#me#knife#krishna#large#love#making#modern#moulds#god#lord#painting#shankar#stand#stone#modeling#vases#wire#wood#statues#sculptures#1#digital#2#boys#camera#airtel#tv#d#100#rs#10kg#keyboard#tablet#20#mp#36v#meter#3d#map#print#sarees#3g#4#seater#dining#oak#wenge#4g#calling#4k#5#ir#android#circuit#switch#mi#motion#alarm#led#oreva#bulb#remote#unit#01#19208-pink#urbona#backpack#21431#5906#conditioner#transducer#bags#\n", "\n", "\n", "Idx: 4163\n", "True: Books\n", "Predicted: Household\n", "Description:\n", "GAC Gaura Art and Crafts Wooden Handicraft Home Decor Elephant Showpiece Rajasthani Handicrafts/3.5 inch (12 cm * 7 cm * 9 cm, Brown) wooden Handcrafted elephant model made from fine wood and carved by experienced craftsmen. great art and carving gives it a amazing and beautiful look that will add great look in your home.This model is best for home decoration and best gift for your dear ones.\n", "\n", "\n" ] } ], "source": [ "for i, (label_true, label_pred) in enumerate(zip(data_eval[\"category\"], eval_pred_emb)):\n", " if label_true != label_pred and label_pred != \"UNK\":\n", " print(\"Idx: {}\\nTrue: {}\\nPredicted: {}\\nDescription:\\n{}\\n\\n\".format(\n", " i,\n", " label_true,\n", " label_pred,\n", " data_eval[\"description\"].iloc[i]\n", " ))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 }