diff --git a/__pycache__/func.cpython-39.pyc b/__pycache__/func.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0f77164a27b7ce4b18c72a3d29b904570ac6855a
Binary files /dev/null and b/__pycache__/func.cpython-39.pyc differ
diff --git a/__pycache__/myfunc.cpython-39.pyc b/__pycache__/myfunc.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..93556c16a264c0ac49773fabd430c8de6ced1826
Binary files /dev/null and b/__pycache__/myfunc.cpython-39.pyc differ
diff --git a/cosine_similarity.ipynb b/cosine_similarity.ipynb
index 12ccd4651300197eba0090a45a5164b2e1ce0d3a..052974db9a5a636f3a887c95b20ea5c2b2ef54ec 100644
--- a/cosine_similarity.ipynb
+++ b/cosine_similarity.ipynb
@@ -2,3207 +2,412 @@
   "cells": [
     {
       "cell_type": "markdown",
-      "metadata": {
-        "id": "tFr3s1eh9_Mi"
-      },
+      "metadata": {},
       "source": [
-        "# Gaussian Mixture Models Implementation\n",
-        "Oscar Contreras Carrasco\n",
-        "\n",
-        "Hi everyone! This is a full implementation of Gaussian Mixture Models in Python. I really hope you will find it useful to further understand how the algorithm works.\n",
-        "\n",
-        "Let's first import the libraries we are going to be using throughout the exercise:"
+        "# Imports"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 3,
+      "execution_count": 1,
       "metadata": {
         "id": "irGOL_Dcw8ja"
       },
       "outputs": [],
       "source": [
-        "import imageio\n",
-        "import matplotlib.animation as ani\n",
-        "import matplotlib.cm as cmx\n",
-        "import matplotlib.colors as colors\n",
-        "import matplotlib.pyplot as plt\n",
-        "import numpy as np\n",
-        "import json\n",
-        "import os\n",
         "import pandas as pd\n",
+        "import random\n",
         "import statistics\n",
         "\n",
-        "from sklearn.metrics.pairwise import cosine_similarity,cosine_distances\n",
-        "from matplotlib.patches import Ellipse\n",
-        "from PIL import Image\n",
-        "from sklearn import datasets\n",
-        "from sklearn.cluster import KMeans\n",
-        "from sklearn.model_selection import train_test_split"
+        "from sklearn.model_selection import train_test_split\n",
+        "from myfunc import *"
       ]
     },
     {
       "cell_type": "markdown",
-      "metadata": {
-        "id": "hN_TKq1kVRJT"
-      },
+      "metadata": {},
       "source": [
-        "For the purposes of this exercise, we will be using the Iris dataset, which is probably already familiar to you. We can easily obtain it by using the __load_iris__ function provided by sklearn:"
+        "# Load Data"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 4,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [],
       "source": [
-        "def load_data(path):\n",
-        "    \"\"\"\n",
-        "        Load events from files and convert to dataframe.\n",
-        "    \"\"\"\n",
-        "    map_lst=[]\n",
-        "    for f in os.listdir(path):\n",
-        "        file_name=os.path.join(path,f)\n",
-        "        if os.path.isfile(file_name):\n",
-        "            for line in open(file_name):\n",
-        "                obj = json.loads(line.strip())\n",
-        "                if not obj is None:\n",
-        "                    map_lst.append(obj)\n",
-        "    return pd.DataFrame(map_lst) \n",
-        "\n",
-        "def load_dataset(df):\n",
-        "    \"\"\"\n",
-        "        Convert dataframe to user-item-interaction matrix, which is used for \n",
-        "        Matrix Factorization based recommendation.\n",
-        "        In rating matrix, clicked events are refered as 1 and others are refered as 0.\n",
-        "    \"\"\"\n",
-        "    df = df[~df['documentId'].isnull()]\n",
-        "    df = df.drop_duplicates(subset=['userId', 'documentId']).reset_index(drop=True)\n",
-        "    df = df.sort_values(by=['userId', 'time'])\n",
-        "    n_users = df['userId'].nunique()\n",
-        "    n_items = df['documentId'].nunique()\n",
-        "\n",
-        "    ratings = np.zeros((n_users, n_items))\n",
-        "    new_user = df['userId'].values[1:] != df['userId'].values[:-1]\n",
-        "    new_user = np.r_[True, new_user]\n",
-        "    df['uid'] = np.cumsum(new_user)\n",
-        "    item_ids = df['documentId'].unique().tolist()\n",
-        "    new_df = pd.DataFrame({'documentId':item_ids, 'tid':range(1,len(item_ids)+1)})\n",
-        "    df = pd.merge(df, new_df, on='documentId', how='outer')\n",
-        "    df_ext = df[['uid', 'tid']]\n",
-        "    \n",
-        "    for row in df_ext.itertuples():\n",
-        "        ratings[row[1]-1, row[2]-1] = 1.0\n",
-        "    return ratings"
+        "Load dataset"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 5,
-      "metadata": {
-        "colab": {
-          "base_uri": "https://localhost:8080/"
-        },
-        "id": "mcCzJFnT_fRQ",
-        "outputId": "6132d687-b3bd-4620-996a-d729893231b3"
-      },
+      "execution_count": 2,
+      "metadata": {},
       "outputs": [],
       "source": [
         "df = load_data(\"active1000\")"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 6,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/html": [
-              "<div>\n",
-              "<style scoped>\n",
-              "    .dataframe tbody tr th:only-of-type {\n",
-              "        vertical-align: middle;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe tbody tr th {\n",
-              "        vertical-align: top;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe thead th {\n",
-              "        text-align: right;\n",
-              "    }\n",
-              "</style>\n",
-              "<table border=\"1\" class=\"dataframe\">\n",
-              "  <thead>\n",
-              "    <tr style=\"text-align: right;\">\n",
-              "      <th></th>\n",
-              "      <th>eventId</th>\n",
-              "      <th>category</th>\n",
-              "      <th>activeTime</th>\n",
-              "      <th>title</th>\n",
-              "      <th>url</th>\n",
-              "      <th>userId</th>\n",
-              "      <th>publishtime</th>\n",
-              "      <th>time</th>\n",
-              "      <th>documentId</th>\n",
-              "    </tr>\n",
-              "  </thead>\n",
-              "  <tbody>\n",
-              "    <tr>\n",
-              "      <th>0</th>\n",
-              "      <td>2029361762</td>\n",
-              "      <td>None</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no</td>\n",
-              "      <td>cx:i9i5zdr4ns9bm4ky:2by1rj0hmjgy</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1483225227</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>1</th>\n",
-              "      <td>351617637</td>\n",
-              "      <td>None</td>\n",
-              "      <td>41.0</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no</td>\n",
-              "      <td>cx:iimz2wwcwxu7d721:2r8odp9zhg5yp</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1483225320</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2</th>\n",
-              "      <td>483221791</td>\n",
-              "      <td>None</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no/nyheter/trondheim/2016/12/31...</td>\n",
-              "      <td>cx:iimz2wwcwxu7d721:2r8odp9zhg5yp</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1483225328</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>3</th>\n",
-              "      <td>929295193</td>\n",
-              "      <td>None</td>\n",
-              "      <td>11.0</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no</td>\n",
-              "      <td>cx:idlec1eyfbpru62o:2yhui5zv6k12b</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1483225334</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>4</th>\n",
-              "      <td>1908339310</td>\n",
-              "      <td>None</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no/pluss/kultur/2016/12/31/bare...</td>\n",
-              "      <td>cx:iimz2wwcwxu7d721:2r8odp9zhg5yp</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1483225387</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>...</th>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207603</th>\n",
-              "      <td>521670073</td>\n",
-              "      <td>pluss|magasin</td>\n",
-              "      <td>112.0</td>\n",
-              "      <td>Slektsgården på Lundamo fra 1700-tallet er fyl...</td>\n",
-              "      <td>http://adressa.no/pluss/magasin/2017/03/31/tre...</td>\n",
-              "      <td>cx:2w0lpa13j3fvs185zvyme5hscg:2rx8mzv52s32i</td>\n",
-              "      <td>2017-03-31T11:49:17.000Z</td>\n",
-              "      <td>1490997586</td>\n",
-              "      <td>b270d294f458b61648f4ccf997205d0601cd1d2a</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207604</th>\n",
-              "      <td>230731556</td>\n",
-              "      <td>None</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no</td>\n",
-              "      <td>cx:1308583952725345187693:udud1r6r2t9x</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1490997592</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207605</th>\n",
-              "      <td>109227474</td>\n",
-              "      <td>None</td>\n",
-              "      <td>3.0</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no</td>\n",
-              "      <td>cx:13575749204861928455228:1k8qdj5v2uedm</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1490997594</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207606</th>\n",
-              "      <td>844878186</td>\n",
-              "      <td>None</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>None</td>\n",
-              "      <td>http://adressa.no</td>\n",
-              "      <td>cx:1371407323707628343591:3792vi84kak09</td>\n",
-              "      <td>None</td>\n",
-              "      <td>1490997595</td>\n",
-              "      <td>None</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207607</th>\n",
-              "      <td>701335784</td>\n",
-              "      <td>None</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>- Første gang en politiker etterforskes</td>\n",
-              "      <td>http://adressa.no/incoming/2017/03/31/transpar...</td>\n",
-              "      <td>cx:13575749204861928455228:1k8qdj5v2uedm</td>\n",
-              "      <td>2017-03-31T21:43:55.000Z</td>\n",
-              "      <td>1490997599</td>\n",
-              "      <td>5238b753c8d91dfbdc72bbdf809a47b6464dd591</td>\n",
-              "    </tr>\n",
-              "  </tbody>\n",
-              "</table>\n",
-              "<p>2207608 rows × 9 columns</p>\n",
-              "</div>"
-            ],
-            "text/plain": [
-              "            eventId       category  activeTime  \\\n",
-              "0        2029361762           None         NaN   \n",
-              "1         351617637           None        41.0   \n",
-              "2         483221791           None         NaN   \n",
-              "3         929295193           None        11.0   \n",
-              "4        1908339310           None         NaN   \n",
-              "...             ...            ...         ...   \n",
-              "2207603   521670073  pluss|magasin       112.0   \n",
-              "2207604   230731556           None         NaN   \n",
-              "2207605   109227474           None         3.0   \n",
-              "2207606   844878186           None         NaN   \n",
-              "2207607   701335784           None         NaN   \n",
-              "\n",
-              "                                                     title  \\\n",
-              "0                                                     None   \n",
-              "1                                                     None   \n",
-              "2                                                     None   \n",
-              "3                                                     None   \n",
-              "4                                                     None   \n",
-              "...                                                    ...   \n",
-              "2207603  Slektsgården på Lundamo fra 1700-tallet er fyl...   \n",
-              "2207604                                               None   \n",
-              "2207605                                               None   \n",
-              "2207606                                               None   \n",
-              "2207607            - Første gang en politiker etterforskes   \n",
-              "\n",
-              "                                                       url  \\\n",
-              "0                                        http://adressa.no   \n",
-              "1                                        http://adressa.no   \n",
-              "2        http://adressa.no/nyheter/trondheim/2016/12/31...   \n",
-              "3                                        http://adressa.no   \n",
-              "4        http://adressa.no/pluss/kultur/2016/12/31/bare...   \n",
-              "...                                                    ...   \n",
-              "2207603  http://adressa.no/pluss/magasin/2017/03/31/tre...   \n",
-              "2207604                                  http://adressa.no   \n",
-              "2207605                                  http://adressa.no   \n",
-              "2207606                                  http://adressa.no   \n",
-              "2207607  http://adressa.no/incoming/2017/03/31/transpar...   \n",
-              "\n",
-              "                                              userId  \\\n",
-              "0                   cx:i9i5zdr4ns9bm4ky:2by1rj0hmjgy   \n",
-              "1                  cx:iimz2wwcwxu7d721:2r8odp9zhg5yp   \n",
-              "2                  cx:iimz2wwcwxu7d721:2r8odp9zhg5yp   \n",
-              "3                  cx:idlec1eyfbpru62o:2yhui5zv6k12b   \n",
-              "4                  cx:iimz2wwcwxu7d721:2r8odp9zhg5yp   \n",
-              "...                                              ...   \n",
-              "2207603  cx:2w0lpa13j3fvs185zvyme5hscg:2rx8mzv52s32i   \n",
-              "2207604       cx:1308583952725345187693:udud1r6r2t9x   \n",
-              "2207605     cx:13575749204861928455228:1k8qdj5v2uedm   \n",
-              "2207606      cx:1371407323707628343591:3792vi84kak09   \n",
-              "2207607     cx:13575749204861928455228:1k8qdj5v2uedm   \n",
-              "\n",
-              "                      publishtime        time  \\\n",
-              "0                            None  1483225227   \n",
-              "1                            None  1483225320   \n",
-              "2                            None  1483225328   \n",
-              "3                            None  1483225334   \n",
-              "4                            None  1483225387   \n",
-              "...                           ...         ...   \n",
-              "2207603  2017-03-31T11:49:17.000Z  1490997586   \n",
-              "2207604                      None  1490997592   \n",
-              "2207605                      None  1490997594   \n",
-              "2207606                      None  1490997595   \n",
-              "2207607  2017-03-31T21:43:55.000Z  1490997599   \n",
-              "\n",
-              "                                       documentId  \n",
-              "0                                            None  \n",
-              "1                                            None  \n",
-              "2                                            None  \n",
-              "3                                            None  \n",
-              "4                                            None  \n",
-              "...                                           ...  \n",
-              "2207603  b270d294f458b61648f4ccf997205d0601cd1d2a  \n",
-              "2207604                                      None  \n",
-              "2207605                                      None  \n",
-              "2207606                                      None  \n",
-              "2207607  5238b753c8d91dfbdc72bbdf809a47b6464dd591  \n",
-              "\n",
-              "[2207608 rows x 9 columns]"
-            ]
-          },
-          "execution_count": 6,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "df"
+        "Split data-set"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 7,
+      "execution_count": 3,
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/html": [
-              "<div>\n",
-              "<style scoped>\n",
-              "    .dataframe tbody tr th:only-of-type {\n",
-              "        vertical-align: middle;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe tbody tr th {\n",
-              "        vertical-align: top;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe thead th {\n",
-              "        text-align: right;\n",
-              "    }\n",
-              "</style>\n",
-              "<table border=\"1\" class=\"dataframe\">\n",
-              "  <thead>\n",
-              "    <tr style=\"text-align: right;\">\n",
-              "      <th></th>\n",
-              "      <th>documentId</th>\n",
-              "      <th>userId</th>\n",
-              "      <th>rating</th>\n",
-              "    </tr>\n",
-              "  </thead>\n",
-              "  <tbody>\n",
-              "    <tr>\n",
-              "      <th>2207589</th>\n",
-              "      <td>505c6ab9e135314d3faa58747060b74977af3a72</td>\n",
-              "      <td>cx:29bm1b20piobtth7k2dwn6h7x:2xxeqdwxx58ld</td>\n",
-              "      <td>1</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207598</th>\n",
-              "      <td>40a78175db0a481e4b85546d587963bf8f02376a</td>\n",
-              "      <td>cx:iaxvnnrzl6wm1z5f:uf8xinqqiaa1</td>\n",
-              "      <td>1</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207599</th>\n",
-              "      <td>e0e0a5fc5b0b14d0e51b2908f15cdcc1a4743717</td>\n",
-              "      <td>cx:2w0lpa13j3fvs185zvyme5hscg:2rx8mzv52s32i</td>\n",
-              "      <td>1</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207603</th>\n",
-              "      <td>b270d294f458b61648f4ccf997205d0601cd1d2a</td>\n",
-              "      <td>cx:2w0lpa13j3fvs185zvyme5hscg:2rx8mzv52s32i</td>\n",
-              "      <td>1</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>2207607</th>\n",
-              "      <td>5238b753c8d91dfbdc72bbdf809a47b6464dd591</td>\n",
-              "      <td>cx:13575749204861928455228:1k8qdj5v2uedm</td>\n",
-              "      <td>1</td>\n",
-              "    </tr>\n",
-              "  </tbody>\n",
-              "</table>\n",
-              "</div>"
-            ],
-            "text/plain": [
-              "                                       documentId  \\\n",
-              "2207589  505c6ab9e135314d3faa58747060b74977af3a72   \n",
-              "2207598  40a78175db0a481e4b85546d587963bf8f02376a   \n",
-              "2207599  e0e0a5fc5b0b14d0e51b2908f15cdcc1a4743717   \n",
-              "2207603  b270d294f458b61648f4ccf997205d0601cd1d2a   \n",
-              "2207607  5238b753c8d91dfbdc72bbdf809a47b6464dd591   \n",
-              "\n",
-              "                                              userId  rating  \n",
-              "2207589   cx:29bm1b20piobtth7k2dwn6h7x:2xxeqdwxx58ld       1  \n",
-              "2207598             cx:iaxvnnrzl6wm1z5f:uf8xinqqiaa1       1  \n",
-              "2207599  cx:2w0lpa13j3fvs185zvyme5hscg:2rx8mzv52s32i       1  \n",
-              "2207603  cx:2w0lpa13j3fvs185zvyme5hscg:2rx8mzv52s32i       1  \n",
-              "2207607     cx:13575749204861928455228:1k8qdj5v2uedm       1  "
-            ]
-          },
-          "execution_count": 7,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
+      "outputs": [],
       "source": [
-        "data = [df[\"documentId\"], df[\"userId\"]]\n",
-        "headers = [\"documentId\", \"userId\"]\n",
-        "df_compact = pd.concat(data, axis=1, keys=headers)\n",
-        "\n",
-        "\n",
-        "df_compact = df_compact[df_compact['documentId'].notna()]\n",
-        " \n",
-        "# length before removing duplicates\n",
-        "#print(len(df_compact))\n",
-        "\n",
-        "# dropping duplicate values\n",
-        "df_compact.drop_duplicates(keep=False,inplace=True)\n",
-        " \n",
-        "# length after removing duplicates\n",
-        "#print(len(df_compact))\n",
-        "\n",
-        "\n",
-        "df_compact[\"rating\"] = 1\n",
-        "\n",
-        "pd.set_option('display.max_colwidth', 60)\n",
-        "#df_compact.loc[df_compact[\"eventId\"] == 1187690539][\"title\"]\n",
-        "\n",
-        "df_compact.tail()"
+        "train, test = train_test_split(df, test_size=0.2)"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 8,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "cx:ib1vo01vq38f2mqc:20lut6o1pv35i              7956\n",
-              "cx:1351271770996936245545:2ohfnjzl6i0r         1460\n",
-              "cx:i7kfakxrqw18lh79:1vccko6gkzhyn              1396\n",
-              "cx:3ny1lwklkwjew2vqwkl5adkarl:3lqt7vftb3hfu    1357\n",
-              "cx:f5e48x6ex7f53j657ibytaxs2:25ny9hhau79nc     1354\n",
-              "                                               ... \n",
-              "cx:1374422107708501055096:1xlyme6qz9g0z          93\n",
-              "cx:13910658260121461569850:p9s59tp5nk86          91\n",
-              "cx:13107309109141761847803:1e1rswsawyyc3         89\n",
-              "cx:2r608j1wwxufl2bvmc5nevkswr:ilbdpw1kl69v       72\n",
-              "cx:2sf5o8rm80qqm2qlpgbi8qe2ro:1l7kv1n1ca9j6      51\n",
-              "Name: userId, Length: 1000, dtype: int64"
-            ]
-          },
-          "execution_count": 8,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "users_read = df_compact['userId'].value_counts()\n",
-        "users_read"
+        "# Preperation"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 10,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "19371"
-            ]
-          },
-          "execution_count": 10,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "articles = df_compact['documentId'].unique()\n",
-        "len(articles)"
+        "### Data Preprocessing"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 11,
+      "execution_count": 4,
       "metadata": {},
       "outputs": [],
       "source": [
-        "M = df_compact.pivot_table(index=['documentId'], columns=['userId'], values='rating')"
+        "data = [train[\"documentId\"], train[\"userId\"]]\n",
+        "headers = [\"documentId\", \"userId\"]\n",
+        "train_compact = pd.concat(data, axis=1, keys=headers)\n",
+        "train_compact = train_compact[train_compact['documentId'].notna()]\n",
+        "train_compact = train_compact[train_compact['userId'].notna()]\n",
+        "train_compact.drop_duplicates(keep=False,inplace=True)\n",
+        "train_compact[\"rating\"] = 1\n",
+        "\n",
+        "train_M = train_compact.pivot_table(index=['documentId'], columns=['userId'], values='rating')\n",
+        "train_M.shape\n",
+        "train_M = train_M.fillna(0)"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 12,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "(19371, 1000)"
-            ]
-          },
-          "execution_count": 12,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "M.shape"
+        "### Train"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 13,
+      "execution_count": 5,
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/html": [
-              "<div>\n",
-              "<style scoped>\n",
-              "    .dataframe tbody tr th:only-of-type {\n",
-              "        vertical-align: middle;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe tbody tr th {\n",
-              "        vertical-align: top;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe thead th {\n",
-              "        text-align: right;\n",
-              "    }\n",
-              "</style>\n",
-              "<table border=\"1\" class=\"dataframe\">\n",
-              "  <thead>\n",
-              "    <tr style=\"text-align: right;\">\n",
-              "      <th>userId</th>\n",
-              "      <th>cx:10k2wzm1b3jsk2y5ym1utnjo97:2kefzqaxe9jx7</th>\n",
-              "      <th>cx:11asuyo07mbi13b849lp87hlje:1i9z1hu1xx694</th>\n",
-              "      <th>cx:13077170178592105431908:2so1nc52xur4d</th>\n",
-              "      <th>cx:13082126012361420762846:3nhzg71lk2zqc</th>\n",
-              "      <th>cx:13082926635761580649288:30q2cgmwa3mzi</th>\n",
-              "      <th>cx:1308583952725345187693:udud1r6r2t9x</th>\n",
-              "      <th>cx:1309558690741378897676:2952b0y4ym2yb</th>\n",
-              "      <th>cx:13107309109141761847803:1e1rswsawyyc3</th>\n",
-              "      <th>cx:13107395951811145781879:31h108vvvw6te</th>\n",
-              "      <th>cx:1311701842831565911801:20af369r0nju6</th>\n",
-              "      <th>...</th>\n",
-              "      <th>cx:xgx9bvnqjnwn3na33zslm41j6:1141wmv8rxo4m</th>\n",
-              "      <th>cx:xz8qx9tccgls29jx1ggejvc2o:3dcgsybzandnb</th>\n",
-              "      <th>cx:xzx3d9an4u6r614zazbm41gx:3d1u2by0zprqf</th>\n",
-              "      <th>cx:y3ojtj1dah373vh26yiostnfa:3bnuogklc05m0</th>\n",
-              "      <th>cx:ym4dpjqbcqqp138to9m6mm0m7:2mgigrnofe6bf</th>\n",
-              "      <th>cx:ymgd4qz84t6z31b22zecmrpz3:2bclyyq01sfwd</th>\n",
-              "      <th>cx:ywxiqgtmxyfc24eqhyzpz7jer:28kehwib7kyi8</th>\n",
-              "      <th>cx:z5nmgvym79d91yxajr8rncjp3:dd23bgkvv19x</th>\n",
-              "      <th>cx:zdxhidle29xquzztafvsik92:2w17zz40qj619</th>\n",
-              "      <th>cx:ztquyfd3pug92dd4jpqzsvxfw:dixlo02oz5eu</th>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>documentId</th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "    </tr>\n",
-              "  </thead>\n",
-              "  <tbody>\n",
-              "    <tr>\n",
-              "      <th>0006b2caef9ae801cfa0a48ec737544241ec4dca</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>00098cc438af89c1ba8fb6a37035af2e2f606ce3</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>000b8a3813a9ae59e9e14641ddcdfbd910aa6b76</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>000fd9e1ee3153e955d5e64b35691d799189aa2d</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>1.0</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>1.0</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>001b555b5fad3b0390f6f305bafcde1d3bdc5fc3</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>...</th>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>ffea2777d7703dc7307e9a6333657cfb4bf6131e</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>ffeea037b0cf89ab7b2ad06d1494537fb7b9954d</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>fff0ee44bb6de4dcab4828abfa90302af0f30d36</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>1.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>fffcc5d96f6d91418c68b17c191eb25093947b37</th>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>...</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "      <td>NaN</td>\n",
-              "    </tr>\n",
-              "  </tbody>\n",
-              "</table>\n",
-              "<p>19371 rows × 1000 columns</p>\n",
-              "</div>"
-            ],
-            "text/plain": [
-              "userId                                    cx:10k2wzm1b3jsk2y5ym1utnjo97:2kefzqaxe9jx7  \\\n",
-              "documentId                                                                              \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                          NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                          NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                          NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                          NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                          NaN   \n",
-              "...                                                                               ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                          NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                          NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                          NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                          NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                          NaN   \n",
-              "\n",
-              "userId                                    cx:11asuyo07mbi13b849lp87hlje:1i9z1hu1xx694  \\\n",
-              "documentId                                                                              \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                          NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                          NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                          NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                          NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                          NaN   \n",
-              "...                                                                               ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                          NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                          NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                          NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                          NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                          NaN   \n",
-              "\n",
-              "userId                                    cx:13077170178592105431908:2so1nc52xur4d  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       1.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       NaN   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       NaN   \n",
-              "\n",
-              "userId                                    cx:13082126012361420762846:3nhzg71lk2zqc  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       NaN   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       NaN   \n",
-              "\n",
-              "userId                                    cx:13082926635761580649288:30q2cgmwa3mzi  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       NaN   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       NaN   \n",
-              "\n",
-              "userId                                    cx:1308583952725345187693:udud1r6r2t9x  \\\n",
-              "documentId                                                                         \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                     NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                     NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                     NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                     NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                     NaN   \n",
-              "...                                                                          ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                     NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                     NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                     NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                     NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                     NaN   \n",
-              "\n",
-              "userId                                    cx:1309558690741378897676:2952b0y4ym2yb  \\\n",
-              "documentId                                                                          \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                      NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                      NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                      NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                      NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                      NaN   \n",
-              "...                                                                           ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                      NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                      NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                      NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                      NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                      NaN   \n",
-              "\n",
-              "userId                                    cx:13107309109141761847803:1e1rswsawyyc3  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       1.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       NaN   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       NaN   \n",
-              "\n",
-              "userId                                    cx:13107395951811145781879:31h108vvvw6te  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       NaN   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       NaN   \n",
-              "\n",
-              "userId                                    cx:1311701842831565911801:20af369r0nju6  \\\n",
-              "documentId                                                                          \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                      NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                      NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                      NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                      NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                      NaN   \n",
-              "...                                                                           ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                      NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                      NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                      NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                      NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                      NaN   \n",
-              "\n",
-              "userId                                    ...  \\\n",
-              "documentId                                ...   \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca  ...   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3  ...   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76  ...   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d  ...   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3  ...   \n",
-              "...                                       ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e  ...   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e  ...   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d  ...   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36  ...   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37  ...   \n",
-              "\n",
-              "userId                                    cx:xgx9bvnqjnwn3na33zslm41j6:1141wmv8rxo4m  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         NaN   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         NaN   \n",
-              "\n",
-              "userId                                    cx:xz8qx9tccgls29jx1ggejvc2o:3dcgsybzandnb  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         NaN   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         NaN   \n",
-              "\n",
-              "userId                                    cx:xzx3d9an4u6r614zazbm41gx:3d1u2by0zprqf  \\\n",
-              "documentId                                                                            \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        NaN   \n",
-              "...                                                                             ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        NaN   \n",
-              "\n",
-              "userId                                    cx:y3ojtj1dah373vh26yiostnfa:3bnuogklc05m0  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         NaN   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         NaN   \n",
-              "\n",
-              "userId                                    cx:ym4dpjqbcqqp138to9m6mm0m7:2mgigrnofe6bf  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         NaN   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         NaN   \n",
-              "\n",
-              "userId                                    cx:ymgd4qz84t6z31b22zecmrpz3:2bclyyq01sfwd  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         NaN   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         NaN   \n",
-              "\n",
-              "userId                                    cx:ywxiqgtmxyfc24eqhyzpz7jer:28kehwib7kyi8  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         NaN   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         NaN   \n",
-              "\n",
-              "userId                                    cx:z5nmgvym79d91yxajr8rncjp3:dd23bgkvv19x  \\\n",
-              "documentId                                                                            \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        NaN   \n",
-              "...                                                                             ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        NaN   \n",
-              "\n",
-              "userId                                    cx:zdxhidle29xquzztafvsik92:2w17zz40qj619  \\\n",
-              "documentId                                                                            \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        NaN   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        NaN   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        NaN   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        NaN   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        NaN   \n",
-              "...                                                                             ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        NaN   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        NaN   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        NaN   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        NaN   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        NaN   \n",
-              "\n",
-              "userId                                    cx:ztquyfd3pug92dd4jpqzsvxfw:dixlo02oz5eu  \n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        NaN  \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        NaN  \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        NaN  \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        NaN  \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        NaN  \n",
-              "...                                                                             ...  \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        NaN  \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        NaN  \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        NaN  \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        1.0  \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        NaN  \n",
-              "\n",
-              "[19371 rows x 1000 columns]"
-            ]
-          },
-          "execution_count": 13,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
+      "outputs": [],
       "source": [
-        "M"
+        "userId_list = train_compact['userId'].value_counts().axes[0].tolist()\n",
+        "\n",
+        "corr_list_list = []\n",
+        "for uid in userId_list:\n",
+        "    corr_list_list.append([uid, get_corr_list(uid, train_M)])"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 14,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/html": [
-              "<div>\n",
-              "<style scoped>\n",
-              "    .dataframe tbody tr th:only-of-type {\n",
-              "        vertical-align: middle;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe tbody tr th {\n",
-              "        vertical-align: top;\n",
-              "    }\n",
-              "\n",
-              "    .dataframe thead th {\n",
-              "        text-align: right;\n",
-              "    }\n",
-              "</style>\n",
-              "<table border=\"1\" class=\"dataframe\">\n",
-              "  <thead>\n",
-              "    <tr style=\"text-align: right;\">\n",
-              "      <th>userId</th>\n",
-              "      <th>cx:10k2wzm1b3jsk2y5ym1utnjo97:2kefzqaxe9jx7</th>\n",
-              "      <th>cx:11asuyo07mbi13b849lp87hlje:1i9z1hu1xx694</th>\n",
-              "      <th>cx:13077170178592105431908:2so1nc52xur4d</th>\n",
-              "      <th>cx:13082126012361420762846:3nhzg71lk2zqc</th>\n",
-              "      <th>cx:13082926635761580649288:30q2cgmwa3mzi</th>\n",
-              "      <th>cx:1308583952725345187693:udud1r6r2t9x</th>\n",
-              "      <th>cx:1309558690741378897676:2952b0y4ym2yb</th>\n",
-              "      <th>cx:13107309109141761847803:1e1rswsawyyc3</th>\n",
-              "      <th>cx:13107395951811145781879:31h108vvvw6te</th>\n",
-              "      <th>cx:1311701842831565911801:20af369r0nju6</th>\n",
-              "      <th>...</th>\n",
-              "      <th>cx:xgx9bvnqjnwn3na33zslm41j6:1141wmv8rxo4m</th>\n",
-              "      <th>cx:xz8qx9tccgls29jx1ggejvc2o:3dcgsybzandnb</th>\n",
-              "      <th>cx:xzx3d9an4u6r614zazbm41gx:3d1u2by0zprqf</th>\n",
-              "      <th>cx:y3ojtj1dah373vh26yiostnfa:3bnuogklc05m0</th>\n",
-              "      <th>cx:ym4dpjqbcqqp138to9m6mm0m7:2mgigrnofe6bf</th>\n",
-              "      <th>cx:ymgd4qz84t6z31b22zecmrpz3:2bclyyq01sfwd</th>\n",
-              "      <th>cx:ywxiqgtmxyfc24eqhyzpz7jer:28kehwib7kyi8</th>\n",
-              "      <th>cx:z5nmgvym79d91yxajr8rncjp3:dd23bgkvv19x</th>\n",
-              "      <th>cx:zdxhidle29xquzztafvsik92:2w17zz40qj619</th>\n",
-              "      <th>cx:ztquyfd3pug92dd4jpqzsvxfw:dixlo02oz5eu</th>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>documentId</th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "      <th></th>\n",
-              "    </tr>\n",
-              "  </thead>\n",
-              "  <tbody>\n",
-              "    <tr>\n",
-              "      <th>0006b2caef9ae801cfa0a48ec737544241ec4dca</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>00098cc438af89c1ba8fb6a37035af2e2f606ce3</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>000b8a3813a9ae59e9e14641ddcdfbd910aa6b76</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>000fd9e1ee3153e955d5e64b35691d799189aa2d</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>1.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>1.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>001b555b5fad3b0390f6f305bafcde1d3bdc5fc3</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>...</th>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "      <td>...</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>ffea2777d7703dc7307e9a6333657cfb4bf6131e</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>ffeea037b0cf89ab7b2ad06d1494537fb7b9954d</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>fff0ee44bb6de4dcab4828abfa90302af0f30d36</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>1.0</td>\n",
-              "    </tr>\n",
-              "    <tr>\n",
-              "      <th>fffcc5d96f6d91418c68b17c191eb25093947b37</th>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>...</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "      <td>0.0</td>\n",
-              "    </tr>\n",
-              "  </tbody>\n",
-              "</table>\n",
-              "<p>19371 rows × 1000 columns</p>\n",
-              "</div>"
-            ],
-            "text/plain": [
-              "userId                                    cx:10k2wzm1b3jsk2y5ym1utnjo97:2kefzqaxe9jx7  \\\n",
-              "documentId                                                                              \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                          0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                          0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                          0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                          0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                          0.0   \n",
-              "...                                                                               ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                          0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                          0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                          0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                          0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                          0.0   \n",
-              "\n",
-              "userId                                    cx:11asuyo07mbi13b849lp87hlje:1i9z1hu1xx694  \\\n",
-              "documentId                                                                              \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                          0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                          0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                          0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                          0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                          0.0   \n",
-              "...                                                                               ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                          0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                          0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                          0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                          0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                          0.0   \n",
-              "\n",
-              "userId                                    cx:13077170178592105431908:2so1nc52xur4d  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       1.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       0.0   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       0.0   \n",
-              "\n",
-              "userId                                    cx:13082126012361420762846:3nhzg71lk2zqc  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       0.0   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       0.0   \n",
-              "\n",
-              "userId                                    cx:13082926635761580649288:30q2cgmwa3mzi  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       0.0   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       0.0   \n",
-              "\n",
-              "userId                                    cx:1308583952725345187693:udud1r6r2t9x  \\\n",
-              "documentId                                                                         \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                     0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                     0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                     0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                     0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                     0.0   \n",
-              "...                                                                          ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                     0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                     0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                     0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                     0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                     0.0   \n",
-              "\n",
-              "userId                                    cx:1309558690741378897676:2952b0y4ym2yb  \\\n",
-              "documentId                                                                          \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                      0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                      0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                      0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                      0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                      0.0   \n",
-              "...                                                                           ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                      0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                      0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                      0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                      0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                      0.0   \n",
-              "\n",
-              "userId                                    cx:13107309109141761847803:1e1rswsawyyc3  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       1.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       0.0   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       0.0   \n",
-              "\n",
-              "userId                                    cx:13107395951811145781879:31h108vvvw6te  \\\n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                       0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                       0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                       0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                       0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                       0.0   \n",
-              "...                                                                            ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                       0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                       0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                       0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                       0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                       0.0   \n",
-              "\n",
-              "userId                                    cx:1311701842831565911801:20af369r0nju6  \\\n",
-              "documentId                                                                          \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                      0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                      0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                      0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                      0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                      0.0   \n",
-              "...                                                                           ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                      0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                      0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                      0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                      0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                      0.0   \n",
-              "\n",
-              "userId                                    ...  \\\n",
-              "documentId                                ...   \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca  ...   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3  ...   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76  ...   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d  ...   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3  ...   \n",
-              "...                                       ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e  ...   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e  ...   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d  ...   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36  ...   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37  ...   \n",
-              "\n",
-              "userId                                    cx:xgx9bvnqjnwn3na33zslm41j6:1141wmv8rxo4m  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         0.0   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         0.0   \n",
-              "\n",
-              "userId                                    cx:xz8qx9tccgls29jx1ggejvc2o:3dcgsybzandnb  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         0.0   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         0.0   \n",
-              "\n",
-              "userId                                    cx:xzx3d9an4u6r614zazbm41gx:3d1u2by0zprqf  \\\n",
-              "documentId                                                                            \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        0.0   \n",
-              "...                                                                             ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        0.0   \n",
-              "\n",
-              "userId                                    cx:y3ojtj1dah373vh26yiostnfa:3bnuogklc05m0  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         0.0   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         0.0   \n",
-              "\n",
-              "userId                                    cx:ym4dpjqbcqqp138to9m6mm0m7:2mgigrnofe6bf  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         0.0   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         0.0   \n",
-              "\n",
-              "userId                                    cx:ymgd4qz84t6z31b22zecmrpz3:2bclyyq01sfwd  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         0.0   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         0.0   \n",
-              "\n",
-              "userId                                    cx:ywxiqgtmxyfc24eqhyzpz7jer:28kehwib7kyi8  \\\n",
-              "documentId                                                                             \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                         0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                         0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                         0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                         0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                         0.0   \n",
-              "...                                                                              ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                         0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                         0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                         0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                         0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                         0.0   \n",
-              "\n",
-              "userId                                    cx:z5nmgvym79d91yxajr8rncjp3:dd23bgkvv19x  \\\n",
-              "documentId                                                                            \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        0.0   \n",
-              "...                                                                             ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        0.0   \n",
-              "\n",
-              "userId                                    cx:zdxhidle29xquzztafvsik92:2w17zz40qj619  \\\n",
-              "documentId                                                                            \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        0.0   \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        0.0   \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        0.0   \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        0.0   \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        0.0   \n",
-              "...                                                                             ...   \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        0.0   \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        0.0   \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        0.0   \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        0.0   \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        0.0   \n",
-              "\n",
-              "userId                                    cx:ztquyfd3pug92dd4jpqzsvxfw:dixlo02oz5eu  \n",
-              "documentId                                                                           \n",
-              "0006b2caef9ae801cfa0a48ec737544241ec4dca                                        0.0  \n",
-              "00098cc438af89c1ba8fb6a37035af2e2f606ce3                                        0.0  \n",
-              "000b8a3813a9ae59e9e14641ddcdfbd910aa6b76                                        0.0  \n",
-              "000fd9e1ee3153e955d5e64b35691d799189aa2d                                        0.0  \n",
-              "001b555b5fad3b0390f6f305bafcde1d3bdc5fc3                                        0.0  \n",
-              "...                                                                             ...  \n",
-              "ffe93cc30458ece7dc3ebf6a61e07d1d71e3bb6e                                        0.0  \n",
-              "ffea2777d7703dc7307e9a6333657cfb4bf6131e                                        0.0  \n",
-              "ffeea037b0cf89ab7b2ad06d1494537fb7b9954d                                        0.0  \n",
-              "fff0ee44bb6de4dcab4828abfa90302af0f30d36                                        1.0  \n",
-              "fffcc5d96f6d91418c68b17c191eb25093947b37                                        0.0  \n",
-              "\n",
-              "[19371 rows x 1000 columns]"
-            ]
-          },
-          "execution_count": 14,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "M = M.fillna(0)\n",
-        "M"
+        "# Usage"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 15,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "0.14573312097672908"
-            ]
-          },
-          "execution_count": 15,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "A=M['cx:29bm1b20piobtth7k2dwn6h7x:2xxeqdwxx58ld'].to_numpy()\n",
-        "B=M['cx:iaxvnnrzl6wm1z5f:uf8xinqqiaa1'].to_numpy()\n",
-        "result=cosine_similarity(A.reshape(1,-1),B.reshape(1,-1))\n",
-        "result[0][0]"
+        "### Data Preprocessing"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 16,
+      "execution_count": 6,
       "metadata": {},
       "outputs": [],
       "source": [
-        "def get_users(user, M, num):\n",
-        "    clicks = []\n",
-        "    for u in M.columns:\n",
-        "        if u == user:\n",
-        "            continue\n",
-        "        A=M[user].to_numpy()\n",
-        "        B=M[u].to_numpy()\n",
-        "        result=cosine_similarity(A.reshape(1,-1),B.reshape(1,-1))\n",
-        "        cor = result[0][0]\n",
-        "        clicks.append((u, cor))\n",
-        "    clicks.sort(key=lambda tup: tup[1], reverse=True)\n",
-        "    return clicks[:num]"
+        "data = [test[\"documentId\"], test[\"userId\"]]\n",
+        "headers = [\"documentId\", \"userId\"]\n",
+        "test_compact = pd.concat(data, axis=1, keys=headers)\n",
+        "test_compact = test_compact[test_compact['documentId'].notna()]\n",
+        "test_compact.drop_duplicates(keep=False,inplace=True)\n",
+        "test_compact[\"rating\"] = 1"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 17,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "[('cx:iikvyk1xbtjs8dfd:6h5bv0t10r03', 0.44495179980138044),\n",
-              " ('cx:ibl5xzqy8lzet1i9:t1y533t72djd', 0.4361302621298705),\n",
-              " ('cx:iii0ycatlbist2gc:2w40r1ypbnz4w', 0.42748169568106176),\n",
-              " ('cx:ictag62kg988zqg3:5ohqpdu2u97s', 0.41890886033956154),\n",
-              " ('cx:ikwt5hlo2bjdg1wr:2ub0shn3jpxf2', 0.4144401723067728),\n",
-              " ('cx:7hf6o4ggul2qz5y7wr5j0j6d:3l4q0cx6f6669', 0.4057269699921616),\n",
-              " ('cx:i7kfakxrqw18lh79:1vccko6gkzhyn', 0.40556402701114314),\n",
-              " ('cx:ijpfm1f17fytt1py:1enkt11ljeu8y', 0.4012425208068239),\n",
-              " ('cx:ibwazmhun5896ylh:2nchnkenka1bd', 0.39862851754557826),\n",
-              " ('cx:f5e48x6ex7f53j657ibytaxs2:25ny9hhau79nc', 0.3876240744058908),\n",
-              " ('cx:i5w5r4qss90t4duq:gdkqppfz1ax0', 0.380877138654505),\n",
-              " ('cx:ijtjdxpz93t5f8m5:2iz9n4nuh22ky', 0.38057591159902),\n",
-              " ('cx:ibdk1kdii4su5rtq:1bno5af3lb5j5', 0.3794762059436236),\n",
-              " ('cx:23p5u4f5q09ig3o0koa0zqlqqq:cx7sxgjny8h4', 0.378077012679135),\n",
-              " ('cx:31vb5age6wo2q35mowecaz95ji:15yxl536xys5t', 0.37755039480287933),\n",
-              " ('cx:ih24myddm90agujz:rar6aw2t3p7e', 0.37574724600911164),\n",
-              " ('cx:i8rkgdc6m43lfb8f:34c1bz8xj07ev', 0.37432247561128906),\n",
-              " ('cx:h2ljo3krw2ie33pp363laavq7:2vrzccxgi1xmd', 0.3736084425232495),\n",
-              " ('cx:vsjeqzr2a4dt379s0nd37cqt4:3flw79sr1jbl3', 0.3727843551247872),\n",
-              " ('cx:i66hq9wllds267y6:16mhjso07qwvu', 0.3723764306696227)]"
-            ]
-          },
-          "execution_count": 17,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
       "source": [
-        "user = 'cx:1351271770996936245545:2ohfnjzl6i0r'\n",
-        "users = get_users(user, M, 20)\n",
-        "users"
+        "### Set Variables"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 18,
+      "execution_count": 7,
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "498bc52ed4d2fd169a628af22e94982f0ffd76e7    17\n",
-              "58efb777e5df92096a6c27170f795eddd25e250c    17\n",
-              "b3d47ea2b17b4518b044acbd73ece5ddf3073867    16\n",
-              "6af41040924f1aa5cbc5427af8ecb63df0b36fc3    16\n",
-              "494a1f550157cc78c7ef55dd2498faa450bdaa5b    16\n",
-              "314584a62f4260b74aaf660cfe793eb00a1e618d    16\n",
-              "1dc7d27f199bdd5579024eac267aba275b3b16cc    16\n",
-              "a4108a6448e235d895c62807f493d918a9b8125e    15\n",
-              "1657feec39b7b76bc5b12865a0cbc81a61de9996    15\n",
-              "73da9c9dd611d4cc68d7ba1e0d52a58573bb9671    15\n",
-              "Name: documentId, dtype: int64"
-            ]
-          },
-          "execution_count": 18,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
+      "outputs": [],
       "source": [
-        "def get_recs(user, users, df, df_, num, filter=True):\n",
-        "    users_list = [x[0] for x in users]\n",
-        "    df_users_clicks = df[df['userId'].isin(users_list)]\n",
-        "    user_clicks = df_[df_['userId'].isin([user])]['documentId'].to_list()\n",
-        "    if filter:\n",
-        "        df_unread_only = df_users_clicks[~df_users_clicks['documentId'].isin(user_clicks)]\n",
-        "        titles = df_unread_only['documentId'].value_counts()\n",
-        "    else:\n",
-        "        titles = df_users_clicks['documentId'].value_counts()\n",
+        "simular_users_count = 50 # How many corr values to care about\n",
+        "rec_count = 50 # number>0, -1=avarage of corr\n",
         "\n",
-        "    return titles[:num]\n",
+        "random_user_index = random.randint(0, len(userId_list))\n",
+        "random_user =  corr_list_list[random_user_index]\n",
         "\n",
-        "recs = get_recs(user, users, df_compact, df_compact, 10)\n",
-        "recs"
+        "test_period_read_list = test_compact[test_compact['userId'].isin([random_user[0]])]['documentId'].tolist() # list of all articles the user actually read in test-period\n",
+        "if rec_count is None:\n",
+        "        rec_count = len(test_period_read_list)\n",
+        "elif rec_count == -1:\n",
+        "    read = []\n",
+        "    users_list = [x[0] for x in random_user[1][:simular_users_count]]\n",
+        "    for usr in users_list:\n",
+        "        c = len(test_compact[test_compact['userId'].isin([usr])]['documentId'].tolist())\n",
+        "        read.append(c)\n",
+        "    avg_read = statistics.mean(read)\n",
+        "    rec_count = int(avg_read)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "### Get a reccomendation"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 19,
+      "execution_count": 8,
       "metadata": {},
-      "outputs": [
-        {
-          "data": {
-            "text/plain": [
-              "['b16b516eefb647edec256ad2f9b2c7a897b9785b',\n",
-              " 'a02dc58701d0a51ec7717261846fbb9dd4e608af',\n",
-              " '735628ed2428f2a7b2a1b78f95f3c6d777e1865b',\n",
-              " 'f9ad33b317728440d5ed10efce23ccfbb81e9c70',\n",
-              " 'ca1952721582ff9e2b6d3555c26ee81a3f3f8fdb',\n",
-              " 'dccdcc4b672df99eabf2dbbfc350c9917dee9a0b',\n",
-              " '70a19fd7c9f6827feb3eb4f3df95121664491fa7',\n",
-              " '71e7c18e889b7e19352cfb63a15bd8aa32c51630',\n",
-              " 'bb81fd1ecfbe283c8e0c3ed5e3d017b79ad11acb',\n",
-              " '197fa137aae522a87d6bd210610bc2c71191d5fa',\n",
-              " '7b98a1ddfc682d87d9f2f867a27406252773d548',\n",
-              " '2a00c43cf84f7c433431027845505a0fdc77a55d',\n",
-              " 'a60c0b9a0ba539404271d0d51ffd209760a42cff',\n",
-              " 'ff44bfe03558714a01451c37fef1326b78d84461',\n",
-              " '7dbbd7f3a7ec287bdcbdaf8b8f042732074bf2bd',\n",
-              " '1217b19ae6a41b6d58a1bfe0d9aed91c6355ac23',\n",
-              " '66f8175bc3d484fee592762988c90d482ff1ef7e',\n",
-              " 'b28e7c163c39941aa1cbd0b7b3a821576771f893',\n",
-              " '0867dbb33bb90970ae48592057be34246a0124ac',\n",
-              " 'e50892cca93cd6a5b1fba7e3545fa55b53a260b1',\n",
-              " '1e6875f377d6ce529cebe701e080de7b8b4d85c7',\n",
-              " 'bb82d51d4124f30220d50af19135411a33dad356',\n",
-              " '14e07e0abfcdc157d09a6c8b054c276450b73f34',\n",
-              " 'd2ccabbfede826a140a1d2980a3f214bc6ec3598',\n",
-              " 'ff6eab0817ab6f1995022cbf91a40613e3400357',\n",
-              " '3e89174cad7210974c7ee29b0d2b3b617d50bce5',\n",
-              " 'bcd7e83ecb8720e2d062cd50a65ae08006284f00',\n",
-              " 'ae167d304a4ef49e874389abcba68636b0011f85',\n",
-              " 'c2d75d47f276abf947b7c5c478f1aa8b57e5be93',\n",
-              " 'e27aa8bf50c210baebfcf1a4a0ebdf5ad8550a6c',\n",
-              " '053e888fe61b192854e848f8b285114f53e08f9d',\n",
-              " 'f0d74cfd93ccc894699e3280b90649c4c12acbb6',\n",
-              " 'cf83d342459ce871e2a8562a91b7dca946e3201a',\n",
-              " 'e1c7994f71cd740d9ba008e9b1e059f5a48b2f1d',\n",
-              " '981fc06c9b9c898ea2ee67dc9f5e50812d3b9dd5',\n",
-              " '520177dbc2569bf8fe888556339730c36a9a032d',\n",
-              " '430992ca45c2d35f71632c45eb0148e5d8ec98ee',\n",
-              " 'b8f0c7b1667846ffc08b7d25059fa03f2dbe9fea',\n",
-              " 'dff8e5c69a2f08f0be4ada9c6425a9d497af1a0d',\n",
-              " '9619c84999c07907f752a66972f4fb7c7cc90b9f',\n",
-              " '300849a183ef001c215bb8714e4a342f287cfae6',\n",
-              " 'ae754eccc7c0f901e36de39d1ec6a5b2276d77e8',\n",
-              " '0304544e56e0f3d6f2b3f31de00a5e0391451c5a',\n",
-              " '65241fa7829a9c0b6d240758450d488ff9282292',\n",
-              " 'a7f41c1930d978fae5a811cf466b248933ce7eed',\n",
-              " '265d0e347e08d19ab62ffe4eadd0333eaad6e57c',\n",
-              " '5d472b25f0c26ad591f2d2aba2c63336655d0fd5',\n",
-              " 'a31f5bbe18de23903983309058edf0f0cd40067c',\n",
-              " '7d41ff193e60031975b2148f7aea0cae4e775a32',\n",
-              " '4e2fd6d44bc38e54519e93ae1e0dae5f0d4dd2af',\n",
-              " 'a897ce1a7ba5b7a4b692d4cec5fe9320d9823426',\n",
-              " '7c4aeecfb6cdabaa077f4c297b63055b3c126efa',\n",
-              " '2b7426852e5b2b60f54be6d411594bed9a1523cc',\n",
-              " 'd945bcb7a7e88c8cd51176a2a59c382984fca80a',\n",
-              " '581b732ea20c73c52eac7d87bdb7e95680712087',\n",
-              " '9387a91daabb3b76d3b5a4f3ff2114cd28ccc134',\n",
-              " 'acbfefce3b879863362adae158aa571f3712c598',\n",
-              " 'd89863e151c4d28d0d9a023ebe3fa7d523d9878c',\n",
-              " '57649e30cd6b9e6100237cf0f4e65663f6ce0a1a',\n",
-              " '45592156397a2a76e03b9938395d95e9f304aa66',\n",
-              " '6a2f95774cfe85e893e090852b1695e6be7aa903',\n",
-              " '3136e7750d99a57bc6e672e8dd9d3a424b5ab72f',\n",
-              " 'f0e35fca40ef2365b67b9a8635844f9e10efe97a',\n",
-              " '5154d39394e4c1b9a26b757e200631bfbef8a6e4',\n",
-              " '5cf7f63ff777c6248752a8273509a3a5cf4bd0fe',\n",
-              " '03dc495034e66db95ddf47821bed0d6c72115f69',\n",
-              " 'e0719cedc76796a83a94c4646d2220eef2f324f1',\n",
-              " 'a0f0e60ed3a20b97b570c0bd8439c0c3fe2afc5e',\n",
-              " '6bffa7ff4a81f779bd1df918c841e3be082f3832',\n",
-              " '9880f152ad8e27db059b44e4f42e6ac7503273ff',\n",
-              " '8480aae3d889da2b8709fe395573ee4e01b37cd3',\n",
-              " '44d3e6498035638f2e1c0580332b67e0d71af45c',\n",
-              " 'd6162ed770cd29f64b7c66984b1abe3d19b0ae8b',\n",
-              " 'aa6a5862cb2ae9fb8996f35a692192559b9083e1',\n",
-              " 'c626cf9d2a9494cff38780081d5e610c04458030',\n",
-              " '594d6458ecbd19fbb0657314bb5c742606ef57b9',\n",
-              " 'ac30d1b073ae1b203720789b06ee10cdbc8b01a4',\n",
-              " 'b0dd19fdd1694030dece5f2b4ae57647719f1f32',\n",
-              " 'a7d9728d8b3b1aab5736f847481b1beca0527978',\n",
-              " '7b597ae3a1174d205a681f509cabd1bb16dc4470',\n",
-              " 'f6ee74f5aaf7c73366438cfd80cac1f5f002136a',\n",
-              " '0d0f78f8eec517fcb848d1b2927ab085e3051a12',\n",
-              " '279a7c7945f827add2fe1708b57a5b94ab1b4ce5',\n",
-              " 'd717858075bc455d81689ba5a172998f54fd1afc',\n",
-              " 'd9d352251c41666d150d418ac649339236a2a880',\n",
-              " '40780cb81ee170d442aa8610e04abe18b3627690',\n",
-              " 'efc59df8977d58b04e20dca9a80b0efadcb7e7a4',\n",
-              " '1eb1df9384cda7a23035dfbbb75b59c70f2acb10',\n",
-              " '8ff4fd2f620465f1148bc39e03f12a1a374e8e7a',\n",
-              " '99bd2ea0f5bf79bd3d9d42a6d8e4f3e7f0ed196d',\n",
-              " '0a627f83f0bc9a5e2e86a6c5369613aa6d5d5a37',\n",
-              " '5b05aa19b1eab4aa99b1c000c4dc93229825827a',\n",
-              " 'a2758e0417361fed0ccc0e73162c7a015cba95d9',\n",
-              " 'a8f437d220fbc3fec16620f5abbc302f636c157c',\n",
-              " '2b41113b2dbf2a7d0284634067a4439d5ad86149',\n",
-              " 'b46889a940e2cbc00e6a3d0c876f1610c7a4e9f8',\n",
-              " '28ad926af5db8a365887b217e296bae137adc2f0',\n",
-              " '3bf8d9b00a0f5d4bb33502013e11a871ee7831ce',\n",
-              " '8875d9afd4acbb01e43908b23170424a34cccce3',\n",
-              " '6bc51a12a597014dad63be136e1ac7fed42795a6',\n",
-              " '675955e11136d4f1bc80bb10b0d5d7fd8481c2b7',\n",
-              " '280b4693e2be357f0f383f8938f4de59f175fc8f',\n",
-              " 'a5017e2700a5db44bffbfc6a6a0424b3f9baec94',\n",
-              " '17a7ea777cb261130668d4314b1591f3767cd090',\n",
-              " '5220cf8c8aff21bddbc4aaf7d13f686ed15ea923',\n",
-              " '2eeb20499aff71bbcb7cea59dc0421e24ce2b542',\n",
-              " 'd26dae18a47ee499c4aaca4a9b6017f1b5b1da13',\n",
-              " 'c91bbc99daa5591754e85676a57e52eb7ceecb3d',\n",
-              " '5716316e7bddb297ca49a4068b748baa2111ece2',\n",
-              " 'a9e33ba027cf99ed00c76f65da11e7f75591d7a1',\n",
-              " 'b75dbf2ac4dd0c710f9f585d01d80f4f063290c8',\n",
-              " '3ae0ad0cc6cdbac49d92314f61ad47644f4f0b1c',\n",
-              " '8a3d76e1d7452ce38ae70fe900a9952be4305c63',\n",
-              " '4d44e61d966ed5a2c8b70a95eb9948aa2a10696f',\n",
-              " '8fe6d702cefd9a70d887d90b88c035a7117fd233',\n",
-              " '74ae0f1205f070c3f85cc54a93eb007c14426db5',\n",
-              " 'e4dd94bf641b1b47e925b9bea840765b2fb6a486',\n",
-              " '57cb5bef55820aba3afa0bdb01f6316a31592223',\n",
-              " '570f94ab13ae21cfa3f2891ca3c95696f339e29a',\n",
-              " '7a9ba4a245c064870b2485acca1e4b2490dc2cb8',\n",
-              " '1edfda79c48c5f87047c79acecfc5ce6dcf72f15',\n",
-              " '77f48ece4c9621db11be6346740a30737db94dbc',\n",
-              " 'eefa352f50c1c75de6f6ebc38d0700e12af5aa43',\n",
-              " '72885cf64f58f7d0b915d8bdbc84ad106c7bb7f9',\n",
-              " 'dd09df704c0634edecee7be546b214d32863100d',\n",
-              " '47cf7d498b48d83ee04fbb070ea3bebcbafab235',\n",
-              " 'be2705daeceab5fe78a9c1f05e68bd5396d99e28',\n",
-              " '0a129915c2523475a232e87eaffd5f4591a26cef',\n",
-              " 'e10c52bcb5c30a05f20a8d7ad2d968e23bd293f6',\n",
-              " '3a9211d947ace4e78c63b93b07c5719c6d0c72ff',\n",
-              " '8e0f647639b930770cd566177d2779c9cb4bd675',\n",
-              " '97352e496bee9ac1dca5fb27ca2c53ced526466d',\n",
-              " '146b30b8d9b8e66e23dc85e37f3581f07df75ab6',\n",
-              " '57f207c1a3a861e31138f515df4debbeb36118ff',\n",
-              " '64ae4a1db60e066701aa444bc0af2f8f3dbcda3f',\n",
-              " '5151ea995586714e273c8cf6080b9fc3df6a1d4e',\n",
-              " '22dd85f572068dc01b86986e9a89115376f93868',\n",
-              " 'e72f60b96a44fcd206cb19967eaef463823edf54',\n",
-              " '04fab323e721cfa7b3286d770643cd43aaa75bab',\n",
-              " 'cdb052aea204bf1b2b27d6173a33b078b3f96cc6',\n",
-              " '34260d5991f9ab10465242683c8c4f6547b98b11',\n",
-              " 'b0b31bf7d92fc2d9983c5c294906055c7b9337e6',\n",
-              " 'c7dbdd2364695a506d3cb8ed75bba5676fc15b3c',\n",
-              " '3c395fa5ae6362b3bc701f24b0f9883910e8eaaa',\n",
-              " '8d1d795644c5f367714dee6c15ecba05faa90432',\n",
-              " '58b628edbb4143b9449ced2e4bbf04c8e82f57be',\n",
-              " '6655e50489f86445a0503222964097eb304affc7',\n",
-              " 'fe53de5d42d11c5e8a41e1115c688dd3ad94b1d6',\n",
-              " 'b7225bbc7e6ee05622ae49ab70a1ec950a38227a',\n",
-              " 'e543c0e24d7a797bdf5057e547f19411e85d371d',\n",
-              " '9726536a9aee5758f32e6a98dcca57a38b5132b6',\n",
-              " 'e51f2365996b075dac531466f8a3af0b691cd87a',\n",
-              " '5b34593fe7fcba47da64d24aacf23d82f073b163',\n",
-              " 'edaa3d0b3f8d2a075651ee6020dd245143c68e51',\n",
-              " '6104471d3b37803f446e4fafb4dfca55ee8b7316',\n",
-              " '802962e63d1a848d9685b805948400bd3dd08333',\n",
-              " 'bd59b35733186f0370bf305fdf58ffdfeb43c959',\n",
-              " '6fda7bc06ff349d1e049ecea094a77c1bc78da8f',\n",
-              " '49408285b43943190e471bac260cfc6624298b13',\n",
-              " '18e882d7a1c472f3ca6bca18371e35d89730d6d6',\n",
-              " '6e05af50befddfbfc2701384cd09e5ff7990c789',\n",
-              " 'ffe7344b2550c475de286de0f34da337b1af1851',\n",
-              " 'e98dd6487de32ff7de3da294cb17c1eb454d9a01',\n",
-              " 'c04b1684c8158dd99ddfdd3cf949b350a8607046',\n",
-              " '55fcdd0eded790f2b2d53f6336e61b3d96b25454',\n",
-              " '30c8e9d91439822ad04f2b1f0050d1c06655d237',\n",
-              " 'd4b155906d1868be6b085a5fb7ef806132a2955d',\n",
-              " '5975a135afd10ccb98e6a155d1537a412c5eb165',\n",
-              " '6a83c1700f14a8184a870f4aeb9ab2fcfdf2bb1b',\n",
-              " '1852a275a853f02fbc680633a2a3703265e1282e',\n",
-              " 'f96de58921a49657b6de98e3d6c6c52a31adb8e4',\n",
-              " 'a33ca63d7da2ec5eee74800480e7101ac4f1362b',\n",
-              " '7b37701ba1916986c0d63c074df278f9ea9117cb',\n",
-              " '958ac9a59f5323aca47712b84c9f1eff3d9da1f0',\n",
-              " '00f7e3503795ef0fd7934458523c9fd3f26f99ce',\n",
-              " '698113d5fa149ed9db63d99ca2d03049f740bbf2',\n",
-              " 'df11b9d801fd4e8001307a6ae33870e74398ee07',\n",
-              " 'b121995ab164864edf4a8b00489e9f14c45e5813',\n",
-              " '4d4e055781341a48fcb8ce49c5938f3cee005202',\n",
-              " '081970bf04b7b80aa7bdc6eff74a265bfe63c651',\n",
-              " '97d254878e2be3799a41221173440f7fdd354f73',\n",
-              " '780b4afa803d77de90894ef7a16bb28a174d6746',\n",
-              " '11b075c8da8695f85b83084b3a5ffa8ffc231188',\n",
-              " 'da654a30f38d957e63c32fee7163ac93578beff4',\n",
-              " 'cfb911041ecfe5118e123345a04d75c9d600bb33',\n",
-              " '0ae5ac1aba45e36fbaf47fde4936b6666b7d3169',\n",
-              " '229c2851bd5681ad149595e06b3d5e0d15f67215',\n",
-              " 'd52284273371a460c97ea6ed529b06b67b26b847',\n",
-              " '614253f4c9ef9a57caae2ad93166b5bb8e5a4fdc',\n",
-              " '2d50b0e67a9e8d2878e77556664ac41754943613',\n",
-              " '48854d0d2f52e4433f6e2a25ea06935d922aba60',\n",
-              " '3f2fba821a71dc1cd849122318840112f4b65b5d',\n",
-              " 'b9a9a2189ef882bba470f27049dda27ec9698da2',\n",
-              " '51117a8b237a0083204be7cbf291492e353a9e4d',\n",
-              " '38959f537b253bf338ef00120d66589ce551612b',\n",
-              " 'fdb028834913e99f889f1ccd02a43e8dd06a9f29',\n",
-              " '52105467154e5019bd316cd12c5bc680d5b0b419',\n",
-              " '01ffc80fa0e31acc8cfd6f0680f09fdfd137567f',\n",
-              " 'e0d0005dce2cc3adc9e7cd3eb6d735b0d07712cc',\n",
-              " 'e8e2fdb43a15cf44be9dfc0148c9ce2a9046facd',\n",
-              " '39b7760f90cec6fb40b0a8edec7ae0aa18ef1660',\n",
-              " '3726a45c9798bee30c05a8e1076f1dafe9064a89',\n",
-              " 'ca1819f5dcae65269e392b2aa11b9a0a3df2f348',\n",
-              " 'c7f418e3387037ee5c5e3e279ef2ef0f0889a826',\n",
-              " '503477395f5014ffdecd3428f6326d869c6a44f2',\n",
-              " 'fed272c0de95da5b2e7922b04e56f1418b5f9d79',\n",
-              " 'a8660f27dcfd94bd0b010c0ca82293cd26b8da08',\n",
-              " 'b349e9941ab16681e6599b8c70711d9f4ac80357',\n",
-              " '4a2a905a0307cffeb5fa6cb601fa78b40d2e85f0',\n",
-              " 'de8b13a0a8c9b65639f6950a234cac6b163cb9e1',\n",
-              " '1dfa80d27ca1dd09e2802d9123b476d97f9970ed',\n",
-              " '41ce41a5b5c8a22138e7e23d108d0268ff0914af',\n",
-              " '685536a3b0da3b98e38684ba626377d48b69185f',\n",
-              " '35181e65bad44ad85f0c7d2fe337f0a940a5b294',\n",
-              " 'c07359270dda0c08dae5c81d54c13c35aff2d284',\n",
-              " '8ac58b03233256de16ab4ded2f487d7ae02a6dee',\n",
-              " '769305b8afafdfefef5a212518f023a06e4c30af',\n",
-              " '092dffffc0e6f064ead554ae1be68a8d8e5af0b0',\n",
-              " 'f69318c181d02b71b5d19de4e6548b25546fca11',\n",
-              " '323266290f616de2372f890d39e5cf64e4c2fe3c',\n",
-              " '62ce0161309f9507b800c4f7c4b8ea3a26e99a62',\n",
-              " '1055c90f70a378e97e23e5d68e20a016d248c3ef',\n",
-              " '6c646b341f8eb6c625e7ab941be280577358e7bc',\n",
-              " 'fb4b6e8ac96afcb71b325d84ecda71fa90215db2',\n",
-              " '88d119b63d5b29db0db6129621cd86254586314d',\n",
-              " '3580bacc6ca0f02842dedb898871778b4b264c9a',\n",
-              " 'cdf5d6552318de6f53f8b8ea2c105cff7204273b',\n",
-              " '4f8cb9bd473b5a7ec50f4aa133bba32e00ee5dcb',\n",
-              " 'e649420577596b19d15945c38921b47449520d9e',\n",
-              " '0ddf52128cfb8216b8380f796a4b20eabfada907',\n",
-              " '06d79ebeba7d9b02486b56ada761790b275995eb',\n",
-              " '6b5c99456b9a66295cec2548b6ff8dec60aac3ab',\n",
-              " 'fdf9a83f958b334a27c34049f7cdaa6ee810bc6f',\n",
-              " 'eea83cedaff4c8b4f4bcb2cf2884a98bef7c4927',\n",
-              " '05674528a441ebd76cff23fe367a4b4ded59598a',\n",
-              " '7475b5519a353cf4e178183474487d120d14e2a0',\n",
-              " '37572c3c0e943e8f8152866d4c64658de4ba7098',\n",
-              " '7df765c8012cbc234f3fbdfafe3da46ad35713e2',\n",
-              " 'e4f776e1d2519aadf507c2248ff576cb9d56e485',\n",
-              " 'd6a3f60255820093ceb363e633e4317481dff09c',\n",
-              " 'b8271f4a289e47aa331b8cb862d32c3b26cdb481',\n",
-              " '6c2478c824124ec8060a58be8175b2bc6f4ce7b1',\n",
-              " '344f734757ea601c58fe120496b63b05c4e54a60',\n",
-              " 'c3374a6e07b06744edf60810da77bf0f37a7bb2d',\n",
-              " '8d8870fc7432172fb87ac171dd2c76c5cb33c153',\n",
-              " 'd83f01f95f8f3211aa376eaed2ccb62505a9d40c',\n",
-              " '3a2fac018482564c1297c40cafd837edf7e63d58',\n",
-              " 'f97b2d0145376ecb55beefd8d8236976ae8680e4',\n",
-              " '23ef1c387d1311b2adc41fab2c579d85a235068b',\n",
-              " 'd4ac97b6f754174249174e16690d184514ef40b5',\n",
-              " '829505a0e826b4730838b84a7d7df04c600aff09',\n",
-              " 'bf5d76fc2bb97b786e479a586dde10c5f6f59fee',\n",
-              " 'deae4afecf0f0bb09e4b2d5682704f86f8d6a804',\n",
-              " '50b0b413420783808336e321adcbca4695061e1e',\n",
-              " '0e39e47d3b61cf4d46d3f30afa3dbc0beef96a18',\n",
-              " '996621bee63e938aaa88817a1f473b4fe390bafc',\n",
-              " '44cdb5e62551168b73ec9b3ce528f050d8e69f9b',\n",
-              " '83123635bd1677f2241841f9c358042c9ae7601d',\n",
-              " '182bdde37d54dbdb6deb4e1472e96aeac604bc66',\n",
-              " '7eaac94996e7697a2441f8dd1dac63688af14bd8',\n",
-              " '6e9ab71ab6eb6ebf53615e6fa6d2587384799efc',\n",
-              " '3b00ef70090fa79b40820fc50e39e57b8ee693e5',\n",
-              " '2d1d35dfb0a618e5f8e16259fdf0ec2813f7abb7',\n",
-              " 'aef83bb62dfede54cb27a31fe418d3895198e821',\n",
-              " 'fc15286b04e4537bc62d7506d93e5bd5940b25d4',\n",
-              " 'cd625da5a4f18ba4912ce7c6a50340b364c2c7f1',\n",
-              " '74c2ae83eb05e7e04b0fae8fb17717a1a123214b',\n",
-              " 'b2fd9ca9de3f6a8b79571b5ebd812f19d5788187',\n",
-              " '75e13e4704ed2b691c076b679b90d29c3fd45b8b',\n",
-              " '67b9b31224d6b45774635420c8c2fe73479950b4',\n",
-              " 'a346e097029ca5c3b9484450e550358739657401',\n",
-              " '7e09f213f40c5ca3f0b0697534bcb11d94c39688',\n",
-              " '97670821a79cb366a760c5f85924d94ec5bf44e9',\n",
-              " 'f874f1912d057d06afbd45cb3e2f39042d14846b',\n",
-              " '972802ba3cd65400a01de3f391f6451b95c52f9d',\n",
-              " '3ef6ba65aa09266e122deda2ba70d346662ba44b',\n",
-              " 'a381656246a43eb024772851b78acdf7a3f976e3',\n",
-              " 'bb199f3a979e2fd7f9cdb985f0d9d746fee38539',\n",
-              " '2c4c52193ec3a8d6ffd65a4ca1c3a2edd5f222c7',\n",
-              " 'ecfc7447917718b0dd0cd885eb187a6cf5b2ea44',\n",
-              " '0df9081347e414e7828a1b4b2ebe7557e98daae7',\n",
-              " 'f75021e8720184c678d1ab95ce4339437503b994',\n",
-              " 'fec01e53f1c622b11ce8b842010ee33f097fd300',\n",
-              " '75628d96a699878a144a4077ffceba1ce7c8af85',\n",
-              " '01c2314028766d6d49bdf75ff3a195a9892abfd7',\n",
-              " 'ec7f0ce6515ff71558304a4682f23e9c6bec2286',\n",
-              " '84e34c104559a285bf5b603cc14a1c9dfb2d3764',\n",
-              " 'ced5146efe0c6b5872b47b2c3c2492f6b56f087e',\n",
-              " 'b9b7c55b5f887815349279c7decad2eac69c0f96',\n",
-              " '8023f34009196894ed0824a3bd9a7f3f34a6fba4',\n",
-              " 'eeb01dc0b2c30ab1e39c911b022d29f809166926',\n",
-              " '62df54cecc4284f41f807753dce9ce58dd8edb8f',\n",
-              " 'be1b93462a8362c840feb9697c9ff3c78400a78d',\n",
-              " '253f2ace6afbb5d4ce03c03cf6fb6f801a448bd0',\n",
-              " '0b419c0a7a6d4bad388c87ebe31c8e70c550805d',\n",
-              " '171c07da9d21552b82e4a7e6de572212639ce128',\n",
-              " 'f12301301b1934bef244b243a2c3ae9b9d4bd8c8',\n",
-              " '52902f2748073b1a2c9b93884071a70aa6089c62',\n",
-              " 'cd68d188276db65d45fa2255d2975599de793463',\n",
-              " '670b3325b03c4fac2e4e7828f6fddaec49cd1b03',\n",
-              " 'bf305b616b56322c18929f5ffa81acb56e37eca2',\n",
-              " '5609d53603bee1ebb39188ab0b52659e7097a405',\n",
-              " 'e7baa552bbb38a032a12d227dfebe5a401cc867d',\n",
-              " '6eba9b0aed2683844469da941f92a9a2857f164a',\n",
-              " 'e9f7b8052b53839ddff821707ab00b559b48b9a6',\n",
-              " 'bdfae3d674251881629e867e5fae093e5ca4b1ff',\n",
-              " '9be6663a43810e22dca07a332e48c2ac9d589a1e',\n",
-              " 'df880125aaa6b7ccf5d58a8b67dcb58130c5d969',\n",
-              " 'fcdb09be96115e23cede9e9c40ca575e56f5d2aa',\n",
-              " '0cbfb4d0936054bddd5b1b2177e93a9dce5bd6de',\n",
-              " 'dc4073024241ad07f7915a75b944260b5116e04b',\n",
-              " '9b550ef1a6c6e43175799605fb08652f4977ada3',\n",
-              " 'b96d0556cebc13eedf1b6993b5ee1caaf86f54d9',\n",
-              " 'd0de8424b74289e747d4d322dd975fe1e1fb0357',\n",
-              " 'a0cc7cc65d4a9e0e0ba2f82ca13d2627b3550bbf',\n",
-              " 'd5edee4ec64a68a2c2e15108a7fd744d906a31fa',\n",
-              " 'e6059d89959f5d0ba50f0054315c25e11eb64361',\n",
-              " '670e01f166c7cffa871a8b8a45d7f44a21b1d20a',\n",
-              " '1eaccfc54c4f0b6c9a5b621a9adba6045072b5ad',\n",
-              " '0fd72f5614b023962a7b9e20214bb8694eba539d',\n",
-              " '7e5ed916499f423e447ee39eec65d9be4e80425f',\n",
-              " 'fc76d270897418e3db364be85633ce73f8ffad8d',\n",
-              " 'f3f3de3476e3620de589574e2ffd8b1d1b0fb69f',\n",
-              " '64a8354015e789d1da48b6f6bcb4a42184895c90',\n",
-              " '1a945ee58a75730d6836f84545fa849a4951cbeb',\n",
-              " 'd60150cb49f6f5af1fd8f0c95fac2315f356d91f',\n",
-              " 'cb7dd843d1f8c60fc9444afad35823797602713d',\n",
-              " '1b17684faec231cbd16924906f4047ed4aa0644c',\n",
-              " '7c5a05ac4356e646e48a338f5f8c0ec99b6512f3',\n",
-              " 'c712b362bdda36a28c935e8b32b7ea3f5a38c87a',\n",
-              " 'a9d1576072f655a0b654c70ff14bb2a7fa7c2ba5',\n",
-              " '0be38617b8a73a922136c5680a2dd1f1a3f404e5',\n",
-              " '2e9474578f7682cf897a5653951f5ba25fbbc5a8',\n",
-              " 'b0e38e9156f0d0c826753dd5898ac506652d94fa',\n",
-              " 'd8f52c860ec2f226fcd95bb54d2f0574bda25bee',\n",
-              " '5f0cde8f34c1a618523d8e9994d2555647a262ac',\n",
-              " '2ca90a4453ef7bf427c978a0d628c61ea35129a5',\n",
-              " 'e28042d799720332562cc0e12d70b080c84dc8cb',\n",
-              " '7cc65ad2d0f4829bf1e4d40d07ab40cc0d7d8555',\n",
-              " '0066e790f51f2aeee04283fedc25869c4071e045',\n",
-              " 'd71dea37e3afbf83aa22f9cf1b6f30ff91a2f597',\n",
-              " '76b7436b9685c26e754c4836876c315ca21dd17b',\n",
-              " 'bfb3ae84c586996a71a11d2c9190c0162b057c5a',\n",
-              " '331cbfc38d7467ea5ee2794df6848424055230bd',\n",
-              " '993196395b1289c795888f369a94095537b9d4e6',\n",
-              " '3d070a4c2be8be8e0c64792fb94f782de3d0e719',\n",
-              " '211c2a5dc3730141ca4c8d7021c7827332b544f2',\n",
-              " 'edbf0e0efaf5b3d28105f1db7c10c6f67ee20744',\n",
-              " '8278fe4f4177e1a83e58ad558292e5a2a9b8fbc1',\n",
-              " '619d33d89dd99c13391635cd289b6b4883b85bc2',\n",
-              " 'c2ba794fc337b59e570e0c46be2cc9b2a2e9010a',\n",
-              " '3f502bbed390ff6df530445509b643af36b651f4',\n",
-              " '2e55461be4bcdb649b62760fca83ffccb0703bb6',\n",
-              " '5005e3e9b530ffecd1041394a2b566249c761e26',\n",
-              " 'c3aa825509baa13ac21f86083db2516d132a59fb',\n",
-              " '68690e60afe342d189b1a10eb0ea7848e889805a',\n",
-              " 'e6406808b98c48cc772baaf4cdf9d66a73697aa3',\n",
-              " 'bc2193dedb5131f0440e6428f32a7fd096815fb9',\n",
-              " '546e4994066ecaa63e777e3924c24de85cbd48c8',\n",
-              " 'ab00b2d2caa64641b6f6cc75be15584d4565985f',\n",
-              " '930d3ceea5807cccd238832033dbe3ada82a1fb5',\n",
-              " '837a85c677fb9cebe78281177fbac38b9367e9a4',\n",
-              " 'c380153c08f5194ea48e087c6e2812f993395773',\n",
-              " '221faa74f127224d99f7ac2782c000a07d4c585d',\n",
-              " '12cceb0ccc38e7f391a970c4ba61c283a1b2bad2',\n",
-              " '8b3b56e30bb06ede6275c7e389978726e27b9db8',\n",
-              " 'b26187733f8ed90dc8311048808b0fc2d9e602a0',\n",
-              " 'b19df3748e1bc12ab2811038463532a6ca8329a2',\n",
-              " '2ece8e60d97079bd7f3e41053fa2e4a7fc23a07d',\n",
-              " 'ec7eb49a79e5b0c3cae338aec998b8e25fd07928',\n",
-              " '4df12780ca0436c81e1d2db0906617a827fc0795',\n",
-              " '4a325c82c9c9a20604ef70a2ad33637f69133326',\n",
-              " 'c978f7186409e1dc243a7815a862753a4e593d81',\n",
-              " 'eaa9326f3acb9be9e73f0796d59c0fae680b4588',\n",
-              " '32c484a530db860c3687dae3dc2e0b190bfc68c5',\n",
-              " 'f942d5fbed593bd3916d283789cd7a815e4bcd01',\n",
-              " '650bf2d4386174a120a5754a541d19e17e566ad0',\n",
-              " 'd7f1dca7bce3bbaa0b27a02d36dfd597a0d0b646',\n",
-              " 'c6bdc64e03dff6f979c2ab914ad793b5f1cd5b33',\n",
-              " '7c3675ddd9dac75eaf67539c0ca48482214ac5c7',\n",
-              " '76ba3a9b7593ed4346633728bd7902d5a263eb92',\n",
-              " '5313c7de1ebeae424bddaa5719f578acaee9b012',\n",
-              " 'd0d172faaf7d39cc70760b76ef0b7ffffeb28b64',\n",
-              " 'ba12c41e23cfd818e478990b30f94504081c5b36',\n",
-              " '6b7f8124b4edec3c716fc8b7ef0fc70dd43a7e78',\n",
-              " '03c83f26f95bbdd77abac4eb1fd860bc6837ff78',\n",
-              " '899336f477c540c41114c2376df931deecbfb009',\n",
-              " 'ebf4327ffb865464f2a8eb90c7ad1153b48ee512',\n",
-              " '40944b972b1db2289be9fcd9ab7177f995c4cf4d',\n",
-              " 'd22e40e4d5ad6603a239493e6cc78601250ed2dd',\n",
-              " '59d4b1d3444a5c0b8d2d3ca6956729bd69098720',\n",
-              " '34da1bb9bdfcec7cff3a33474bd0c9a983127be0',\n",
-              " '1dbb4213005cab17d5e17e4f345be4fd8a6d132c',\n",
-              " 'ca20eb750d4d8029f4c9348e3d512b8cb5493fc5',\n",
-              " 'cc016e04df59f653bc7a09fd92baf08d0e29a95a',\n",
-              " 'b38cc6dc38edb08d721f337a09a6bcfcfaba148e',\n",
-              " 'c177e498088a8d1f4a4a0971caec01311e77f607',\n",
-              " 'eed1532cd6272b2e3bc913566a9e11a0f2f98c22',\n",
-              " 'bf3c09a49074fc9884e422bffbcecc1330b6aa57',\n",
-              " '6bbf75849c3c530bdec9d234249768c053c8faae',\n",
-              " '53cdf376e0fb0f1c3e44e3fa4ac50b86c068ebef',\n",
-              " '771ee32aa7b4224a086c536e5d26df16de157352',\n",
-              " '71f65e92308a485a5b14c67834194ab415356baa',\n",
-              " '1b00089faaa14baf2765794f567a9b83dc2d1a93',\n",
-              " '821f6ea1723966632c3b53cac3e4854dcb021a64',\n",
-              " '1e8f7a901c17e252bf554edb3f76cd0044b02481',\n",
-              " 'cd6c5b99f8cff8ed0d4ccf0350e57e4bcf711148',\n",
-              " '849c3747c24acbd77d45f11ae7c16ffcfe09c0fa',\n",
-              " '710b8c9c7c4d00a406a2d4add2b7537314b9d9ae',\n",
-              " '0e74377bba7ca9587ac6a21604708c594a6c7160',\n",
-              " 'cafd39face6d6e61053314f98a598dd297ce6741',\n",
-              " '64987b229082c227e7cfd7cb42dd248fce90ac8d',\n",
-              " 'ab70ce7d5ef50e5afa114682fef3816608a4d97d',\n",
-              " 'cfaa7668b683ee9d3be75814762c82de33fd3f53',\n",
-              " '8ca6a9fea2f176845c0e654670ab95105a30ab1d',\n",
-              " '1e78b84f637a2032210f638c1e0242821f6d2510',\n",
-              " 'd1aa478ea6e71d0da8553c28c18d60c5595fbf1c',\n",
-              " 'b94c255a66149311c974e79304ecc8172b34d043',\n",
-              " '6b9f63c4bbec075f569e6296e653df58ccd8a8b6',\n",
-              " 'bd21faffe0730cbec3538febc21199faa0fea819',\n",
-              " '31aae312f58abd3532e53d3e55ae3e23e0a85da1',\n",
-              " 'bf27dd7c5e57e228fe0a652b5ea3dabc2d63dc2b',\n",
-              " '45673acde69708d1e59d44d867362095deed66ec',\n",
-              " '4b8d1aa6d9b9b88acf3ab7e31475fad007b2d5c1',\n",
-              " 'ba6833792f7041f1878919d703a3005b35beb402',\n",
-              " '578b27aeb63ce9c6a728085432f5f86e8f400dd6',\n",
-              " '08a17a4aad811ae8a09fc9e1356909cd3632bc60',\n",
-              " 'd16953d9ba08f1f5b82ead9b0feefa7e3d676aa0',\n",
-              " '622f667f927459f62ffb94a8676e8bb7bfe8f201',\n",
-              " 'd6794dcaf536c81824aef82450e45147f5f65faa',\n",
-              " 'cd22a4977467b9b1f1e438a68b302707e5520eb6',\n",
-              " '654d299660befaaa77c51b59a5a7e66df2e24271',\n",
-              " 'a99b9e5bb3d232d35269663e379e88ab5069b365',\n",
-              " '711a433e24cfafe69c19b0692c68372cea2e56f9',\n",
-              " 'a3421a35a2ff2b986a41ff96bfa47f1e81fe78da',\n",
-              " 'a8a1717a486481ab22cb9fe0d2261a82b4545d23',\n",
-              " 'f8381198ef27f17067331bb539cedad65c7e6013',\n",
-              " 'c02861f916ee74dafa4ec36cbd8d7832398d961f',\n",
-              " 'bab39a1d4fd29deae96bea496e03f460a4569fa5',\n",
-              " '5c88c4e58db4bc2b5912992d678a837b6a233802',\n",
-              " '68d8878a6c8683becabc1dce2f845ef99294bc58',\n",
-              " '74106a9d9d8ab673c2ea65a9b9d615ee714fc6fb',\n",
-              " '057c9cf02250db98d8932eae11fd2e543fc40fe7',\n",
-              " 'd9a526814ccfb51e42314d81d11619771b56664d',\n",
-              " 'f6436ccdc7aca1c475f73bda24efc034e6fce953',\n",
-              " '523d4df90c272c318f17d4dffb968baec3f2fd9a',\n",
-              " 'd160d5748757edfa7a288d8ac9e684f92b898a1d',\n",
-              " '2c0a04523fe31c7fa837d89e6c7e86a9e1be1c10',\n",
-              " '8c039e12d98ce0828b40af813540303e11910939',\n",
-              " '6c5dad5ff04269645de18f81306b5d9d8783d176',\n",
-              " 'e24d848c0d60750bb4dd94b8b752f089194ddf3c',\n",
-              " 'a2b335d7ae29204f62c76d6a3d15199e9f75b680',\n",
-              " '82a4b883e2c52065dd231956c7a24e2b385da60f',\n",
-              " '1cffbb780f2f2b53c4ed30355307d71bd2e2818b',\n",
-              " 'dc852c42f4e371f8014528d667f5aee756f814d0',\n",
-              " '32b02edc8ec27ee12e0715dc946988314e17b18b',\n",
-              " '2a27eb8bfed4a05ac7e83cbb96bccbf3870b683c',\n",
-              " '9d81e52e1868f4f009c7a9805535dab0c653c7d3',\n",
-              " 'd24ff88c81c5ba16122713da2b2f6d972c696192',\n",
-              " 'c94f75e0012aa436a685a19af61596c42de58131',\n",
-              " 'f659c67118adc160eb483c177f0b170403385ca6',\n",
-              " '454d1644b71cffd4166766aea6c519ef67f03d24',\n",
-              " 'bdb9e03f5ba8f496a018f44f1fe06908d842c65a',\n",
-              " '7bc8dca00c31c01c9f9b4aa2fca2969536565b11',\n",
-              " '10c93f052cc6b8f7ab2aa29ec5b9682787403157',\n",
-              " 'd37788a1c65a5fac998202ab0981f0b37737701c',\n",
-              " 'c12e20a3868a6b9d36d75660d597bcaf5f6682ba',\n",
-              " '7111de3b311315e9e91f0e9f7d4066796e2eda11',\n",
-              " '6a2cd8dcc2ce2ea5919edee4e294e38ea4a614f6',\n",
-              " '331f7d55dc795f1d6732695de8b0bd19f5b0423f',\n",
-              " '63096a2f2cb9986c66ffbe18fcdb7cab81312c94',\n",
-              " '04cfdcedbee2b799f7a9ad7255ef3d3606ff217a',\n",
-              " '668a3e4e0ee74d6ed6cdbbe3e08a332ff0887c95',\n",
-              " 'd6a064a959f7e2d94ca0de09b5f6a5a7b9fca606',\n",
-              " 'd41b9ed04e0cc086481afe72042bf6e636298d0b',\n",
-              " '29f05d7374ea13bf74fc9b8e61d519f19c730b72',\n",
-              " '2eacaace09697f204571264a18e228dbda5d2896',\n",
-              " '986f79b54ab076b4877b358a49f18d31d9257493',\n",
-              " 'a98e70ee769f16a62871b3065a3e5508ee36677b',\n",
-              " '1b557691abb932d2edb394a0db88e63fbb8c4220',\n",
-              " '6101dce305671a25878075adecbb507bb350aa4b',\n",
-              " '14b3045384c35fc8d68de44579d0355ef506a08e',\n",
-              " '2ec2dea64fedcee0a8c6175bcae6bf0a9069eeef',\n",
-              " '14cd6bdd07c1677923cb5ad477bde42c3c7cecff',\n",
-              " '4d1f5e684315ea20b79d88eac2f503ebe5897837',\n",
-              " 'ba1f145de0f04084c7c89972985e41eaf4c834ba',\n",
-              " '8338c59bec9c59a1d6bf7922cb74f3b9c23e33fb',\n",
-              " 'ddebaa099f5075915f06bc2e3eeaf799afd74932',\n",
-              " '2b2d693745d25445db3f8f3ae4030dc38179db1a',\n",
-              " 'e922a7653e2bfe1c4cef6c919ec378033dd4aa34',\n",
-              " '5c4c0cdaaaf76a01545c07f2b6c55b6c2af996df',\n",
-              " '2f0062a062b4a44a7b6bcb3a3a2d7612780c1e92',\n",
-              " 'ddee7709bcca0049472b72ea492a5a8c6e1e4b7b',\n",
-              " '3bfb43b00696498acc584225e19401d2ebc1cbf3',\n",
-              " 'f86a24e381fc69ea054bd027b649c2cabaa974d5',\n",
-              " 'a38733d61d483d609f7d90efc44348094ff5e1d8',\n",
-              " '8ccbfc8011a9a6df4b14380ed9a9d6f77fa26b38',\n",
-              " '433d24fc5217f4312211d6c882109e0f1194067a',\n",
-              " '14f0dafda66b0a5b1db8cb2499a65d0b68da215c',\n",
-              " 'e8cd34e6c52c25b4943a5a1384e6a1fe7860e786',\n",
-              " '25957e11981d68a2512132674fbbc44e1f3909b0',\n",
-              " '240c188d908252481604cd9e3aa4869051c5f55e',\n",
-              " 'ce3032a8bfdc4984c7bde7eff37d9829938fae78',\n",
-              " '1b9b9a78354e5c85a3ced4fd929611456634282f',\n",
-              " '3813381162c3ddb20f9736c2eb391ffb4a89aa93',\n",
-              " '10cd43a555c2398db86a792844df0d243150135d',\n",
-              " '0a3f5e61b9733317db281264269d81c9ad4aaf5f',\n",
-              " 'fa97873ac3a0a88ecda2ce71d4268724aab05c68',\n",
-              " 'e85056da44bc3bb5efe31187721f9b80074de17d',\n",
-              " 'f553e3e7340f99028652c1faca7986fed9e5fb44',\n",
-              " 'a2758920c7e879494a6c3333a5e846f00188e555',\n",
-              " '6103cdc76cc27846f21f0e213b262a8c1447caf2',\n",
-              " 'dcd1da64c5c4e49676cfd49ee00ddd168e4db811',\n",
-              " '02fc121a50c971f3497a042f090a41af30aaa9a2',\n",
-              " '0de77a5ae24316755a6ae5a85b5e67cbfcc77fd4',\n",
-              " '9daf54cc9172d39538790ec0a0ccb38950d0d0aa',\n",
-              " '8c70564509e08d6c34bf9ae6e9cee8eb8fb0aa4f',\n",
-              " 'fd9b63bf3cfad10b8506ce10a1b8ff112e7fbe4d',\n",
-              " 'bc83959fb2c589c27a97171efe8fdb806dd8f912',\n",
-              " '2a251a6d8262fffa51b322e8c688602cdd69e5c1',\n",
-              " '637dcd5bc42e2b0bba3370ae32703c2c0bffa4c7',\n",
-              " '0b200d658737e786901515c80fc01e45f1d0892d',\n",
-              " '5a0a6ee7f6a0720b2c40ffb77aeb9b65cb746e18',\n",
-              " '67b9ac979bc2ec93a095066fa2952cb509c7e021',\n",
-              " '17ce34eb5b7d67dde38a85d4065357a05ebb16ff',\n",
-              " '5b1ce067914c6e3b1d0e7663100aea888110c575',\n",
-              " '834e8d60bd6a6c70677adcf7127f7325e6a2758c',\n",
-              " 'ca4d90fdac70b334c8845d8149b40d9db5ec9264',\n",
-              " 'd19b3e87be9d8682b655a7baa056dab77b5dabaa',\n",
-              " '8136cd1ab60e0480c620873342a93dee57c737a2',\n",
-              " '19655699f72300e80aea8fe80ba485cb134bfa10',\n",
-              " '644875e6b35d3b8df257d05446b5c14a7b284524',\n",
-              " '75bce913200d26fd7668201bbe6d3ead21693863',\n",
-              " '087e6410c89bd1ac2364c1337638041057f3e707',\n",
-              " '4226a9caae853284b26cc14ef3b8582e732bf2ba',\n",
-              " '0bad5f842d38601fe714f625d46be941fb27f28c',\n",
-              " '1e0e068438efc3d17401e802397b1a8177181a4a',\n",
-              " 'f1ac7182ed21f7b3cd87c6aee6177922b78cbe77',\n",
-              " '5afb806e4da1764707ab4e920948309bde045925',\n",
-              " '98cc5d647ea8518a300a8bca7e08fda51d25c88c',\n",
-              " '0d28a70173c6377f6ec1abd6b80bc0ab030d2a9e',\n",
-              " '5d897e0e9e3b8902e881ffb5a747c825eb5ed0fb',\n",
-              " '497afbaa33004e865b6cb372f6a4b0da136a4e07',\n",
-              " '64bceead0f1c1f39e7c1dd51d93c4ba78f1724eb',\n",
-              " 'b9dbe75f92862de5c226927abe56404750f83936',\n",
-              " '9ad9f7e32a30281aef80cac3165876dc56ee9a2c',\n",
-              " '5e30126bd70edccbb0394334a532d96e42476ff4',\n",
-              " 'f8e547db9ce45630905dbebef2a77a842005d2a8',\n",
-              " 'cbf3339ac738edbe5627002178da2982cfdd861f',\n",
-              " '45b232b4f766bf3df323d9d7fab960796b5e80c6',\n",
-              " 'f47eb601137e2020f78f603f5df16891d92eb907',\n",
-              " '043f2154f08c6589e6985d302dc22adae615a481',\n",
-              " '75b2530a4c53c2fb1723c11a44f552b340ceeb80',\n",
-              " '43e1c9a50faf0a6117f37bd3714007c69ca980b4',\n",
-              " '9684f7fa2ec42f39ce6f22d8c260fff15dd52d08',\n",
-              " '24140b894345f13b6edf787080503ef145695bd4',\n",
-              " '76e163cc48e5886e9559bd705127bb3e33044d3b',\n",
-              " 'e55131465d1a1babc0f528286691fd7ed6964b38',\n",
-              " '9a76e0ea98b89c4f6e5e0a6900179321800fce2c',\n",
-              " '93f904ea72fcbb14d2cf65dd99fff0095d39590a',\n",
-              " '8ece5b301a390bc4b7d3174f930b20545502ad41',\n",
-              " '368f9ddc13687340e0ba340c6c5f32cc49191c3b',\n",
-              " 'd01d6642253360e8fd3529c9b4f4d4b4f240c86e',\n",
-              " 'fb8b9ca2ddee2ea8dd0d6a2145008dcff48d08fc',\n",
-              " '1220e4448414edf9317cfa64fa7723ed9ef9ac11',\n",
-              " '3266d3c2450fb9e615b446ffe588beaad6e73a89',\n",
-              " 'c9f0ca242cff8f3f77bf607cd9602b8c5af89efe',\n",
-              " '00fdd0e7f8080d95bce35e2192e74c6538f641a2',\n",
-              " 'cabe03d0a84d35a9c5b43e57e7bbc69a3939f2ef',\n",
-              " '978f33c124793220109e54daf456ba41d3ff65b3',\n",
-              " '1b5bbfe6ca6f8b511e983990b722c6ab9f23b05f',\n",
-              " 'bd9d99337ac6f836e7609e8668771db19d1ab2fe',\n",
-              " 'd34422ccd1e292bd2842ff0131011cd62c138634',\n",
-              " '524757eb9ba847efbb30d62b334e3e52f7e8352d',\n",
-              " '42868d3eb9f527f1791eabffe148d738a8f359a0',\n",
-              " 'ba969abe4a41d9bf07bf870f20fcf9a9c0750f74',\n",
-              " '009e6759a188566730262cd31de5932cb259de0d',\n",
-              " '74670f27c5d5c622f2a922535c85944f4941e013',\n",
-              " '88b266c87a5e88f09218c490a2d449ff500be7ff',\n",
-              " '5380708193136bf304a2480eeab833a214502dca',\n",
-              " '4e1680339aac4907a13fa39226e5ab627ae1e81f',\n",
-              " 'acbba6a8fed1c115044ab2747d0a378f2fa27ec8',\n",
-              " '480f143ad2faf8765b40f771e168a74a9fcdebc5',\n",
-              " 'bf69f32f1139868202d1cdcaecf5eae4c8e32ed4',\n",
-              " 'a7ef2b94a69b486491b4bdb7ed172890e14bf2b0',\n",
-              " 'f3da53f52529c2d8c9cde018c77823efa183074f',\n",
-              " 'e06f689aa413efffae998cbaf829a76853bf2937',\n",
-              " '07f27a367dadcd4de202db8c95a3faa820228257',\n",
-              " '20cdff5529daf7cd818fdadda4aaeb34201f6a2a',\n",
-              " '97d3df939965de31431ee24622f9a757c27c0dd1',\n",
-              " '8534fef94a10182a6d513fd1048ae35a4654bef8',\n",
-              " '0c0d7fac80839f6a573318ba62c1b3fbed5e913c',\n",
-              " '9763dcd70575d1faca751f66eef7920ce187a5ca',\n",
-              " '154e8d0e877a34d3e28795405d980420295c4875',\n",
-              " 'feb39acc85c88a6974e7880bca005142779288d1',\n",
-              " 'e131695fa63fc1bf28c14f13eabaa4dc88df09ec',\n",
-              " '4a23ba485e659235498eb3e0b5e5db15bfb08550',\n",
-              " 'ed2f034c263ea3ac0291e4039745e72ae2ae8d79',\n",
-              " 'a5ff2140604b58497018ffa87a8322619874c76a',\n",
-              " '857da85ddd24ebc30636a9c2c54bf4e3fa575fa0',\n",
-              " '50233387f6de4202415f9d7bfc374ad50e424398',\n",
-              " 'afd18997d067fcf995737b6bb991c417454a0d03',\n",
-              " 'cec17e3509f546596448b302599b15bbc591948a',\n",
-              " '81b2b4b3fcea863e7cfa213d99ca551054ea5ee5',\n",
-              " '3f3dd033a4d550653443f10de8b9e71c8a14f046',\n",
-              " '9270ec4d89940e8d3c70469812dfc03d0c306837',\n",
-              " '1598c725d681790d5f7a2637918884f6eefae2e6',\n",
-              " '240b9187c821dcada944cc86eea9d81586345b53',\n",
-              " '01c5521e7feff6e8424d5dd43f01469739282e02',\n",
-              " 'f15a0dab02d60f8d5a9514f81041c01666e10241',\n",
-              " '4463b7c1cae294a1a542c8724e7ddcc26e6778f2',\n",
-              " '11e9e21aefca90831e7a57007b9b993bebb9ce32',\n",
-              " '3064d2a747bf1c9d1a67c4bc2a23b985b69b6581',\n",
-              " '4137ae3b3a970a43911a21b50a03a0c43285e822',\n",
-              " 'bbdffe5b3d84fa37ddc52ceb6b2ddb6a8b91a1dd',\n",
-              " '331e2c271829353b0a25b913804735837877309a',\n",
-              " 'bbb92ab6e050e5b71fa213f2271e51f8dc54dd6b',\n",
-              " '18c7e30728f3375b326b045e8cfd3df26df82d15',\n",
-              " 'f5b5b19096770040b0e7afd5f190897e917f1891',\n",
-              " '96813ce88dc070597d385227d4b85bd424e4105d',\n",
-              " '27fdfd62322fcca5b9993caaf4bf6e32ee7985c0',\n",
-              " '4957b13ba1c8537125a5019993b8d761a446458f',\n",
-              " '721900cf742eb2bf0c2a570794e08d458a174563',\n",
-              " 'd038336cdbb72d1df75febeced07294d21c47131',\n",
-              " '2a22a913436ccbdf9cc2b21d173a540fc0ed4148',\n",
-              " 'd89013897e74078e7e357fb37b23418f28ca2f90',\n",
-              " '46a9692307a8815c3f1d90bc2c3993e8481e205b',\n",
-              " '0df9847037279fd59d5b05740198a8616d805917',\n",
-              " 'cbc61f3cf10e5584d2b4b0d886e6c2adc5c63fbc',\n",
-              " 'e7ec9d578ed95db55dd378bfd8ca4fc4932cd92a',\n",
-              " '7adf55366c408ad002d197b74d4cdbba2c941060',\n",
-              " 'e08c4aeaa86940be7cf43f3c1167e88e7006a614',\n",
-              " '45c29a6053e6fc917a74580ee3563800793fa713',\n",
-              " '9f3d9f3471f7761ab727e785968c43c5bb4a98ea',\n",
-              " 'fd67b87768978ec341fb9f0556268c9fbda53f16',\n",
-              " 'e677a592beca3b411a1aac07b4d27834a0e73479',\n",
-              " '5cadfb4091f5d30eaa703b9523270a00b76c3184',\n",
-              " '5713bb9517d115d35f1a8dfc6abedebb5d7db1a0',\n",
-              " '1c54403a370461b5fdf5ae41b5553af7b9681d52',\n",
-              " 'cc8564e10269a70baf5cfaa0a1a7f1bd7c4c177c',\n",
-              " '0c2c9247850cafc1143db88372116ace2b4085d3',\n",
-              " '4bff772997c4adb5655c3e978de0b63e441f1aaf',\n",
-              " '7a7a2d96bf9483b92cba5a2db75370b5b73b0f31',\n",
-              " 'd2f67cb5688b31d85a47f4f65a751b286f57f635',\n",
-              " '0f267220a5ffd6a4798188ce3990cc5e58c99dd6',\n",
-              " '730fc34060f29c214d919ca0af877a1a50640856',\n",
-              " '74578862b1c9202de8ae89369542b52c1b2e2f25',\n",
-              " '7cdd4d5ace517921d1dc4b7b5c1719ad0dc87a8e',\n",
-              " 'b46e51a15ec74b24a1378273dcd966b3215ec496',\n",
-              " '4c05bd21b1e99e67ee63f3c6c4163e8e2dba6655',\n",
-              " 'dff3471f505424723a63181f46383844011a976f',\n",
-              " '728a45bfac797951a84bdfc1da194a44485f849c',\n",
-              " '5829ec96bfb48f48609724b75a623a0c80a4c103',\n",
-              " '56118a9b8d2e6eafd1af17466330d00620fa697b',\n",
-              " '809da106532b5492d94c242e70cac473301018f0',\n",
-              " 'b4ceb29ea823839da1bc3d04364d3b246ad16c50',\n",
-              " 'e9ac1ce881184b9f75215b132e0f45c0b5029d7c',\n",
-              " 'c955de8fc92f54ad9f07048abaa2d62fd3a27d96',\n",
-              " '7dd53651e7319f103fdc78b3d3cf390d91460513',\n",
-              " '60b41293768df80930b2b541241925d31346a3cf',\n",
-              " '34697484e25977e23ff3af21d2ae263100090d1f',\n",
-              " 'db5835526af62e7e0b1058e03d0a78c2aa363297',\n",
-              " '74662c0d2aa229d1ac777d2bcf42c7948a1d30f3',\n",
-              " '76c28c57ab094dc55826728e6a4db1d7c8875801',\n",
-              " 'e27351a64a19619dd906a8514d98b15973cd2244',\n",
-              " 'a144fdaf0c1c82ac0fb92fbf13a4a064aadaa029',\n",
-              " '7dcbf170f757dbedd3167d35f9987dcbabe34de3',\n",
-              " '6cf1dbf7a9d4c0ea360fe05a2ba5992fd7aeaa93',\n",
-              " '3561b103a0b6f7ce3685b3c325ed63a6c5c6579b',\n",
-              " '47b7106e5332c7e7bce347e3f9325e1d914e1d44',\n",
-              " '2f85827bb9fc1471da55ff260c15ad36c8125721',\n",
-              " '67cfbbaf4c0d20c7cd408114628f49ece8b80a3b',\n",
-              " 'e049583872b25a0536284ef006e1e7f11783fa00',\n",
-              " 'e7b1257ec009ca68b4156ade4e702846d98c3512',\n",
-              " '296813a46aabf4d2fd61463e174ffb9d6d7cf1d8',\n",
-              " '91bbfd811fdddd86b69db80f7a3d7badf80e31e0',\n",
-              " '77043a282b4b0705738c8a22f5eb586ea1e5d114',\n",
-              " '957d60c5ed14bb2266a1f2291f775ed72a24ac5c',\n",
-              " '536d88e54e02142ad224c3b0262f8eb1da84e0d9',\n",
-              " '171cd3cba91726fcc03829f1f23e331941383dba',\n",
-              " '4868ed304c7f6460d0474bf23e53e874277f3fca',\n",
-              " '87df382d9a8eb76c09963792e473e0a69c6fc33b',\n",
-              " 'f30cee2fd33f53498b2a4fac3ce99138d59f56a0',\n",
-              " 'cb32cd4367162be16f97a5cada741235f876601d',\n",
-              " '10e22c9d280097554eb21dcc9e63027069a9c841',\n",
-              " '6050bb960533620c66208aebe9600c58aacd1855',\n",
-              " '7efbecd7e5dd974917ea50532d07bc224e05857d',\n",
-              " 'cc3a003dd0176d0636fd789935e59114e53e218b',\n",
-              " '2386763c03ebd3bab6ac69550e05284d4df0b4ed',\n",
-              " '63737c07d3a15eca09ff3f6414baf4bdba5aa788',\n",
-              " 'f2dd7b1d7ef6cae88f4934ed685a2bbdf63870fc',\n",
-              " '271fd76bb41defb41b56d8e41f3f9e61fc9a08ba',\n",
-              " 'd7ce33471ea61ce8ba69435062078d88a2d088d2',\n",
-              " '64109c5cd8f711427d3e9850c9b34cf30d8b3bdf',\n",
-              " 'b3ceefb4e625eb2e44c2c427ef0f76c3974e3ca1',\n",
-              " 'f09ecebee85eee7fd5a3f14a9c4dcb796341f8ff',\n",
-              " '407756d4ba0ece5ecd0139534b9b4c6390ec0244',\n",
-              " '8df1dc6ff9e80d1b44b8e4b0b7f133c91172cc71',\n",
-              " '5493aaf7b96c1d1008ea2ad09a7a373da02843dc',\n",
-              " '97fa2a09cfec62de375f1057bbc3757e0e2dae93',\n",
-              " 'f59688e88ce057b388b573e7740bf7998496e46c',\n",
-              " 'd3a698917b691472383393580d4d3673296c82fe',\n",
-              " '5d002fe83da1430d741eaeb63f4cedc1e16464d8',\n",
-              " '27f79219fd963f273d662a49e79b03d6197ab51e',\n",
-              " '175e539ab0f1d8a303ade67fa419492f278556a6',\n",
-              " '7a66db5fafa87125e0fc95ad5c54e195ad775e47',\n",
-              " '1aacb2b597bf89ce570e6e0aa26566acdaf2dd37',\n",
-              " '443ba5ebac72ac93e42fa44459643b24f0c1c45c',\n",
-              " '9e92883921f7bd5e6fe8c0874f7ef47713826f84',\n",
-              " '625bf2b455bf6c26275d87bf4f33e59c9005e4e6',\n",
-              " '0640c1d359f7418db8efe501472a4d400c6da285',\n",
-              " '0d2dfd147d6604e49b85e92641a8c0e371c6d24e',\n",
-              " 'c671bc5cf8034a58d975cc9feea83540ed72146b',\n",
-              " '0fcbe4d4caa802029a5810272548ad3fe1a9ad3a',\n",
-              " '3dff5482629abc65241949362fff497e941d25c9',\n",
-              " '57f8888826e286371ccd93738358a36a5e661b24',\n",
-              " '43baa29cbc84f7185b23e2feafadf86033a9b000',\n",
-              " '65a089e4cb2033e1c7b9ec0074efc20458aad397',\n",
-              " '531495b2b82c1f1a8ac7954821fe3b0676c1a254',\n",
-              " 'b8ee136eb706b7bdc59c582a3b3f5236481c3ad3',\n",
-              " '60a5adfd53e73e44d1fdd9ed07c890879640b2e6',\n",
-              " 'cf38246c1290d7e40b1d05912ae8ad4f956bad3c',\n",
-              " '9d85302bdd73264e8a8b733050c56233c04c6cbb',\n",
-              " 'a3a2f5671c908a762620931cc175d1c7956a7208',\n",
-              " '05080e1ba295e44567e888a574cad533341946bf',\n",
-              " '090bb23487734c8ccba87656d861bcfc6bd8fefd',\n",
-              " '6068e786d052be5856ed2f8fb13fe92bb8f4a39c',\n",
-              " '6eccd6eec73be9007498733bc83716f67cb7198f',\n",
-              " 'fcaea8294fc2ba97d022fe107cd022020f55e819',\n",
-              " 'ee1ac10cbc051f00ad784a48d3438aaff651659c',\n",
-              " '60d78d5afb4bf698751c8838286dd43726d2e2fd',\n",
-              " 'a30b47da99b57bde1e203720e49d2261e3ea7f01',\n",
-              " '868f835babdb30f380fabf2ad19197f02bd0666b',\n",
-              " '016186e8e4bfc383165e5059c6211473d28cfa06',\n",
-              " 'd5964e463dcfccd496c18fbfb8e61de6b9d174b9',\n",
-              " '8b290aca909e5168346a4ffee966373cb00af179',\n",
-              " '39bc957abbbca9b1f046edc63e57031e1a1028e0',\n",
-              " 'b847eb93ca56c292f4f5808c59160853d4e3c4be',\n",
-              " '1910a876b733198303829e41ec4dd88d519b78c4',\n",
-              " '76b6fe417c2a90bb55f1117246e28ca06bb95d0a',\n",
-              " '378fe0b1e4bbf50c28aa6dcb61e8aef1e9165406',\n",
-              " 'd57153933e4926ffea632deecca2d7d036d8767a',\n",
-              " '0c9f9680e95fe5f222f644c148eaed82201502ea',\n",
-              " '05f5ff3866044dee526828db0252dca24b3174ba',\n",
-              " 'f834efe8713c2dae9a05506f2bf5b482a39dbea9',\n",
-              " 'f653ac206f747ef5b30e4d0b5b757d698cf7a06c',\n",
-              " '0f0d8372e7c03625357c0dfd9acb09f310cccb9d',\n",
-              " 'f89d5df0e8cfd384b78fb2a02d6c96e70b63a37a',\n",
-              " '129265830332a04dd3dfbbffb2af8032926c6aa8',\n",
-              " '0e94d2421fdfabc96ecf4202c9187f1d9618162c',\n",
-              " 'a43f400be087993b2190dbb72a95235a66057a60',\n",
-              " 'd3c4512180ec0e1f0b475d0426c31d9a0e131ddb',\n",
-              " 'dcf1b1ea83932d57e4800afef942c71585d9b958',\n",
-              " 'f2e809c7bfaf41d3eb6df2c8e87f641536f4d191',\n",
-              " '227e6c1ff32d1b153fe645f8499897e8c18f0f9e',\n",
-              " 'e0e6c67f9e7709c40c5ebc83f6d74b81b31c5d8b',\n",
-              " '4d9116666daff22522ea536aeb0971bde24b57b4',\n",
-              " '49dc7c1d9cd1f33e123bb13f565ea97149c336c2',\n",
-              " '38533fd3c3a28b28422e502fe5db4464153effa8',\n",
-              " '30b1e2a5f064c02327f8798f747228b233606375',\n",
-              " 'aea4dcf673543353fb9f0ff6aff83a56f6b30d79',\n",
-              " '1ef733354ab1a3bf1db74c6948d26dc2bccfa2b0',\n",
-              " 'a9731463fed871df09d13add27a75e7694710d48',\n",
-              " '967f174e48b18d7c7c346d7e9957858aa61dbb33',\n",
-              " '38c223ef7ecc26ff0a66e25f1bf2b9c88b7ba9fc',\n",
-              " '1965041aa1f4d79eac58792947b9f68a968a1644',\n",
-              " '4708d288b96dae17079427d8beceaaf2900c45d8',\n",
-              " '3e206726fb7c85361917ce856a2f9cf85d7c06d9',\n",
-              " 'aff78c761d67c7651046db5f2f250739767d2042',\n",
-              " '9b720a9287974e9291b856aef5ffea1c10a6f264',\n",
-              " 'ce4061a816113885524eb5bdfa17b46cf5be279d',\n",
-              " '55cb612b1b7f09e817909fb95156ef74f1711b70',\n",
-              " '8b29072654e6e9565190113a60341169506caf9b',\n",
-              " 'f5135438d8194dc19dbbc2f165e222e0b8f851eb',\n",
-              " '8efc32dcb487d23737ba2571f400d6e9c112dd06',\n",
-              " 'e490a5990e54e3854264552194b4bdcc78c23da0',\n",
-              " '471127a563ca89d37fc39f9adff7be80eb4b8e2d',\n",
-              " '0bfed41b5b70e6985d0032854fa2905fad4028b0',\n",
-              " 'ee6697963625a3ba7616212a3b18528304b50d8d',\n",
-              " 'd700f022d90b32676267c8bf691005b2d78082ab',\n",
-              " 'e5fe3cf517c0214e1a95c1831d8be9ef981de283',\n",
-              " '031ae8a3d96b03bc124def2e052dd220fe2c06fa',\n",
-              " '8697abbbb40a0901809b0c33691e30dfe8435fab',\n",
-              " 'd4cd6789b1845711589829f0f5aaf0378373059d',\n",
-              " 'e07a5f05c527b5f6885cea982eac75d7922246c7',\n",
-              " 'b9fc4b7671596cae2ca0d36d9f3bd01654d9835b',\n",
-              " '83823f6873e8c8e44ed3aa8e646a30b711b9b442',\n",
-              " '6f33f5f486150b9a69085431cbcb57c7635f7269',\n",
-              " 'eb57a300e9ca1dbf454e6f54405733265783ef45',\n",
-              " 'd8747b3fb48907d6855b0c41c6a3e3bc509a3e4c',\n",
-              " '407f9bcf7d1e702dd9f709231cd31820cccf558b',\n",
-              " 'cf409c89f44d1574b003e457bd90116f1691e1f2',\n",
-              " '225f94ea3f23413994ddbdccdda81a0bb0e64cbb',\n",
-              " 'eedd64f49a0d4afad51ab74e1cf7f730fb64b952',\n",
-              " '0a3a523125d1f183a018d01b9532049054de795f',\n",
-              " 'ac1400f88b583e946c8f08e3630cef966d4071de',\n",
-              " 'e8de1f8519e76a49b681ada1507049b72077a2e6',\n",
-              " 'c0097691f098e5f5583def7d395fde31c95a7139',\n",
-              " 'bbe69f8bf50c7ad150fdc1eece49a01f8a809c50',\n",
-              " 'ce2343b4411cfdc55489e5f867ac9a9ba6a69053',\n",
-              " '0ff218eda4867c233795e7078eb8f782a486fd47',\n",
-              " '1625e2e5776f21451da9d0d1eaf06c4476c58a9c',\n",
-              " '0a982db3348e863cb9b2c0c82a1bf7097ae055ea',\n",
-              " '5a2355e761149521c6eca2fa784a4010d63722aa',\n",
-              " '7e2cc93982129ca6beade4d41c9d23bb964330ad',\n",
-              " '1924f4f30046636ddf22cf2447fd93a1dcb2a652',\n",
-              " '5f1e372153f51049db8557dcc81312fe967bc81a',\n",
-              " '37792bde93cd2dc757253a5952dc2d7c61146b41',\n",
-              " 'db49f544bbc0829533b6151c85296facdf9e7792',\n",
-              " '35987fe0b2938beaaba152fe79f982869c3c4f87',\n",
-              " '41e2261e6a1f6ad202c4bff5061486bc2918c4da',\n",
-              " '3c81bf0c5b897ad6725c2e628945d20dd34160b2',\n",
-              " '3a449374300b342bc3cbf9c90bd2976ba6969c4b',\n",
-              " '3abac45bd08f9bc18c82a48814b7f38656ea4b47',\n",
-              " 'c1105870fb3bd7cd0cff1628308d69aba1c03ae5',\n",
-              " '628a2011f0e212f2e57cf89e27d768b85809afd1',\n",
-              " '164faa61976e1684a83925a5f982a988e7f9c531',\n",
-              " 'd6cd319d94e9627123e89b7a1bcaf78b35894d6c',\n",
-              " 'dff139999bfd211c174369acab297bf0e72542ba',\n",
-              " 'c47243bfa504692b6ed512adc576d2d9f6d0728d',\n",
-              " '83c262710e5e8129090c9b9eb1d33537627ac700',\n",
-              " '551d4f52bc9841a9e018aabb6e4d22eab1322ae9',\n",
-              " '9db5971b3b7ef4e67d725fb3b09586555baf8ef2',\n",
-              " '2428f6b0b85f66aba29543310080c7e38fe7b928',\n",
-              " '4def6a26f9f96d60d69321a5619f4b3cbb85c677',\n",
-              " '693307777f8360c53d0ca13bb4283d2e0a694225',\n",
-              " 'ca0bec5db1ef288622167c90e510607ae74f03f1',\n",
-              " 'b6906e4319f5575711df3a724bcb2c243a35fb0e',\n",
-              " 'bdaf758e033cc4849f84a54b8f5fcb6e590f4af1',\n",
-              " '1b1570d1e07e88a91036f0074aff7e1650a21252',\n",
-              " '3fbd54a8cc5de83d5069a55e3586f2be9ff1fa46',\n",
-              " '1482d5129e7a888fd67409aaa0481efd7dc7460e',\n",
-              " 'e83d3bddf879477095fc66880f66a4b8939a01b9',\n",
-              " 'ae36cef9aac9b272cf06bf7849ac84ef676a6e6f',\n",
-              " 'd9f03642940f45f08cb51d2677358b728e166b89',\n",
-              " 'a535a5b9dd38e343901b5a7f0abf3ee7efbdb901',\n",
-              " '7c81d2549fb84686bf01e81a5cf497aa9d3f5861',\n",
-              " '0199a4f6e7c87690b9c954935307a1fd0b0bbc4f',\n",
-              " 'fb37c53c7a875896753193dd04be862c4b6f65b1',\n",
-              " 'f7a143511c406b20cebf1b3255d65303054753fe',\n",
-              " '1033c914f477b6d0197070ed6d820a479d807390',\n",
-              " '91fab6343607fa38a55cbe64247d3b4dfbc5fdc7',\n",
-              " '279fd295c0edb7c2fa7c7ba5f167ca47a40ef385',\n",
-              " '07aefd14a65ef1278b32f13559ef51f21e87793a',\n",
-              " '1feb7940469347a939321a6e6d75841e7fc2ca54',\n",
-              " '32451371c858e17e7e0c1072aaba4a0a36cdb63a',\n",
-              " '591b9dc8eb0e29d0e4cdac903ac4676867173b20',\n",
-              " '2dbfb3f8666c6c76cc5e456777ac4113bd0dc5f1',\n",
-              " '382c385e4b2e643a0921fa00ee4e686775af7e50',\n",
-              " '18773bbf707ccd5ba5a625cb5db2972ef3414f6c',\n",
-              " '62e585001ae9f0b2950f0ce394a40d886cb8cd4a',\n",
-              " 'e6279e581c4bb530a14781a587887d99f18c5d50',\n",
-              " 'caa00adac6fb490860c069e14a044af3bb3f8b76',\n",
-              " '1ae48cc9bf00e7a94c6fb70e7beb74ee9b926998',\n",
-              " '5fa96dc35be30e482622157ecb297b7b11d55794',\n",
-              " '12e5bff93c4e17bfdb96a2b45f6fa72576128359',\n",
-              " 'fafad7ab942eee1a75162a77e113d64e08693fa8',\n",
-              " '13664ad9f5aa2de8da1376a9ca7f6d5ea8f1a3c0',\n",
-              " '87c9a0981ed036213f40f3ad52af20961f516f79',\n",
-              " '1bec9cdc1bc885e22c3b9e3a382f7a3305e3c342',\n",
-              " '4ae0c3ed418ae6ce0a5c88350ddf80735e381092',\n",
-              " '5c7975fafa7a91dd1a8a7019d5cb6454abad962d',\n",
-              " '4b85cec4d210f9d9bece5f22bbc634a4f4152480',\n",
-              " '5f5995256bc3a955c62022a3e106e49e7d0c5c16',\n",
-              " '9ef75dffe6b0208e06ed2f89db759bab7dddcc6f',\n",
-              " '381d1288eb3f4844ce23add52d0fb3fbc6386345',\n",
-              " 'ad0f78107c8fdd75ccdc1de0338c9a01bce5a345',\n",
-              " '2be16e2bd7fedbba25a6da92c95fe63952e0390f',\n",
-              " '7e8f0570220cf50abcee7feca08d0b8b1974d42c',\n",
-              " '92cf23b4733e4ce19f012cbf2a0db25b0a7dd02f',\n",
-              " 'a3c6b674fcd123289488f834f8f71d27bb0d3c03',\n",
-              " '8c3c71fb19111e68a7b1bde51d90fdbe266acfe4',\n",
-              " '944e582632d0a8ab524833c80d2475f7e74d4e17',\n",
-              " '4d8ab07e79b1cb297e419b4480910b2e6445afbf',\n",
-              " '53cf73610d7b5dbaea98b94ce2ad17cbbdfde998',\n",
-              " '73e5aa1b92683cc20a8160c7f7d7a455d49e9808',\n",
-              " '11091efeef51651017bd796ff53753e1fc2d9629',\n",
-              " '23faa02fea5a83a088c87bd0c9bc91e5c5d5f6ff',\n",
-              " '3f6f73a4577bd74893a44b72a06b3e0d5ac8d646',\n",
-              " '06017a0ccad66f8ce691a90a988e12c3a2ea8e48',\n",
-              " '356a94d25d022e2d98f7fbe474d95e07c6299bd6',\n",
-              " 'd333a6b9c64b858e0a1280dfebda505e409db1dd',\n",
-              " '57852f2a3877fcb45d610c6ebcf0d7e7a7c348ce',\n",
-              " 'c6cfef75f09d3447f23ad1a49fc65370e0a2032a',\n",
-              " '3686ae2bbe62a3312ade3866dfeb2d768a87b1d4',\n",
-              " '0438f314da4b431c937da8b0ef00a253d3e809e0',\n",
-              " 'cfbdec748fa7ce468b6d6d04d2713d9a04c18f41',\n",
-              " 'efe372eef34bdc71be684c9c702c4ca30a1cb10d',\n",
-              " '70082f99266406c96864653a59eca7cc2c8af3fb',\n",
-              " '6fde5ff6ef120ae2b96c6b484dd0f387d6522f16',\n",
-              " 'd34d3a2475132fc547625f0a4122c819c551011d',\n",
-              " 'b4d0e060b45f1713d48039ed508f3097d3765aa5',\n",
-              " 'a301659be1a57d4203b80851c554a4ac0f2d2c4c',\n",
-              " 'bea874b3168d873a5d2a6784491c6162677c1d96',\n",
-              " 'fa8a2d8bf390e793aae36397eeb70c45703a7933',\n",
-              " 'f10c79aacf3ef595f68e6bbc7f87ed9d5681a6a2',\n",
-              " 'b6f08e0fe6567ed39d3b244f2afeceef43e0dbd3',\n",
-              " '2b6a756baea24d1804807cb4001b1da239bb448a',\n",
-              " '8158e1ba6f3102efbd3f7a360051c0a29fadd998',\n",
-              " 'f5ff1246659bda3797c61912e62a6881035a4202',\n",
-              " 'f5638b968e8eefe920657f06fdafc1daee771f50',\n",
-              " '1225a3b7f0aee9085a6a4b847b7b5cf1e3985970',\n",
-              " '7136b45ea9a0f122560590701420d3e48fa6f787',\n",
-              " '2516866542c32e84a11113dea2d97ae1dcdddcaf',\n",
-              " '0771efcfd425f2d83a45ac97ad277e499d4eee39',\n",
-              " 'eaf89add05c2df655201371969abb502cfeab278',\n",
-              " 'ef7bdb45a2a9d2f47a249a20930ae533a955f6d4',\n",
-              " 'cae7d7008393e8dd547c99e88a2d524966cfd73b',\n",
-              " '2346efabe0498937defecfd0289cd9ab4ed03f6d',\n",
-              " '62d1d491c2c60bff8904e79f7dbc0700dd7ba358',\n",
-              " 'f84e1d851d5d2d1ac1a831feb133c9ceeeb4d084',\n",
-              " 'c1eeedc4b40ac8f0f4c6bace72c5a90c26b88d36',\n",
-              " '169b625d2e5c449c8380a43c25e78cfd7f182c15',\n",
-              " '844309b9439a3d4fa923e04acaa0e9f31684bfbd',\n",
-              " '55127b9b011a9cfc28075562fb7bba19d20d5b8c',\n",
-              " '391cca6098e44086191daa773737d20eaf3b72b5',\n",
-              " '18fab5fe8f02bcaf18ae2e57e11d7b2b1450b2a7',\n",
-              " '5c5a2d33190fac4aa845dffcc0791e3b187e7435',\n",
-              " 'bcbad89cbb12ed3cc8cd4441a02ab45d2c5207b6',\n",
-              " '1f8820f74479a48363e63bff444c675fd2c01421',\n",
-              " '746578d4494c92921d3cc053083139b9d2c57c37',\n",
-              " 'e0f616f0e00eb82a30511300ba4ab21ca0b576e1',\n",
-              " '1fc3a3c7fe36b109a4164a60ce53ce97378703fb',\n",
-              " '64694a6f62e7959b044f0f1f18569f2ac043df57',\n",
-              " 'ba082741eebf108251c9cddbaca56f4fe9113b37',\n",
-              " 'f09c7668ce237c95bd9bb292594bef8ff397e67d',\n",
-              " '1632c94a26475e4c2aa98981bbf57d2f5122c094',\n",
-              " '6d2cddf2ca86c044a4bc222b15c20f138860f664',\n",
-              " 'a20a8cb192bf19ed5012f41bad00e54df20afd53',\n",
-              " '7afd36146d0cde1c64af722ca6d69757d5cb9125',\n",
-              " '27ad979dd91454494af1ed94e54a9bdde2497686',\n",
-              " 'd56ec9abf21e50f40fb47429637f55776904b640',\n",
-              " 'f3e915227d9afaeba6e47f1db577ff166d9e34b6',\n",
-              " 'aeb6dd23ebcdb3b915144d2e447365b9d7d44e78',\n",
-              " '15098a4d589acec5802e890673999e361c3da5ae',\n",
-              " '9c67f509f939279b4ec1183bfb65024521abd919',\n",
-              " '7653bc09873c7a3735d6b99d30f42dd2241df5d1',\n",
-              " '3d22ab531a4b9079de5c73253ea1a5075e4f2417',\n",
-              " '62e491c55bb9717ea3da15d0e46952903115bc75',\n",
-              " 'c953c6cce69e977e461801afa7a55d0275725052',\n",
-              " 'cb57dd9fcd676b564fdb8f40180994040010f211',\n",
-              " '56c8936874a50a5f020a334586a20521dd9128ff',\n",
-              " 'a2390f937ab1c28645925ca028c364bc97121d49',\n",
-              " 'a4aa2cdd84bee279570f021407c74e8b9223dcd8',\n",
-              " '71c609d29d02aeedff7f0cf94101aefe8672a179',\n",
-              " '4f599c53a1ec0e557b8cc21ac481777d250b4b87',\n",
-              " '5210509947582a5f451b89fe5d019bf9661196f2',\n",
-              " 'cdae6aef90dc110af222941ad96bf2df7ad42a43',\n",
-              " '76eba81f7057173ede203973050c579f2fca073c',\n",
-              " 'a39d7f32ae921515e766a204a805f901430cbc67',\n",
-              " '63150ecbac9cc4c658ba47def5d21897fa1398ce',\n",
-              " 'ad08ea2342c53290c025960d90fd953520e64222',\n",
-              " '56f6d7dd8388a296ac84de95764f6942314e3fcf',\n",
-              " 'e5fc62e47665358c0f2cd257795dfc762720b179',\n",
-              " '0d2eb67140621893f151e15f79544d4358238277',\n",
-              " 'aa97f96e83b43f081ca13334153729383fee92ad',\n",
-              " '51aaf15a593fcccdba8a1eb9a5004002e58cb0c6',\n",
-              " 'aa64f839c81d2d2ddaa934bd67c78d1b889ba22b',\n",
-              " 'db0d17531a802433fa24e67461a4a36aa86a0e56',\n",
-              " 'b3aa4b3a8d5f22ea512f67fd2b9ce0a572de0323',\n",
-              " '411a1eaed3f10b453dd8d963fe9bf937d8a82b65',\n",
-              " '2502156af3029af7d49979ce32718ddb0f0f94b3',\n",
-              " '1fda40911065c5822c5dcf069da305e17b3ac81a',\n",
-              " '62c6affc9dc626ce1abfc0b0c49118143684514e',\n",
-              " '5d5eaad5e82606d21782699d822e23f1b9d69d72',\n",
-              " 'bff3b596efd938846ea240fd762aaf7e04603ddc',\n",
-              " '8de287496c83c14997239eb26420e286a90c69de',\n",
-              " 'f7972f255206e779f2a51daf662af55cfd3a8aa4',\n",
-              " 'c40a785b02b76ba6afc24ee58bcb8f6b343d963d',\n",
-              " '382ffafb2144769560a08e189d2d9c2689d6f936',\n",
-              " '73a691c9414b0b1f3167c4daac921b35351a53f7',\n",
-              " 'f98c78557ea09c15ea674bd2e374137bd90b9da2',\n",
-              " '4188b25cd82d0094a4ff8e39af5fc4a04cd6d9eb',\n",
-              " '8af53a2b642450ad596615a0df1415ab40639868',\n",
-              " 'eb5e774c71409fff8acea673757f9850d023b8a7',\n",
-              " '6a97b7b1c58f466973c30b6b508ef0353bdef568',\n",
-              " '39c99ce9738d98d2b762509c8d681efd58b31285',\n",
-              " 'a6ea3b9f418ec5e62166dbcee83212b139297f85',\n",
-              " '2d402788fcf7856c65805810ef41faeffe86192a',\n",
-              " '5f01fff720fa19c67de886350dbb5322d1c18cc1',\n",
-              " '212e31a050ee341a12ac3cba740beb5a22acbd6a',\n",
-              " '1ffcae226fae38963b354a7fc1424b797b0dc785',\n",
-              " '1d6796313c23e48ac0b84f82562742e8939ef098',\n",
-              " 'b03d18bb36b8e3eadc03ef165d3d8b3273c5edd6',\n",
-              " 'cbdeaa4eecba8859d5bfd644e18f13f7732e0b14',\n",
-              " 'a44d595402e9a588d11d44b56f96638fb4e8ada1',\n",
-              " 'e9a8deeda6a04df6afb887619a3a1880250aed7a',\n",
-              " '9944bb5c670d59b63a908c8ed0ecdf1d69fbcacc',\n",
-              " '8d3f1b75887dc808b2bd6d5e2552615af6bb7a76',\n",
-              " '8f0429f92ec2af8ddbe2bde5854a065926a4f08e',\n",
-              " '91281c9cb6e49e73e760c0925383036c4941e482',\n",
-              " '23bdf3d3a9937c5bfdc378946a19935e26317ef9',\n",
-              " '25f9ab3818f27da5137d69f6d4360e47334401c3',\n",
-              " '3bade72bd6474920220425b8487202bea0493daa',\n",
-              " '6120f57d638dab7665b9257775ae79b5e4b510f1',\n",
-              " '14e5d19bafb8142b631698247ff517199afb10c1',\n",
-              " 'd0518cd065df011dca2f92210cbbf3c63f68e962',\n",
-              " '111ba55daeb0c1afc111dcbb5ff35295b75b1cdc',\n",
-              " '0c04a4deefb234f521a4d0098f1a328fa4561af8',\n",
-              " '065dc9999874099666452703a732fce7ede3987a',\n",
-              " ...]"
-            ]
-          },
-          "execution_count": 19,
-          "metadata": {},
-          "output_type": "execute_result"
-        }
-      ],
+      "outputs": [],
       "source": [
-        "read = df_compact[df_compact['userId'].isin([user])]['documentId'].tolist()\n",
-        "read"
+        "recommendation = get_rec(random_user, train_compact, test_compact, rec_count, simular_users_count).index.tolist()"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "### Single Recomendation Evaluation"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 20,
+      "execution_count": 9,
       "metadata": {},
       "outputs": [
         {
-          "data": {
-            "text/plain": [
-              "40"
-            ]
-          },
-          "execution_count": 20,
-          "metadata": {},
-          "output_type": "execute_result"
+          "name": "stdout",
+          "output_type": "stream",
+          "text": [
+            "CTR 8.00 %\n",
+            "MSE: 1.44 %\n",
+            "MSE affected-only: 97.52 %\n"
+          ]
         }
       ],
       "source": [
-        "user = 'cx:f5e48x6ex7f53j657ibytaxs2:25ny9hhau79nc'\n",
-        "\n",
-        "df_train = M\n",
-        "df_test = df_compact\n",
+        "overlap = list(set(test_period_read_list).intersection(recommendation)) # list of successfully predicted acticles\n",
+        "articles = test_compact.documentId.unique()\n",
         "\n",
-        "users = get_users(user, df_train, 10)\n",
-        "prediction = get_recs(user, users, df_test, df_test, 50, filter=False).axes[0].tolist()\n",
-        "read = df_compact[df_compact['userId'].isin([user])]['documentId'].tolist()\n",
-        "#actually_read = df_test[df_test['userId'].isin([user]) & df_test['documentId'].isin(prediction)]\n",
-        "actually_read = list(set(read).intersection(prediction))\n",
-        "len(actually_read)"
+        "format_float = \"{:.2f}\".format(len(overlap)/len(recommendation)*100)\n",
+        "print(\"CTR\", format_float, \"%\")\n",
+        "format_float = \"{:.2f}\".format(get_MSE(test_period_read_list, recommendation, articles)*100)\n",
+        "print(\"MSE:\", format_float, \"%\")\n",
+        "format_float = \"{:.2f}\".format(get_MSE2(test_period_read_list, recommendation, articles)*100)\n",
+        "print(\"MSE affected-only:\", format_float, \"%\")"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "### Combined"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 21,
+      "execution_count": 10,
       "metadata": {},
-      "outputs": [],
+      "outputs": [
+        {
+          "name": "stdout",
+          "output_type": "stream",
+          "text": [
+            "CTR 12.00 %\n",
+            "MSE: 1.57 %\n",
+            "MSE affected-only: 96.61 %\n"
+          ]
+        }
+      ],
       "source": [
-        "train, test = train_test_split(df, test_size=0.2)\n",
+        "simular_users_count = 50 # How many corr values to care about\n",
+        "rec_count = 50 # number>0, -1=avarage of corr\n",
         "\n",
-        "data = [train[\"documentId\"], train[\"userId\"]]\n",
-        "headers = [\"documentId\", \"userId\"]\n",
-        "train_compact = pd.concat(data, axis=1, keys=headers)\n",
-        "train_compact = train_compact[train_compact['documentId'].notna()]\n",
-        "train_compact.drop_duplicates(keep=False,inplace=True)\n",
-        "train_compact[\"rating\"] = 1\n",
-        "M = train_compact.pivot_table(index=['documentId'], columns=['userId'], values='rating')\n",
-        "M.shape\n",
-        "M = M.fillna(0)\n",
+        "random_user_index = random.randint(0, len(userId_list))\n",
+        "random_user =  corr_list_list[random_user_index]\n",
         "\n",
-        "data = [test[\"documentId\"], test[\"userId\"]]\n",
-        "headers = [\"documentId\", \"userId\"]\n",
-        "test_compact = pd.concat(data, axis=1, keys=headers)\n",
-        "test_compact = test_compact[test_compact['documentId'].notna()]\n",
-        "test_compact.drop_duplicates(keep=False,inplace=True)\n",
-        "test_compact[\"rating\"] = 1\n",
+        "test_period_read_list = test_compact[test_compact['userId'].isin([random_user[0]])]['documentId'].tolist() # list of all articles the user actually read in test-period\n",
+        "if rec_count is None:\n",
+        "        rec_count = len(test_period_read_list)\n",
+        "elif rec_count == -1:\n",
+        "    read = []\n",
+        "    users_list = [x[0] for x in random_user[1][:simular_users_count]]\n",
+        "    for usr in users_list:\n",
+        "        c = len(test_compact[test_compact['userId'].isin([usr])]['documentId'].tolist())\n",
+        "        read.append(c)\n",
+        "    avg_read = statistics.mean(read)\n",
+        "    rec_count = int(avg_read)\n",
+        "\n",
+        "recommendation = get_rec(random_user, train_compact, test_compact, rec_count, simular_users_count).index.tolist()\n",
         "\n",
-        "test_users = train_compact['userId'].value_counts().axes[0].tolist()[1:51] #top 50 excluding top 1"
+        "overlap = list(set(test_period_read_list).intersection(recommendation)) # list of successfully predicted acticles\n",
+        "articles = test_compact.documentId.unique()\n",
+        "\n",
+        "format_float = \"{:.2f}\".format(len(overlap)/len(recommendation)*100)\n",
+        "print(\"CTR\", format_float, \"%\")\n",
+        "format_float = \"{:.2f}\".format(get_MSE(test_period_read_list, recommendation, articles)*100)\n",
+        "print(\"MSE:\", format_float, \"%\")\n",
+        "format_float = \"{:.2f}\".format(get_MSE2(test_period_read_list, recommendation, articles)*100)\n",
+        "print(\"MSE affected-only:\", format_float, \"%\")"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 22,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [],
       "source": [
-        "def get_MSE(results):\n",
-        "    \n",
-        "    print(\"Test\")"
+        "# Evaluation"
       ]
     },
     {
-      "cell_type": "code",
-      "execution_count": 23,
+      "cell_type": "markdown",
       "metadata": {},
-      "outputs": [],
       "source": [
-        "def test_rec(M, test_compact, test_users, user_count, rec_count=None):\n",
-        "    if rec_count is None:\n",
-        "        print(\"Predicting number of articles equal to actual reading number from test-data for top\", len(test_users),\"users excluding the top 1 using top\", user_count, \"cor users.\")\n",
-        "    else:\n",
-        "        print(\"Predicting number of articles equal to\", rec_count,\"for top\", len(test_users),\"users excluding the top 1 using top\", user_count, \"cor users.\")\n",
-        "    \n",
-        "    rec_count = rec_count\n",
-        "    results = []\n",
-        "    for u in test_users:\n",
-        "        users = get_users(u, M, user_count) # get users with high cor\n",
-        "        reality = test_compact[test_compact['userId'].isin([u])]['documentId'].tolist() # list of all articles the user actually read in test-period\n",
-        "        if rec_count is None:\n",
-        "            rec_count = len(reality)\n",
-        "        prediction = get_recs(u, users, test, train, rec_count).axes[0].tolist() # get as many recommendations as articles the user will actually read\n",
-        "        overlap = list(set(read).intersection(prediction)) # list of successfully predicted acticles\n",
-        "        if len(reality) > 0 and len(prediction) > 0:\n",
-        "            results.append([u, len(users), len(prediction), len(reality), len(overlap), len(overlap)/len(prediction), len(overlap)/len(reality), prediction, reality, overlap]) # userId, high cor users used, prediction count, read count, success count, accuracy, coverage\n",
-        "    #recall = []\n",
-        "    clicks = 0\n",
-        "    rec_count = 0\n",
-        "    for r in results:\n",
-        "        #recall.append(r[4]/r[2])\n",
-        "        clicks += r[4]\n",
-        "        rec_count += r[2]\n",
-        "    ctr = clicks / rec_count * 100\n",
-        "    #avg_recall = statistics.mean(recall) * 100\n",
-        "    #format_float = \"{:.5f}\".format(avg_recall)\n",
-        "    #print(\"AVG Recall: \", format_float, \"%\")\n",
-        "    format_float = \"{:.5f}\".format(ctr)\n",
-        "    print(\"CTR: \", format_float, \"%\")\n",
-        "    print(\"MSE: \", get_MSE(results), \"%\")"
+        "### Config"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 24,
+      "execution_count": 11,
       "metadata": {},
       "outputs": [],
       "source": [
-        "df = load_data(\"active1000\")\n",
-        "train, test = train_test_split(df, test_size=0.2)\n",
+        "userId_count = 999 # 0-1000 depending on skip\n",
+        "userId_skip_count = 1\n",
+        "simular_users_count = 50 # How many corr values to care about\n",
+        "rec_count = 50 # number>0, -1=avarage of corr\n",
         "\n",
-        "data = [train[\"documentId\"], train[\"userId\"]]\n",
-        "headers = [\"documentId\", \"userId\"]\n",
-        "train_compact = pd.concat(data, axis=1, keys=headers)\n",
-        "train_compact = train_compact[train_compact['documentId'].notna()]\n",
-        "train_compact.drop_duplicates(keep=False,inplace=True)\n",
-        "train_compact[\"rating\"] = 1\n",
-        "M = train_compact.pivot_table(index=['documentId'], columns=['userId'], values='rating')\n",
-        "M.shape\n",
-        "M = M.fillna(0)\n",
+        "total_users = 1000\n",
+        "if userId_skip_count < 0 or userId_skip_count > total_users-2:\n",
+        "    userId_skip_count = 0\n",
         "\n",
-        "data = [test[\"documentId\"], test[\"userId\"]]\n",
-        "headers = [\"documentId\", \"userId\"]\n",
-        "test_compact = pd.concat(data, axis=1, keys=headers)\n",
-        "test_compact = test_compact[test_compact['documentId'].notna()]\n",
-        "test_compact.drop_duplicates(keep=False,inplace=True)\n",
-        "test_compact[\"rating\"] = 1\n",
-        "\n"
+        "if userId_count+userId_skip_count > total_users-1:\n",
+        "    userId_count = total_users-userId_skip_count\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "### Test"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 25,
+      "execution_count": 12,
       "metadata": {},
       "outputs": [
         {
-          "name": "stdout",
-          "output_type": "stream",
-          "text": [
-            "Predicting number of articles equal to actual reading number from test-data for top 999 users excluding the top 1 using top 50 cor users.\n",
-            "CTR:  52.07109 %\n",
-            "Test\n",
-            "MSE:  None %\n"
-          ]
+          "data": {
+            "text/plain": [
+              "998"
+            ]
+          },
+          "execution_count": 12,
+          "metadata": {},
+          "output_type": "execute_result"
         }
       ],
       "source": [
-        "test_user_count = 999\n",
-        "skip = 1\n",
-        "test_users = train_compact['userId'].value_counts().axes[0].tolist()[skip:test_user_count+skip]\n",
-        "\n",
-        "test_rec(M, test_compact, test_users, 50)"
+        "recommendations = []\n",
+        "for uid in userId_list[userId_skip_count:userId_count+userId_skip_count-1]:\n",
+        "    test_period_read_list = test_compact[test_compact['userId'].isin([random_user[0]])]['documentId'].tolist() # list of all articles the user actually read in test-period\n",
+        "    if rec_count is None:\n",
+        "            rec_count = len(test_period_read_list)\n",
+        "    elif rec_count == -1:\n",
+        "        read = []\n",
+        "        users_list = [x[0] for x in random_user[1][:simular_users_count]]\n",
+        "        for usr in users_list:\n",
+        "            c = len(test_compact[test_compact['userId'].isin([usr])]['documentId'].tolist())\n",
+        "            read.append(c)\n",
+        "        rec_count = int(statistics.mean(read))\n",
+        "    recommendations.append([uid, get_rec(random_user, train_compact, test_compact, rec_count, simular_users_count).index.tolist(), test_period_read_list])\n",
+        "len(recommendations)\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "### Results"
       ]
     },
     {
       "cell_type": "code",
-      "execution_count": 26,
+      "execution_count": 13,
       "metadata": {},
       "outputs": [
         {
           "name": "stdout",
           "output_type": "stream",
           "text": [
-            "Predicting number of articles equal to 10 for top 50 users excluding the top 1 using top 50 cor users.\n",
-            "CTR:  68.00000 %\n",
-            "Test\n",
-            "MSE:  None %\n"
+            "AVG CTR 12.00000 %\n",
+            "AVG MSE: 1.57082 %\n",
+            "AVG MSE affected-only: 96.61 %\n"
           ]
         }
       ],
       "source": [
-        "test_user_count = 50\n",
-        "skip = 1\n",
-        "test_users = train_compact['userId'].value_counts().axes[0].tolist()[skip:test_user_count+skip]\n",
+        "articles = test_compact.documentId.unique()\n",
+        "\n",
+        "clicks = 0\n",
+        "rec_count = 0\n",
+        "for r in recommendations:\n",
+        "    clicks += len(list(set(r[2]).intersection(r[1])))\n",
+        "    rec_count += len(r[1])\n",
+        "\n",
+        "format_float = \"{:.5f}\".format(clicks / rec_count * 100)\n",
+        "print(\"AVG CTR\", format_float, \"%\")\n",
         "\n",
-        "test_rec(M, test_compact, test_users, 50, 10)"
+        "MSE = []\n",
+        "for r in recommendations:\n",
+        "    MSE.append(get_MSE(r[2], r[1], articles))\n",
+        "    \n",
+        "format_float = \"{:.5f}\".format(statistics.mean(MSE) * 100)\n",
+        "print(\"AVG MSE:\", format_float, \"%\")\n",
+        "\n",
+        "MSE2 = []\n",
+        "for r in recommendations:\n",
+        "    MSE2.append(get_MSE2(r[2], r[1], articles))\n",
+        "    \n",
+        "format_float = \"{:.2f}\".format(statistics.mean(MSE2) * 100)\n",
+        "print(\"AVG MSE affected-only:\", format_float, \"%\")"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "AVG CTR 12.00000 %\n",
+        "AVG MSE: 1.57082 %\n",
+        "AVG MSE affected-only: 96.61 %"
       ]
     }
   ],
@@ -3226,7 +431,7 @@
       "name": "python",
       "nbconvert_exporter": "python",
       "pygments_lexer": "ipython3",
-      "version": "3.9.12"
+      "version": "3.9.7"
     }
   },
   "nbformat": 4,
diff --git a/myfunc.py b/myfunc.py
new file mode 100644
index 0000000000000000000000000000000000000000..2858c8885fa55eecafe617786639a55fa09b263e
--- /dev/null
+++ b/myfunc.py
@@ -0,0 +1,125 @@
+import matplotlib.animation as ani
+import matplotlib.cm as cmx
+import matplotlib.colors as colors
+import matplotlib.pyplot as plt
+import numpy as np
+import json
+import os
+import pandas as pd
+import statistics
+
+from sklearn.metrics.pairwise import cosine_similarity
+from matplotlib.patches import Ellipse
+from PIL import Image
+from sklearn import datasets
+from sklearn.cluster import KMeans
+from sklearn.model_selection import train_test_split
+from sklearn.metrics import mean_squared_error
+
+def load_data(path):
+    """
+        Load events from files and convert to dataframe.
+    """
+    map_lst=[]
+    for f in os.listdir(path):
+        file_name=os.path.join(path,f)
+        if os.path.isfile(file_name):
+            for line in open(file_name):
+                obj = json.loads(line.strip())
+                if not obj is None:
+                    map_lst.append(obj)
+    return pd.DataFrame(map_lst) 
+
+def load_dataset(df):
+    """
+        Convert dataframe to user-item-interaction matrix, which is used for 
+        Matrix Factorization based recommendation.
+        In rating matrix, clicked events are refered as 1 and others are refered as 0.
+    """
+    df = df[~df['documentId'].isnull()]
+    df = df.drop_duplicates(subset=['userId', 'documentId']).reset_index(drop=True)
+    df = df.sort_values(by=['userId', 'time'])
+    n_users = df['userId'].nunique()
+    n_items = df['documentId'].nunique()
+
+    ratings = np.zeros((n_users, n_items))
+    new_user = df['userId'].values[1:] != df['userId'].values[:-1]
+    new_user = np.r_[True, new_user]
+    df['uid'] = np.cumsum(new_user)
+    item_ids = df['documentId'].unique().tolist()
+    new_df = pd.DataFrame({'documentId':item_ids, 'tid':range(1,len(item_ids)+1)})
+    df = pd.merge(df, new_df, on='documentId', how='outer')
+    df_ext = df[['uid', 'tid']]
+    
+    for row in df_ext.itertuples():
+        ratings[row[1]-1, row[2]-1] = 1.0
+    return ratings
+
+def get_corr_list(user, M):
+    corr_list = []
+    for u in M.columns:
+        if u == user:
+            continue
+        A=M[user].to_numpy()
+        B=M[u].to_numpy()
+        result=cosine_similarity(A.reshape(1,-1),B.reshape(1,-1))
+        cor = result[0][0]
+        corr_list.append((u, cor))
+    corr_list.sort(key=lambda tup: tup[1], reverse=True)
+    return corr_list
+
+
+def get_rec(user, train_df, test_df, num, simular_users_count, filter=True):
+    users_list = [x[0] for x in user[1][:simular_users_count]]
+    simular_clicks_df = train_df[train_df['userId'].isin(users_list)]
+    user_clicks = test_df[test_df['userId'].isin([user])]['documentId'].to_list()
+    if filter:
+        df_unread_only = simular_clicks_df[~simular_clicks_df['documentId'].isin(user_clicks)]
+        titles = df_unread_only['documentId'].value_counts()
+    else:
+        titles = simular_clicks_df['documentId'].value_counts()
+    return titles[:num]
+
+
+
+def get_MSE(reality, prediction, articles):
+    # Given values
+    Y_true = np.zeros(len(articles))  # Y_true = Y (original values)
+    
+    # calculated values
+    Y_pred = np.zeros(len(articles))  # Y_pred = Y'
+
+    for a in reality:
+        Y_true[np.where(articles == a)] = 1
+
+    for a in prediction:
+        Y_pred[np.where(articles == a)] = 1
+    
+    # Calculation of Mean Squared Error (MSE)
+    r = mean_squared_error(Y_true,Y_pred)
+    return r
+
+def get_MSE2(reality, prediction, articles):
+    # Given values
+    Y_true = np.zeros(len(articles))  # Y_true = Y (original values)
+    
+    # calculated values
+    Y_pred = np.zeros(len(articles))  # Y_pred = Y'
+
+    for a in reality:
+        Y_true[np.where(articles == a)] = 1
+
+    for a in prediction:
+        Y_pred[np.where(articles == a)] = 1
+
+    new_y_true = []
+    new_y_pred = []
+    
+    for i in range(0, len(Y_true)):
+        if Y_true[i] == 1 or Y_pred[i] == 1:
+            new_y_true.append(Y_true[i])
+            new_y_pred.append(Y_pred[i])
+    
+    # Calculation of Mean Squared Error (MSE)
+    r = mean_squared_error(new_y_true,new_y_pred)
+    return r
\ No newline at end of file