├── Audiobooks_data.csv ├── Deep Learning.ipynb ├── New_Audiobooks_Data.csv ├── Purchase Analytics Descriptive Analysis.ipynb ├── Purchase Analytics Predictive Analysis.ipynb ├── README.md ├── Segmentation.ipynb ├── column_names_audiobooks.txt ├── purchase data legend.xlsx ├── purchase data.csv ├── segmentation data legend.xlsx └── segmentation data.csv /Deep Learning.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Audiobooks business case" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## Preprocess the data. Balance the dataset. Standardize the data. Create 3 datasets: training, validation, and test. Save the newly created sets in a tensor friendly format (e.g. *.npz)\n", 15 | "\n", 16 | "Since we are dealing with real life data, we will need to preprocess it a bit.\n", 17 | "\n", 18 | "If you want to know how to do that, go through the code with comments. In any case, this should do the trick for most datasets organized in the way: many inputs, and then 1 cell containing the targets (supersized learning datasets). Keep in mind that a specific problem may require additional preprocessing.\n", 19 | "\n", 20 | "Note that we have removed the header row, which contains the names of the categories. We simply need the numerical data." 21 | ] 22 | }, 23 | { 24 | "cell_type": "markdown", 25 | "metadata": {}, 26 | "source": [ 27 | "### Extract the data from the csv" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 1, 33 | "metadata": {}, 34 | "outputs": [], 35 | "source": [ 36 | "import numpy as np\n", 37 | "\n", 38 | "# We will use the StandardScaler module, so we can later deploy the model\n", 39 | "from sklearn.preprocessing import StandardScaler\n", 40 | "\n", 41 | "import pickle\n", 42 | "\n", 43 | "# Load the data\n", 44 | "raw_csv_data = np.loadtxt('Audiobooks_data.csv',delimiter=',')\n", 45 | "\n", 46 | "# The inputs are all columns in the csv, except for the first one and the last one\n", 47 | "# The first column is the arbitrary ID, while the last contains the targets\n", 48 | "\n", 49 | "unscaled_inputs_all = raw_csv_data[:,1:-1]\n", 50 | "\n", 51 | "# The targets are in the last column. That's how datasets are conventionally organized.\n", 52 | "targets_all = raw_csv_data[:,-1]" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": {}, 58 | "source": [ 59 | "### Balance the dataset" 60 | ] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "execution_count": 2, 65 | "metadata": {}, 66 | "outputs": [], 67 | "source": [ 68 | "# There are different Python packages that could be used for balancing\n", 69 | "# Here we approach the problem manually, so you can observe the inner workings of the balancing process\n", 70 | "\n", 71 | "# Count how many targets are 1 (meaning that the customer did convert)\n", 72 | "num_one_targets = int(np.sum(targets_all))\n", 73 | "\n", 74 | "# Set a counter for targets that are 0 (meaning that the customer did not convert)\n", 75 | "zero_targets_counter = 0\n", 76 | "\n", 77 | "# We want to create a \"balanced\" dataset, so we will have to remove some input/target pairs.\n", 78 | "# Declare a variable that will do that:\n", 79 | "indices_to_remove = []\n", 80 | "\n", 81 | "# Count the number of targets that are 0. \n", 82 | "# Once there are as many 0s as 1s, mark entries where the target is 0.\n", 83 | "for i in range(targets_all.shape[0]):\n", 84 | " if targets_all[i] == 0:\n", 85 | " zero_targets_counter += 1\n", 86 | " if zero_targets_counter > num_one_targets:\n", 87 | " indices_to_remove.append(i)\n", 88 | "\n", 89 | "# Create two new variables, one that will contain the inputs, and one that will contain the targets.\n", 90 | "# We delete all indices that we marked \"to remove\" in the loop above.\n", 91 | "unscaled_inputs_equal_priors = np.delete(unscaled_inputs_all, indices_to_remove, axis=0)\n", 92 | "targets_equal_priors = np.delete(targets_all, indices_to_remove, axis=0)" 93 | ] 94 | }, 95 | { 96 | "cell_type": "markdown", 97 | "metadata": {}, 98 | "source": [ 99 | "### Standardize the inputs" 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": 8, 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [ 108 | "# Crete a standar scaler object\n", 109 | "scaler_deep_learning = StandardScaler()\n", 110 | "# Fit and transform the original data\n", 111 | "# Essentially, we calculate and STORE the mean and variance of the data in the scaler object\n", 112 | "# At the same time we standrdize the data using this information\n", 113 | "# Note that the mean and variance remain recorded in the scaler object\n", 114 | "scaled_inputs = scaler_deep_learning.fit_transform(unscaled_inputs_equal_priors)" 115 | ] 116 | }, 117 | { 118 | "cell_type": "markdown", 119 | "metadata": {}, 120 | "source": [ 121 | "### Shuffle the data" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 4, 127 | "metadata": {}, 128 | "outputs": [], 129 | "source": [ 130 | "# When the data was collected it was actually arranged by date\n", 131 | "# Shuffle the indices of the data, so the data is not arranged in any way when we feed it.\n", 132 | "# Since we will be batching, we want the data to be as randomly spread out as possible\n", 133 | "shuffled_indices = np.arange(scaled_inputs.shape[0])\n", 134 | "np.random.shuffle(shuffled_indices)\n", 135 | "\n", 136 | "# Use the shuffled indices to shuffle the inputs and targets.\n", 137 | "shuffled_inputs = scaled_inputs[shuffled_indices]\n", 138 | "shuffled_targets = targets_equal_priors[shuffled_indices]" 139 | ] 140 | }, 141 | { 142 | "cell_type": "markdown", 143 | "metadata": {}, 144 | "source": [ 145 | "### Split the dataset into train, validation, and test" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 5, 151 | "metadata": {}, 152 | "outputs": [ 153 | { 154 | "name": "stdout", 155 | "output_type": "stream", 156 | "text": [ 157 | "1784.0 3579 0.4984632578932663\n", 158 | "216.0 447 0.48322147651006714\n", 159 | "237.0 448 0.5290178571428571\n" 160 | ] 161 | } 162 | ], 163 | "source": [ 164 | "# Count the total number of samples\n", 165 | "samples_count = shuffled_inputs.shape[0]\n", 166 | "\n", 167 | "# Count the samples in each subset, assuming we want 80-10-10 distribution of training, validation, and test.\n", 168 | "# Naturally, the numbers are integers.\n", 169 | "train_samples_count = int(0.8 * samples_count)\n", 170 | "validation_samples_count = int(0.1 * samples_count)\n", 171 | "\n", 172 | "# The 'test' dataset contains all remaining data.\n", 173 | "test_samples_count = samples_count - train_samples_count - validation_samples_count\n", 174 | "\n", 175 | "# Create variables that record the inputs and targets for training\n", 176 | "# In our shuffled dataset, they are the first \"train_samples_count\" observations\n", 177 | "train_inputs = shuffled_inputs[:train_samples_count]\n", 178 | "train_targets = shuffled_targets[:train_samples_count]\n", 179 | "\n", 180 | "# Create variables that record the inputs and targets for validation.\n", 181 | "# They are the next \"validation_samples_count\" observations, folllowing the \"train_samples_count\" we already assigned\n", 182 | "validation_inputs = shuffled_inputs[train_samples_count:train_samples_count+validation_samples_count]\n", 183 | "validation_targets = shuffled_targets[train_samples_count:train_samples_count+validation_samples_count]\n", 184 | "\n", 185 | "# Create variables that record the inputs and targets for test.\n", 186 | "# They are everything that is remaining.\n", 187 | "test_inputs = shuffled_inputs[train_samples_count+validation_samples_count:]\n", 188 | "test_targets = shuffled_targets[train_samples_count+validation_samples_count:]\n", 189 | "\n", 190 | "# We balanced our dataset to be 50-50 (for targets 0 and 1), but the training, validation, and test were \n", 191 | "# taken from a shuffled dataset. Check if they are balanced, too. Note that each time you rerun this code, \n", 192 | "# you will get different values, as each time they are shuffled randomly.\n", 193 | "# Normally you preprocess ONCE, so you need not rerun this code once it is done.\n", 194 | "# If you rerun this whole sheet, the npzs will be overwritten with your newly preprocessed data.\n", 195 | "\n", 196 | "# Print the number of targets that are 1s, the total number of samples, and the proportion for training, validation, and test.\n", 197 | "print(np.sum(train_targets), train_samples_count, np.sum(train_targets) / train_samples_count)\n", 198 | "print(np.sum(validation_targets), validation_samples_count, np.sum(validation_targets) / validation_samples_count)\n", 199 | "print(np.sum(test_targets), test_samples_count, np.sum(test_targets) / test_samples_count)" 200 | ] 201 | }, 202 | { 203 | "cell_type": "markdown", 204 | "metadata": {}, 205 | "source": [ 206 | "### Save the three datasets in *.npz" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": 6, 212 | "metadata": {}, 213 | "outputs": [], 214 | "source": [ 215 | "# Save the three datasets in *.npz.\n", 216 | "# In the next lesson, you will see that it is extremely valuable to name them in such a coherent way!\n", 217 | "\n", 218 | "np.savez('Audiobooks_data_train', inputs=train_inputs, targets=train_targets)\n", 219 | "np.savez('Audiobooks_data_validation', inputs=validation_inputs, targets=validation_targets)\n", 220 | "np.savez('Audiobooks_data_test', inputs=test_inputs, targets=test_targets)" 221 | ] 222 | }, 223 | { 224 | "cell_type": "markdown", 225 | "metadata": {}, 226 | "source": [ 227 | "### Save the scaler" 228 | ] 229 | }, 230 | { 231 | "cell_type": "code", 232 | "execution_count": 17, 233 | "metadata": {}, 234 | "outputs": [], 235 | "source": [ 236 | "# Similar to how we have saved the scaler files before, we also save this scaler, so we can apply in on new data\n", 237 | "pickle.dump(scaler_deep_learning, open('scaler_deep_learning.pickle', 'wb'))" 238 | ] 239 | }, 240 | { 241 | "cell_type": "markdown", 242 | "metadata": {}, 243 | "source": [ 244 | "# Practical example. Audiobooks" 245 | ] 246 | }, 247 | { 248 | "cell_type": "markdown", 249 | "metadata": {}, 250 | "source": [ 251 | "## Problem\n", 252 | "\n", 253 | "You are given data from an Audiobook app. Logically, it relates only to the audio versions of books. Each customer in the database has made a purchase at least once, that's why he/she is in the database. We want to create a machine learning algorithm based on our available data that can predict if a customer will buy again from the Audiobook company.\n", 254 | "\n", 255 | "The main idea is that if a customer has a low probability of coming back, there is no reason to spend any money on advertizing to him/her. If we can focus our efforts ONLY on customers that are likely to convert again, we can make great savings. Moreover, this model can identify the most important metrics for a customer to come back again. Identifying new customers creates value and growth opportunities.\n", 256 | "\n", 257 | "You have a .csv summarizing the data. There are several variables: Customer ID, Book length in mins_avg (average of all purchases), Book length in minutes_sum (sum of all purchases), Price Paid_avg (average of all purchases), Price paid_sum (sum of all purchases), Review (a Boolean variable), Review (out of 10), Total minutes listened, Completion (from 0 to 1), Support requests (number), and Last visited minus purchase date (in days).\n", 258 | "\n", 259 | "So these are the inputs (excluding customer ID, as it is completely arbitrary. It's more like a name, than a number).\n", 260 | "\n", 261 | "The targets are a Boolean variable (so 0, or 1). We are taking a period of 2 years in our inputs, and the next 6 months as targets. So, in fact, we are predicting if: based on the last 2 years of activity and engagement, a customer will convert in the next 6 months. 6 months sounds like a reasonable time. If they don't convert after 6 months, chances are they've gone to a competitor or didn't like the Audiobook way of digesting information. \n", 262 | "\n", 263 | "The task is simple: create a machine learning algorithm, which is able to predict if a customer will buy again. \n", 264 | "\n", 265 | "This is a classification problem with two classes: won't buy and will buy, represented by 0s and 1s. \n", 266 | "\n", 267 | "Good luck!" 268 | ] 269 | }, 270 | { 271 | "cell_type": "markdown", 272 | "metadata": {}, 273 | "source": [ 274 | "## Create the machine learning algorithm\n", 275 | "\n" 276 | ] 277 | }, 278 | { 279 | "cell_type": "markdown", 280 | "metadata": {}, 281 | "source": [ 282 | "### Import the relevant libraries" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": 1, 288 | "metadata": {}, 289 | "outputs": [], 290 | "source": [ 291 | "# we must import the libraries once again since we haven't imported them in this file\n", 292 | "import numpy as np\n", 293 | "import tensorflow as tf" 294 | ] 295 | }, 296 | { 297 | "cell_type": "markdown", 298 | "metadata": {}, 299 | "source": [ 300 | "### Data" 301 | ] 302 | }, 303 | { 304 | "cell_type": "code", 305 | "execution_count": 2, 306 | "metadata": {}, 307 | "outputs": [], 308 | "source": [ 309 | "# let's create a temporary variable npz, where we will store each of the three Audiobooks datasets\n", 310 | "npz = np.load('Audiobooks_data_train.npz')\n", 311 | "\n", 312 | "# we extract the inputs using the keyword under which we saved them\n", 313 | "# to ensure that they are all floats, let's also take care of that\n", 314 | "train_inputs = npz['inputs'].astype(np.float)\n", 315 | "# targets must be int because of sparse_categorical_crossentropy (we want to be able to smoothly one-hot encode them)\n", 316 | "train_targets = npz['targets'].astype(np.int)\n", 317 | "\n", 318 | "# we load the validation data in the temporary variable\n", 319 | "npz = np.load('Audiobooks_data_validation.npz')\n", 320 | "# we can load the inputs and the targets in the same line\n", 321 | "validation_inputs, validation_targets = npz['inputs'].astype(np.float), npz['targets'].astype(np.int)\n", 322 | "\n", 323 | "# we load the test data in the temporary variable\n", 324 | "npz = np.load('Audiobooks_data_test.npz')\n", 325 | "# we create 2 variables that will contain the test inputs and the test targets\n", 326 | "test_inputs, test_targets = npz['inputs'].astype(np.float), npz['targets'].astype(np.int)" 327 | ] 328 | }, 329 | { 330 | "cell_type": "markdown", 331 | "metadata": {}, 332 | "source": [ 333 | "### Model\n", 334 | "Outline, optimizers, loss, early stopping and training" 335 | ] 336 | }, 337 | { 338 | "cell_type": "code", 339 | "execution_count": 3, 340 | "metadata": {}, 341 | "outputs": [ 342 | { 343 | "name": "stdout", 344 | "output_type": "stream", 345 | "text": [ 346 | "Train on 3579 samples, validate on 447 samples\n", 347 | "Epoch 1/100\n", 348 | "3579/3579 - 1s - loss: 0.5996 - accuracy: 0.6921 - val_loss: 0.4299 - val_accuracy: 0.8725\n", 349 | "Epoch 2/100\n", 350 | "3579/3579 - 0s - loss: 0.3799 - accuracy: 0.8737 - val_loss: 0.3138 - val_accuracy: 0.8837\n", 351 | "Epoch 3/100\n", 352 | "3579/3579 - 0s - loss: 0.3205 - accuracy: 0.8846 - val_loss: 0.2926 - val_accuracy: 0.8881\n", 353 | "Epoch 4/100\n", 354 | "3579/3579 - 0s - loss: 0.2967 - accuracy: 0.8916 - val_loss: 0.2876 - val_accuracy: 0.8881\n", 355 | "Epoch 5/100\n", 356 | "3579/3579 - 0s - loss: 0.2828 - accuracy: 0.8969 - val_loss: 0.2776 - val_accuracy: 0.8949\n", 357 | "Epoch 6/100\n", 358 | "3579/3579 - 0s - loss: 0.2727 - accuracy: 0.8997 - val_loss: 0.2745 - val_accuracy: 0.8881\n", 359 | "Epoch 7/100\n", 360 | "3579/3579 - 0s - loss: 0.2669 - accuracy: 0.9014 - val_loss: 0.2683 - val_accuracy: 0.8971\n", 361 | "Epoch 8/100\n", 362 | "3579/3579 - 0s - loss: 0.2605 - accuracy: 0.9042 - val_loss: 0.2659 - val_accuracy: 0.8993\n", 363 | "Epoch 9/100\n", 364 | "3579/3579 - 0s - loss: 0.2573 - accuracy: 0.9042 - val_loss: 0.2654 - val_accuracy: 0.8993\n", 365 | "Epoch 10/100\n", 366 | "3579/3579 - 0s - loss: 0.2531 - accuracy: 0.9028 - val_loss: 0.2654 - val_accuracy: 0.8971\n", 367 | "Epoch 11/100\n", 368 | "3579/3579 - 0s - loss: 0.2509 - accuracy: 0.9039 - val_loss: 0.2627 - val_accuracy: 0.8926\n", 369 | "Epoch 12/100\n", 370 | "3579/3579 - 0s - loss: 0.2479 - accuracy: 0.9075 - val_loss: 0.2638 - val_accuracy: 0.9060\n", 371 | "Epoch 13/100\n", 372 | "3579/3579 - 0s - loss: 0.2466 - accuracy: 0.9072 - val_loss: 0.2604 - val_accuracy: 0.8993\n", 373 | "Epoch 14/100\n", 374 | "3579/3579 - 0s - loss: 0.2463 - accuracy: 0.9078 - val_loss: 0.2609 - val_accuracy: 0.8926\n", 375 | "Epoch 15/100\n", 376 | "3579/3579 - 0s - loss: 0.2464 - accuracy: 0.9064 - val_loss: 0.2563 - val_accuracy: 0.8971\n", 377 | "Epoch 16/100\n", 378 | "3579/3579 - 0s - loss: 0.2411 - accuracy: 0.9084 - val_loss: 0.2700 - val_accuracy: 0.8971\n", 379 | "Epoch 17/100\n", 380 | "3579/3579 - 0s - loss: 0.2410 - accuracy: 0.9089 - val_loss: 0.2564 - val_accuracy: 0.9016\n" 381 | ] 382 | }, 383 | { 384 | "data": { 385 | "text/plain": [ 386 | "" 387 | ] 388 | }, 389 | "execution_count": 3, 390 | "metadata": {}, 391 | "output_type": "execute_result" 392 | } 393 | ], 394 | "source": [ 395 | "# Optionally set the input size. We won't be using it, but in some cases it is beneficial\n", 396 | "# input_size = 10\n", 397 | "# Set the output size\n", 398 | "output_size = 2\n", 399 | "# Use same hidden layer size for both hidden layers. Not a necessity.\n", 400 | "hidden_layer_size = 50\n", 401 | " \n", 402 | "# define how the model will look like\n", 403 | "model = tf.keras.Sequential([\n", 404 | " # tf.keras.layers.Dense is basically implementing: output = activation(dot(input, weight) + bias)\n", 405 | " # it takes several arguments, but the most important ones for us are the hidden_layer_size and the activation function\n", 406 | " tf.keras.layers.Dense(hidden_layer_size, activation='relu'), # 1st hidden layer\n", 407 | " tf.keras.layers.Dense(hidden_layer_size, activation='relu'), # 2nd hidden layer\n", 408 | " # the final layer is no different, we just make sure to activate it with softmax\n", 409 | " tf.keras.layers.Dense(output_size, activation='softmax') # output layer\n", 410 | "])\n", 411 | "\n", 412 | "\n", 413 | "### Choose the optimizer and the loss function\n", 414 | "\n", 415 | "# we define the optimizer we'd like to use, \n", 416 | "# the loss function, \n", 417 | "# and the metrics we are interested in obtaining at each iteration\n", 418 | "model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n", 419 | "\n", 420 | "### Training\n", 421 | "# That's where we train the model we have built.\n", 422 | "\n", 423 | "# set the batch size\n", 424 | "batch_size = 100\n", 425 | "\n", 426 | "# set a maximum number of training epochs\n", 427 | "max_epochs = 100\n", 428 | "\n", 429 | "# set an early stopping mechanism\n", 430 | "# let's set patience=2, to be a bit tolerant against random validation loss increases\n", 431 | "early_stopping = tf.keras.callbacks.EarlyStopping(patience=2)\n", 432 | "\n", 433 | "# fit the model\n", 434 | "# note that this time the train, validation and test data are not iterable\n", 435 | "model.fit(train_inputs, # train inputs\n", 436 | " train_targets, # train targets\n", 437 | " batch_size=batch_size, # batch size\n", 438 | " epochs=max_epochs, # epochs that we will train for (assuming early stopping doesn't kick in)\n", 439 | " # callbacks are functions called by a task when a task is completed\n", 440 | " # task here is to check if val_loss is increasing\n", 441 | " callbacks=[early_stopping], # early stopping\n", 442 | " validation_data=(validation_inputs, validation_targets), # validation data\n", 443 | " verbose = 2 # making sure we get enough information about the training process\n", 444 | " ) " 445 | ] 446 | }, 447 | { 448 | "cell_type": "markdown", 449 | "metadata": {}, 450 | "source": [ 451 | "## Test the model\n", 452 | "\n", 453 | "As we discussed in the lectures, after training on the training data and validating on the validation data, we test the final prediction power of our model by running it on the test dataset that the algorithm has NEVER seen before.\n", 454 | "\n", 455 | "It is very important to realize that fiddling with the hyperparameters overfits the validation dataset. \n", 456 | "\n", 457 | "The test is the absolute final instance. You should not test before you are completely done with adjusting your model.\n", 458 | "\n", 459 | "If you adjust your model after testing, you will start overfitting the test dataset, which will defeat its purpose." 460 | ] 461 | }, 462 | { 463 | "cell_type": "code", 464 | "execution_count": 4, 465 | "metadata": { 466 | "scrolled": true 467 | }, 468 | "outputs": [ 469 | { 470 | "name": "stdout", 471 | "output_type": "stream", 472 | "text": [ 473 | "\r", 474 | "448/1 [================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 0s 432us/sample - loss: 0.2730 - accuracy: 0.8996\n" 475 | ] 476 | } 477 | ], 478 | "source": [ 479 | "# declare two variables that are going to contain the two outputs from the evaluate function\n", 480 | "# they are the loss (which is there by default) and whatever was specified in the 'metrics' argument when fitting the model\n", 481 | "test_loss, test_accuracy = model.evaluate(test_inputs, test_targets)" 482 | ] 483 | }, 484 | { 485 | "cell_type": "code", 486 | "execution_count": 5, 487 | "metadata": { 488 | "scrolled": true 489 | }, 490 | "outputs": [ 491 | { 492 | "name": "stdout", 493 | "output_type": "stream", 494 | "text": [ 495 | "\n", 496 | "Test loss: 0.25. Test accuracy: 89.96%\n" 497 | ] 498 | } 499 | ], 500 | "source": [ 501 | "# Print the result in neatly formatted\n", 502 | "print('\\nTest loss: {0:.2f}. Test accuracy: {1:.2f}%'.format(test_loss, test_accuracy*100.))" 503 | ] 504 | }, 505 | { 506 | "cell_type": "markdown", 507 | "metadata": {}, 508 | "source": [ 509 | "## Obtain the probability for a customer to convert" 510 | ] 511 | }, 512 | { 513 | "cell_type": "code", 514 | "execution_count": 6, 515 | "metadata": {}, 516 | "outputs": [ 517 | { 518 | "data": { 519 | "text/plain": [ 520 | "array([[9.30453837e-01, 6.95461929e-02],\n", 521 | " [9.99998569e-01, 1.41493751e-06],\n", 522 | " [1.35837094e-04, 9.99864101e-01],\n", 523 | " [1.16327487e-01, 8.83672476e-01],\n", 524 | " [1.00000000e+00, 7.11777443e-11],\n", 525 | " [1.07386224e-01, 8.92613769e-01],\n", 526 | " [1.80177465e-02, 9.81982291e-01],\n", 527 | " [8.69632065e-01, 1.30367935e-01],\n", 528 | " [9.99988079e-01, 1.19029910e-05],\n", 529 | " [9.99502897e-01, 4.97044064e-04],\n", 530 | " [9.63217914e-02, 9.03678238e-01],\n", 531 | " [1.04484417e-01, 8.95515621e-01],\n", 532 | " [2.85309970e-01, 7.14689970e-01],\n", 533 | " [8.80754173e-01, 1.19245805e-01],\n", 534 | " [7.64859200e-01, 2.35140830e-01],\n", 535 | " [8.41083407e-01, 1.58916652e-01],\n", 536 | " [4.19977248e-01, 5.80022752e-01],\n", 537 | " [7.40365982e-01, 2.59634018e-01],\n", 538 | " [3.56689602e-01, 6.43310428e-01],\n", 539 | " [1.04733994e-02, 9.89526629e-01],\n", 540 | " [2.61641800e-01, 7.38358200e-01],\n", 541 | " [1.66383058e-01, 8.33616972e-01],\n", 542 | " [1.21992292e-04, 9.99878049e-01],\n", 543 | " [9.25583839e-01, 7.44160935e-02],\n", 544 | " [3.61022174e-01, 6.38977826e-01],\n", 545 | " [9.83680725e-01, 1.63192172e-02],\n", 546 | " [1.10430792e-01, 8.89569223e-01],\n", 547 | " [2.38521963e-01, 7.61478007e-01],\n", 548 | " [1.69038370e-01, 8.30961645e-01],\n", 549 | " [9.99989748e-01, 1.03071916e-05],\n", 550 | " [1.76587150e-01, 8.23412895e-01],\n", 551 | " [9.57734138e-02, 9.04226661e-01],\n", 552 | " [1.07815815e-03, 9.98921871e-01],\n", 553 | " [3.10346877e-08, 1.00000000e+00],\n", 554 | " [1.56920741e-03, 9.98430789e-01],\n", 555 | " [9.32997227e-01, 6.70027509e-02],\n", 556 | " [8.57020319e-01, 1.42979741e-01],\n", 557 | " [1.39835253e-01, 8.60164762e-01],\n", 558 | " [9.87669766e-01, 1.23302797e-02],\n", 559 | " [8.06992948e-01, 1.93007082e-01],\n", 560 | " [5.30556321e-01, 4.69443709e-01],\n", 561 | " [9.99981403e-01, 1.85642402e-05],\n", 562 | " [8.34989130e-01, 1.65010825e-01],\n", 563 | " [9.25707936e-01, 7.42920786e-02],\n", 564 | " [1.23402819e-01, 8.76597226e-01],\n", 565 | " [8.45300257e-01, 1.54699728e-01],\n", 566 | " [1.00000000e+00, 1.01467315e-11],\n", 567 | " [1.74305364e-01, 8.25694621e-01],\n", 568 | " [7.78605044e-01, 2.21394971e-01],\n", 569 | " [1.00000000e+00, 2.01175990e-13],\n", 570 | " [9.99641061e-01, 3.58952500e-04],\n", 571 | " [9.70711350e-01, 2.92886607e-02],\n", 572 | " [9.99999523e-01, 4.42310068e-07],\n", 573 | " [2.18931824e-08, 1.00000000e+00],\n", 574 | " [9.53518033e-01, 4.64820229e-02],\n", 575 | " [9.23178077e-01, 7.68218935e-02],\n", 576 | " [8.24134886e-01, 1.75865114e-01],\n", 577 | " [1.00000000e+00, 4.05194012e-09],\n", 578 | " [3.15806051e-06, 9.99996901e-01],\n", 579 | " [3.71254755e-05, 9.99962926e-01],\n", 580 | " [8.80546331e-01, 1.19453713e-01],\n", 581 | " [9.52197850e-01, 4.78021391e-02],\n", 582 | " [8.92399922e-02, 9.10760045e-01],\n", 583 | " [7.11297116e-06, 9.99992847e-01],\n", 584 | " [9.13227677e-01, 8.67723003e-02],\n", 585 | " [9.24932361e-01, 7.50676468e-02],\n", 586 | " [8.63835692e-01, 1.36164352e-01],\n", 587 | " [8.07916294e-05, 9.99919176e-01],\n", 588 | " [1.74417123e-01, 8.25582922e-01],\n", 589 | " [1.00000000e+00, 2.91046326e-10],\n", 590 | " [9.28210974e-01, 7.17890039e-02],\n", 591 | " [2.08586464e-08, 1.00000000e+00],\n", 592 | " [5.58222225e-03, 9.94417787e-01],\n", 593 | " [1.08370706e-01, 8.91629338e-01],\n", 594 | " [9.67722535e-01, 3.22774760e-02],\n", 595 | " [9.99007761e-01, 9.92234563e-04],\n", 596 | " [9.74311411e-01, 2.56885141e-02],\n", 597 | " [5.87328136e-01, 4.12671864e-01],\n", 598 | " [1.39383391e-01, 8.60616624e-01],\n", 599 | " [1.34803988e-02, 9.86519575e-01],\n", 600 | " [2.47419113e-03, 9.97525752e-01],\n", 601 | " [6.53663883e-05, 9.99934673e-01],\n", 602 | " [9.75138366e-01, 2.48616133e-02],\n", 603 | " [1.21541068e-01, 8.78458917e-01],\n", 604 | " [8.47659767e-01, 1.52340159e-01],\n", 605 | " [7.69552439e-02, 9.23044801e-01],\n", 606 | " [3.80294841e-05, 9.99961972e-01],\n", 607 | " [9.45563078e-01, 5.44369034e-02],\n", 608 | " [8.41524243e-01, 1.58475801e-01],\n", 609 | " [9.99966860e-01, 3.31942465e-05],\n", 610 | " [7.54062176e-01, 2.45937839e-01],\n", 611 | " [1.71284556e-01, 8.28715444e-01],\n", 612 | " [5.59141440e-03, 9.94408548e-01],\n", 613 | " [1.00000000e+00, 4.50613540e-11],\n", 614 | " [5.65095767e-02, 9.43490386e-01],\n", 615 | " [9.99805272e-01, 1.94792519e-04],\n", 616 | " [4.03621167e-01, 5.96378803e-01],\n", 617 | " [1.71284556e-01, 8.28715444e-01],\n", 618 | " [9.09985840e-01, 9.00141969e-02],\n", 619 | " [1.03702515e-01, 8.96297455e-01],\n", 620 | " [8.55304673e-02, 9.14469540e-01],\n", 621 | " [1.88061014e-01, 8.11939001e-01],\n", 622 | " [9.37709332e-01, 6.22906350e-02],\n", 623 | " [9.45392326e-02, 9.05460835e-01],\n", 624 | " [2.09250837e-04, 9.99790728e-01],\n", 625 | " [9.98526037e-01, 1.47393311e-03],\n", 626 | " [8.37306559e-01, 1.62693426e-01],\n", 627 | " [1.55403644e-01, 8.44596386e-01],\n", 628 | " [2.81001814e-03, 9.97189939e-01],\n", 629 | " [1.32406756e-01, 8.67593288e-01],\n", 630 | " [2.92227238e-01, 7.07772732e-01],\n", 631 | " [8.14971328e-01, 1.85028687e-01],\n", 632 | " [5.27299009e-02, 9.47270095e-01],\n", 633 | " [8.88838172e-01, 1.11161895e-01],\n", 634 | " [1.00000000e+00, 1.39967034e-08],\n", 635 | " [8.18988502e-01, 1.81011498e-01],\n", 636 | " [5.76405945e-08, 1.00000000e+00],\n", 637 | " [9.99999881e-01, 6.33984811e-08],\n", 638 | " [8.25964749e-01, 1.74035311e-01],\n", 639 | " [5.20697653e-01, 4.79302317e-01],\n", 640 | " [4.50477179e-04, 9.99549448e-01],\n", 641 | " [8.41059208e-01, 1.58940822e-01],\n", 642 | " [6.93646260e-03, 9.93063509e-01],\n", 643 | " [8.15947175e-01, 1.84052870e-01],\n", 644 | " [1.74305350e-01, 8.25694740e-01],\n", 645 | " [9.16352510e-01, 8.36474672e-02],\n", 646 | " [7.69623294e-02, 9.23037708e-01],\n", 647 | " [9.99978900e-01, 2.11012702e-05],\n", 648 | " [9.99534965e-01, 4.65101126e-04],\n", 649 | " [9.98224318e-01, 1.77568465e-03],\n", 650 | " [9.99996543e-01, 3.49951915e-06],\n", 651 | " [9.37745810e-01, 6.22541681e-02],\n", 652 | " [2.81408072e-01, 7.18591869e-01],\n", 653 | " [9.99644160e-01, 3.55840049e-04],\n", 654 | " [3.16137969e-01, 6.83861971e-01],\n", 655 | " [9.99986649e-01, 1.34073871e-05],\n", 656 | " [9.98374820e-01, 1.62519433e-03],\n", 657 | " [1.28528357e-01, 8.71471643e-01],\n", 658 | " [3.46778147e-02, 9.65322137e-01],\n", 659 | " [1.32834837e-01, 8.67165208e-01],\n", 660 | " [8.68563771e-01, 1.31436199e-01],\n", 661 | " [8.82367611e-01, 1.17632322e-01],\n", 662 | " [1.76587179e-01, 8.23412895e-01],\n", 663 | " [3.88413355e-06, 9.99996066e-01],\n", 664 | " [8.00376713e-01, 1.99623257e-01],\n", 665 | " [9.99998808e-01, 1.19318554e-06],\n", 666 | " [1.71407670e-01, 8.28592360e-01],\n", 667 | " [1.68157861e-01, 8.31842184e-01],\n", 668 | " [9.99999762e-01, 2.38276684e-07],\n", 669 | " [9.18719709e-01, 8.12802687e-02],\n", 670 | " [9.99612510e-01, 3.87538748e-04],\n", 671 | " [9.02393639e-01, 9.76062939e-02],\n", 672 | " [9.29223448e-02, 9.07077670e-01],\n", 673 | " [9.99702275e-01, 2.97709950e-04],\n", 674 | " [9.99375880e-01, 6.24199281e-04],\n", 675 | " [7.49404132e-01, 2.50595868e-01],\n", 676 | " [5.17917840e-07, 9.99999523e-01],\n", 677 | " [1.00000000e+00, 5.01060491e-08],\n", 678 | " [8.88756858e-06, 9.99991059e-01],\n", 679 | " [2.69970536e-01, 7.30029464e-01],\n", 680 | " [5.56286541e-04, 9.99443710e-01],\n", 681 | " [1.00000000e+00, 4.00299016e-10],\n", 682 | " [1.00000000e+00, 3.00082768e-08],\n", 683 | " [9.99999881e-01, 1.21968000e-07],\n", 684 | " [6.63487494e-01, 3.36512536e-01],\n", 685 | " [9.34316039e-01, 6.56840056e-02],\n", 686 | " [9.36600626e-01, 6.33994341e-02],\n", 687 | " [9.99891520e-01, 1.08505708e-04],\n", 688 | " [1.26619965e-01, 8.73380065e-01],\n", 689 | " [7.03380443e-03, 9.92966175e-01],\n", 690 | " [2.86356717e-05, 9.99971390e-01],\n", 691 | " [7.74748921e-01, 2.25251094e-01],\n", 692 | " [6.14274584e-04, 9.99385715e-01],\n", 693 | " [1.36532653e-05, 9.99986291e-01],\n", 694 | " [9.13227677e-01, 8.67723003e-02],\n", 695 | " [8.84272624e-03, 9.91157293e-01],\n", 696 | " [9.55431581e-01, 4.45683785e-02],\n", 697 | " [7.32982066e-04, 9.99267042e-01],\n", 698 | " [1.69238493e-01, 8.30761492e-01],\n", 699 | " [8.79989803e-01, 1.20010212e-01],\n", 700 | " [9.99999762e-01, 2.11871068e-07],\n", 701 | " [1.00000000e+00, 2.30217165e-11],\n", 702 | " [9.18692529e-01, 8.13074932e-02],\n", 703 | " [8.80977154e-01, 1.19022824e-01],\n", 704 | " [1.00000000e+00, 1.14745373e-10],\n", 705 | " [2.14514613e-01, 7.85485446e-01],\n", 706 | " [7.56156921e-01, 2.43843079e-01],\n", 707 | " [9.66590405e-01, 3.34095880e-02],\n", 708 | " [6.47373497e-01, 3.52626443e-01],\n", 709 | " [9.96395409e-01, 3.60457040e-03],\n", 710 | " [9.14106011e-01, 8.58939737e-02],\n", 711 | " [9.16808307e-01, 8.31916705e-02],\n", 712 | " [9.38398719e-01, 6.16013035e-02],\n", 713 | " [4.07205516e-04, 9.99592841e-01],\n", 714 | " [9.46162462e-01, 5.38375713e-02],\n", 715 | " [1.31923123e-03, 9.98680770e-01],\n", 716 | " [9.52331603e-01, 4.76683713e-02],\n", 717 | " [2.21908813e-05, 9.99977827e-01],\n", 718 | " [1.00000000e+00, 1.30825780e-14],\n", 719 | " [1.00000000e+00, 2.16020951e-10],\n", 720 | " [8.72159183e-01, 1.27840862e-01],\n", 721 | " [8.47569704e-01, 1.52430311e-01],\n", 722 | " [9.09379840e-01, 9.06201974e-02],\n", 723 | " [9.43907499e-01, 5.60924374e-02],\n", 724 | " [5.34471683e-02, 9.46552873e-01],\n", 725 | " [1.31643876e-01, 8.68356109e-01],\n", 726 | " [3.39597091e-06, 9.99996662e-01],\n", 727 | " [3.71313916e-04, 9.99628663e-01],\n", 728 | " [2.85309970e-01, 7.14689970e-01],\n", 729 | " [3.76513781e-05, 9.99962330e-01],\n", 730 | " [7.59656191e-01, 2.40343794e-01],\n", 731 | " [1.49495915e-01, 8.50504160e-01],\n", 732 | " [2.08162978e-01, 7.91837037e-01],\n", 733 | " [8.61448720e-02, 9.13855135e-01],\n", 734 | " [9.09586906e-01, 9.04130936e-02],\n", 735 | " [1.71284616e-01, 8.28715444e-01],\n", 736 | " [6.97678246e-04, 9.99302268e-01],\n", 737 | " [7.36443639e-01, 2.63556361e-01],\n", 738 | " [9.99994874e-01, 5.08381436e-06],\n", 739 | " [9.99995828e-01, 4.17978208e-06],\n", 740 | " [1.60264164e-01, 8.39735866e-01],\n", 741 | " [9.36790764e-01, 6.32092059e-02],\n", 742 | " [2.73407727e-01, 7.26592243e-01],\n", 743 | " [8.74279201e-01, 1.25720859e-01],\n", 744 | " [2.04252198e-01, 7.95747817e-01],\n", 745 | " [9.74132776e-01, 2.58671995e-02],\n", 746 | " [1.71376243e-01, 8.28623772e-01],\n", 747 | " [1.43989384e-01, 8.56010675e-01],\n", 748 | " [9.99999881e-01, 1.55079618e-07],\n", 749 | " [1.65808007e-01, 8.34192038e-01],\n", 750 | " [1.25677720e-01, 8.74322295e-01],\n", 751 | " [8.99645925e-01, 1.00354031e-01],\n", 752 | " [1.00000000e+00, 3.52108342e-10],\n", 753 | " [7.38604227e-04, 9.99261439e-01],\n", 754 | " [9.92180705e-01, 7.81933218e-03],\n", 755 | " [8.34785640e-01, 1.65214345e-01],\n", 756 | " [9.41073418e-01, 5.89265861e-02],\n", 757 | " [9.90084291e-01, 9.91566759e-03],\n", 758 | " [1.74589112e-01, 8.25410962e-01],\n", 759 | " [9.94754195e-01, 5.24575915e-03],\n", 760 | " [5.30556321e-01, 4.69443709e-01],\n", 761 | " [8.42182815e-01, 1.57817215e-01],\n", 762 | " [8.31935585e-01, 1.68064430e-01],\n", 763 | " [9.51957345e-01, 4.80426401e-02],\n", 764 | " [5.05510727e-08, 1.00000000e+00],\n", 765 | " [1.00121259e-04, 9.99899864e-01],\n", 766 | " [2.39628367e-03, 9.97603714e-01],\n", 767 | " [1.71284616e-01, 8.28715444e-01],\n", 768 | " [9.36790764e-01, 6.32092059e-02],\n", 769 | " [2.44515851e-01, 7.55484164e-01],\n", 770 | " [7.54532754e-01, 2.45467275e-01],\n", 771 | " [7.91186154e-01, 2.08813816e-01],\n", 772 | " [4.24072132e-05, 9.99957561e-01],\n", 773 | " [1.20235386e-03, 9.98797655e-01],\n", 774 | " [1.07137099e-01, 8.92862856e-01],\n", 775 | " [9.99988437e-01, 1.15772400e-05],\n", 776 | " [9.32825208e-01, 6.71747774e-02],\n", 777 | " [9.35358286e-01, 6.46417812e-02],\n", 778 | " [9.24001575e-01, 7.59984627e-02],\n", 779 | " [9.47844326e-01, 5.21556251e-02],\n", 780 | " [1.36363208e-12, 1.00000000e+00],\n", 781 | " [2.23325486e-07, 9.99999762e-01],\n", 782 | " [7.81031395e-06, 9.99992132e-01],\n", 783 | " [1.74097627e-01, 8.25902402e-01],\n", 784 | " [1.18625851e-03, 9.98813748e-01],\n", 785 | " [1.94631735e-04, 9.99805391e-01],\n", 786 | " [8.09906602e-01, 1.90093428e-01],\n", 787 | " [8.50985587e-01, 1.49014384e-01],\n", 788 | " [9.99899387e-01, 1.00584992e-04],\n", 789 | " [8.21366787e-01, 1.78633213e-01],\n", 790 | " [1.42644765e-02, 9.85735476e-01],\n", 791 | " [1.33095583e-07, 9.99999881e-01],\n", 792 | " [1.74305350e-01, 8.25694740e-01],\n", 793 | " [6.21503532e-01, 3.78496379e-01],\n", 794 | " [9.99951601e-01, 4.84345655e-05],\n", 795 | " [9.11360860e-01, 8.86391550e-02],\n", 796 | " [1.90611824e-01, 8.09388161e-01],\n", 797 | " [2.31202096e-01, 7.68797934e-01],\n", 798 | " [8.90160322e-01, 1.09839723e-01],\n", 799 | " [9.37067688e-01, 6.29323572e-02],\n", 800 | " [2.60908335e-01, 7.39091635e-01],\n", 801 | " [8.59778702e-01, 1.40221283e-01],\n", 802 | " [8.59778702e-01, 1.40221283e-01],\n", 803 | " [3.50830938e-08, 1.00000000e+00],\n", 804 | " [9.36553776e-01, 6.34462237e-02],\n", 805 | " [9.53717589e-01, 4.62823622e-02],\n", 806 | " [8.01161776e-11, 1.00000000e+00],\n", 807 | " [9.86434698e-01, 1.35653317e-02],\n", 808 | " [9.81017947e-01, 1.89820696e-02],\n", 809 | " [9.93108511e-01, 6.89145084e-03],\n", 810 | " [2.33168736e-01, 7.66831219e-01],\n", 811 | " [8.62063885e-01, 1.37936145e-01],\n", 812 | " [9.01352882e-01, 9.86470878e-02],\n", 813 | " [7.39938617e-01, 2.60061294e-01],\n", 814 | " [9.19232011e-01, 8.07679892e-02],\n", 815 | " [8.72496884e-08, 9.99999881e-01],\n", 816 | " [3.30992401e-01, 6.69007540e-01],\n", 817 | " [4.91868705e-01, 5.08131266e-01],\n", 818 | " [9.99992847e-01, 7.13251393e-06],\n", 819 | " [1.41568109e-01, 8.58431876e-01],\n", 820 | " [8.31749201e-01, 1.68250829e-01],\n", 821 | " [9.87377107e-01, 1.26228491e-02],\n", 822 | " [5.45529311e-08, 1.00000000e+00],\n", 823 | " [2.06853159e-07, 9.99999762e-01],\n", 824 | " [9.99995112e-01, 4.86372619e-06],\n", 825 | " [2.75831446e-02, 9.72416818e-01],\n", 826 | " [1.52037348e-04, 9.99847889e-01],\n", 827 | " [1.40129566e-01, 8.59870493e-01],\n", 828 | " [3.11273098e-01, 6.88726902e-01],\n", 829 | " [8.92705023e-01, 1.07294954e-01],\n", 830 | " [5.68282127e-01, 4.31717932e-01],\n", 831 | " [1.35730729e-01, 8.64269316e-01],\n", 832 | " [9.33038354e-01, 6.69616386e-02],\n", 833 | " [9.25598741e-01, 7.44012892e-02],\n", 834 | " [1.73813909e-01, 8.26186061e-01],\n", 835 | " [8.74867201e-01, 1.25132769e-01],\n", 836 | " [8.04417610e-01, 1.95582375e-01],\n", 837 | " [1.71284556e-01, 8.28715444e-01],\n", 838 | " [8.43911886e-01, 1.56088129e-01],\n", 839 | " [2.05281414e-02, 9.79471803e-01],\n", 840 | " [8.77863705e-01, 1.22136347e-01],\n", 841 | " [2.28381887e-01, 7.71618128e-01],\n", 842 | " [6.93938091e-07, 9.99999285e-01],\n", 843 | " [1.17268376e-01, 8.82731616e-01],\n", 844 | " [1.43600404e-01, 8.56399655e-01],\n", 845 | " [9.88984466e-01, 1.10155325e-02],\n", 846 | " [1.00000000e+00, 7.92314714e-10],\n", 847 | " [9.36790764e-01, 6.32092431e-02],\n", 848 | " [1.22792069e-02, 9.87720788e-01],\n", 849 | " [8.63676429e-01, 1.36323571e-01],\n", 850 | " [2.25643488e-03, 9.97743607e-01],\n", 851 | " [8.97667825e-01, 1.02332182e-01],\n", 852 | " [1.41593307e-01, 8.58406663e-01],\n", 853 | " [2.90168705e-03, 9.97098327e-01],\n", 854 | " [7.39795446e-01, 2.60204464e-01],\n", 855 | " [1.91238545e-08, 1.00000000e+00],\n", 856 | " [1.41568109e-01, 8.58431876e-01],\n", 857 | " [1.89582065e-01, 8.10417950e-01],\n", 858 | " [3.93285811e-01, 6.06714129e-01],\n", 859 | " [9.55958009e-01, 4.40419391e-02],\n", 860 | " [7.13050842e-01, 2.86949158e-01],\n", 861 | " [7.34080374e-01, 2.65919596e-01],\n", 862 | " [1.26480415e-01, 8.73519540e-01],\n", 863 | " [1.69507638e-01, 8.30492377e-01],\n", 864 | " [1.56560197e-01, 8.43439758e-01],\n", 865 | " [1.25036850e-05, 9.99987483e-01],\n", 866 | " [2.00748746e-03, 9.97992516e-01],\n", 867 | " [2.74758339e-02, 9.72524107e-01],\n", 868 | " [9.37067688e-01, 6.29323572e-02],\n", 869 | " [9.15173352e-01, 8.48266110e-02],\n", 870 | " [9.25598741e-01, 7.44012892e-02],\n", 871 | " [6.54797614e-01, 3.45202386e-01],\n", 872 | " [7.29332896e-05, 9.99927044e-01],\n", 873 | " [8.99819076e-01, 1.00180909e-01],\n", 874 | " [3.48577206e-03, 9.96514261e-01],\n", 875 | " [3.22226524e-01, 6.77773416e-01],\n", 876 | " [7.99715417e-06, 9.99992013e-01],\n", 877 | " [3.79240811e-01, 6.20759130e-01],\n", 878 | " [9.09140170e-01, 9.08598304e-02],\n", 879 | " [1.06165580e-01, 8.93834412e-01],\n", 880 | " [8.40836883e-01, 1.59163088e-01],\n", 881 | " [9.89776850e-02, 9.01022375e-01],\n", 882 | " [5.25425225e-02, 9.47457552e-01],\n", 883 | " [9.24801290e-01, 7.51987174e-02],\n", 884 | " [9.36790764e-01, 6.32092059e-02],\n", 885 | " [6.21804595e-01, 3.78195375e-01],\n", 886 | " [8.52901697e-01, 1.47098318e-01],\n", 887 | " [9.25598741e-01, 7.44012892e-02],\n", 888 | " [9.99989510e-01, 1.04551364e-05],\n", 889 | " [8.41192901e-01, 1.58807129e-01],\n", 890 | " [2.30323712e-04, 9.99769628e-01],\n", 891 | " [1.56590834e-01, 8.43409181e-01],\n", 892 | " [1.00000000e+00, 1.39406409e-09],\n", 893 | " [1.20195061e-01, 8.79804909e-01],\n", 894 | " [5.37021132e-03, 9.94629741e-01],\n", 895 | " [1.69202313e-01, 8.30797672e-01],\n", 896 | " [8.75004292e-01, 1.24995761e-01],\n", 897 | " [9.76945921e-06, 9.99990225e-01],\n", 898 | " [8.27317357e-01, 1.72682658e-01],\n", 899 | " [8.48093629e-01, 1.51906416e-01],\n", 900 | " [1.18448310e-01, 8.81551743e-01],\n", 901 | " [2.60160392e-04, 9.99739826e-01],\n", 902 | " [1.23865582e-01, 8.76134455e-01],\n", 903 | " [1.00000000e+00, 5.15396950e-14],\n", 904 | " [8.42468679e-01, 1.57531351e-01],\n", 905 | " [6.21478597e-04, 9.99378443e-01],\n", 906 | " [2.74535120e-01, 7.25464880e-01],\n", 907 | " [1.61259174e-02, 9.83874083e-01],\n", 908 | " [9.03143406e-01, 9.68565866e-02],\n", 909 | " [3.70898512e-08, 1.00000000e+00],\n", 910 | " [1.51780378e-05, 9.99984860e-01],\n", 911 | " [9.08165995e-04, 9.99091864e-01],\n", 912 | " [8.87050390e-01, 1.12949692e-01],\n", 913 | " [8.90101373e-01, 1.09898664e-01],\n", 914 | " [1.93728685e-01, 8.06271255e-01],\n", 915 | " [6.35244787e-01, 3.64755183e-01],\n", 916 | " [6.14356054e-07, 9.99999404e-01],\n", 917 | " [2.46549726e-01, 7.53450334e-01],\n", 918 | " [1.97427675e-01, 8.02572310e-01],\n", 919 | " [9.99697685e-01, 3.02287255e-04],\n", 920 | " [8.43857884e-01, 1.56142160e-01],\n", 921 | " [1.27648652e-01, 8.72351348e-01],\n", 922 | " [7.77191341e-01, 2.22808704e-01],\n", 923 | " [8.07536900e-01, 1.92463160e-01],\n", 924 | " [2.21615977e-04, 9.99778450e-01],\n", 925 | " [1.39313594e-01, 8.60686481e-01],\n", 926 | " [9.99995232e-01, 4.82098721e-06],\n", 927 | " [8.37600827e-01, 1.62399158e-01],\n", 928 | " [5.86213637e-03, 9.94137883e-01],\n", 929 | " [7.70920336e-01, 2.29079649e-01],\n", 930 | " [9.34634686e-01, 6.53652847e-02],\n", 931 | " [3.47001645e-08, 1.00000000e+00],\n", 932 | " [9.19890046e-01, 8.01099241e-02],\n", 933 | " [8.85693431e-01, 1.14306547e-01],\n", 934 | " [3.72759392e-03, 9.96272445e-01],\n", 935 | " [1.06953248e-05, 9.99989271e-01],\n", 936 | " [1.00000000e+00, 4.75204372e-15],\n", 937 | " [2.86030968e-06, 9.99997139e-01],\n", 938 | " [1.72597423e-01, 8.27402651e-01],\n", 939 | " [1.67688251e-01, 8.32311809e-01],\n", 940 | " [2.70823104e-04, 9.99729216e-01],\n", 941 | " [1.69416800e-01, 8.30583274e-01],\n", 942 | " [7.86765695e-01, 2.13234290e-01],\n", 943 | " [7.28446603e-01, 2.71553367e-01],\n", 944 | " [9.99983430e-01, 1.65945585e-05],\n", 945 | " [1.00000000e+00, 7.07102300e-15],\n", 946 | " [8.45604122e-01, 1.54395953e-01],\n", 947 | " [8.77681732e-01, 1.22318231e-01],\n", 948 | " [1.57402456e-03, 9.98425961e-01],\n", 949 | " [1.86600886e-08, 1.00000000e+00],\n", 950 | " [8.74941409e-01, 1.25058666e-01],\n", 951 | " [9.36657906e-01, 6.33420795e-02],\n", 952 | " [9.26619351e-01, 7.33806342e-02],\n", 953 | " [1.93879619e-01, 8.06120396e-01],\n", 954 | " [3.93285811e-01, 6.06714129e-01],\n", 955 | " [1.22016273e-01, 8.77983689e-01],\n", 956 | " [1.11964196e-01, 8.88035834e-01],\n", 957 | " [7.09489048e-01, 2.90510952e-01],\n", 958 | " [1.16130851e-01, 8.83869112e-01],\n", 959 | " [1.00000000e+00, 7.22684987e-13],\n", 960 | " [8.42460811e-01, 1.57539144e-01],\n", 961 | " [6.22172887e-03, 9.93778348e-01],\n", 962 | " [9.06338274e-01, 9.36618000e-02],\n", 963 | " [9.18777645e-01, 8.12222958e-02],\n", 964 | " [1.18067406e-01, 8.81932676e-01],\n", 965 | " [1.00000000e+00, 2.22446700e-10],\n", 966 | " [2.85309970e-01, 7.14689970e-01],\n", 967 | " [1.76587150e-01, 8.23412895e-01]], dtype=float32)" 968 | ] 969 | }, 970 | "execution_count": 6, 971 | "metadata": {}, 972 | "output_type": "execute_result" 973 | } 974 | ], 975 | "source": [ 976 | "# We can predict the probability of each class using the 'predict' method\n", 977 | "# The output comes in a scientific format\n", 978 | "# Please uncomment the round() method to achive a rounded result (not scientific notation)\n", 979 | "model.predict(test_inputs)#.round(2)" 980 | ] 981 | }, 982 | { 983 | "cell_type": "code", 984 | "execution_count": 7, 985 | "metadata": {}, 986 | "outputs": [ 987 | { 988 | "data": { 989 | "text/plain": [ 990 | "array([0., 0., 1., 1., 0., 1., 1., 0., 0., 0., 1., 1., 1., 0., 0., 0., 1.,\n", 991 | " 0., 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 0., 1., 1., 1., 1.,\n", 992 | " 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0., 0., 0.,\n", 993 | " 0., 0., 1., 0., 0., 0., 0., 1., 1., 0., 0., 1., 1., 0., 0., 0., 1.,\n", 994 | " 1., 0., 0., 1., 1., 1., 0., 0., 0., 0., 1., 1., 1., 1., 0., 1., 0.,\n", 995 | " 1., 1., 0., 0., 0., 0., 1., 1., 0., 1., 0., 1., 1., 0., 1., 1., 1.,\n", 996 | " 0., 1., 1., 0., 0., 1., 1., 1., 1., 0., 1., 0., 0., 0., 1., 0., 0.,\n", 997 | " 0., 1., 0., 1., 0., 1., 0., 1., 0., 0., 0., 0., 0., 1., 0., 1., 0.,\n", 998 | " 0., 1., 1., 1., 0., 0., 1., 1., 0., 0., 1., 1., 0., 0., 0., 0., 1.,\n", 999 | " 0., 0., 0., 1., 0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 1., 1.,\n", 1000 | " 1., 0., 1., 1., 0., 1., 0., 1., 1., 0., 0., 0., 0., 0., 0., 1., 0.,\n", 1001 | " 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 1., 0., 0., 0., 0., 0., 0.,\n", 1002 | " 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1., 0., 0., 0., 1.,\n", 1003 | " 0., 1., 0., 1., 0., 1., 1., 0., 1., 1., 0., 0., 1., 0., 0., 0., 0.,\n", 1004 | " 1., 0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 1., 0., 0., 1., 1., 1.,\n", 1005 | " 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 1., 1.,\n", 1006 | " 1., 0., 0., 0., 1., 1., 0., 0., 1., 0., 0., 1., 0., 0., 1., 0., 0.,\n", 1007 | " 0., 1., 0., 0., 0., 0., 1., 1., 1., 0., 1., 0., 0., 1., 1., 0., 1.,\n", 1008 | " 1., 1., 1., 0., 0., 1., 0., 0., 1., 0., 0., 1., 0., 1., 0., 1., 1.,\n", 1009 | " 1., 1., 0., 0., 0., 1., 0., 1., 0., 1., 1., 0., 1., 1., 1., 1., 0.,\n", 1010 | " 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 1., 0., 1., 1., 1.,\n", 1011 | " 1., 0., 1., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 1.,\n", 1012 | " 1., 1., 0., 1., 0., 0., 1., 1., 1., 0., 0., 1., 1., 1., 0., 1., 1.,\n", 1013 | " 1., 0., 0., 1., 0., 1., 1., 1., 0., 0., 1., 0., 0., 1., 1., 0., 0.,\n", 1014 | " 1., 0., 0., 1., 0., 0., 1., 1., 0., 1., 1., 1., 1., 1., 0., 0., 0.,\n", 1015 | " 0., 0., 0., 1., 1., 0., 0., 0., 1., 1., 1., 1., 0., 1., 0., 0., 1.,\n", 1016 | " 0., 0., 1., 0., 1., 1.], dtype=float32)" 1017 | ] 1018 | }, 1019 | "execution_count": 7, 1020 | "metadata": {}, 1021 | "output_type": "execute_result" 1022 | } 1023 | ], 1024 | "source": [ 1025 | "# Alternatively, we can get only the second column\n", 1026 | "# The main idea is that we are often interested in ONLY ONE of the two outcomes\n", 1027 | "# In this case we would like to know if the customer will convert again\n", 1028 | "# Once more, we can round to 0 digits, to achieve only 0s or 1s\n", 1029 | "model.predict(test_inputs)[:,1].round(0)" 1030 | ] 1031 | }, 1032 | { 1033 | "cell_type": "code", 1034 | "execution_count": 8, 1035 | "metadata": {}, 1036 | "outputs": [ 1037 | { 1038 | "data": { 1039 | "text/plain": [ 1040 | "array([0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1,\n", 1041 | " 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", 1042 | " 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,\n", 1043 | " 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0,\n", 1044 | " 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1,\n", 1045 | " 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,\n", 1046 | " 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0,\n", 1047 | " 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1,\n", 1048 | " 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,\n", 1049 | " 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0,\n", 1050 | " 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,\n", 1051 | " 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n", 1052 | " 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0,\n", 1053 | " 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1,\n", 1054 | " 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0,\n", 1055 | " 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,\n", 1056 | " 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1,\n", 1057 | " 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0,\n", 1058 | " 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1,\n", 1059 | " 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0,\n", 1060 | " 0, 1, 0, 0, 1, 0, 1, 1], dtype=int64)" 1061 | ] 1062 | }, 1063 | "execution_count": 8, 1064 | "metadata": {}, 1065 | "output_type": "execute_result" 1066 | } 1067 | ], 1068 | "source": [ 1069 | "# A much better approach here would be to use argmax (arguments of the maxima)\n", 1070 | "# Argmax indicates the position of the highest argument row-wise or column-wise\n", 1071 | "# In our case, we want ot know which COLUMN has the higher argument (probability), therefore we set axis=1 (for columns)\n", 1072 | "# The output would be the column ID with the highest argument for each observation (row)\n", 1073 | "# For instance, the first observation (in our output) was [0.93,0.07]\n", 1074 | "# np.argmax([0.93,0.07], axis=1) would find that 0.91 is the higher argument (higher probability) and return 0\n", 1075 | "# This method is great for multi-class problems as it is independent of the number of classes\n", 1076 | "np.argmax(model.predict(test_inputs),axis=1)" 1077 | ] 1078 | }, 1079 | { 1080 | "cell_type": "markdown", 1081 | "metadata": {}, 1082 | "source": [ 1083 | "## Save the model" 1084 | ] 1085 | }, 1086 | { 1087 | "cell_type": "code", 1088 | "execution_count": 9, 1089 | "metadata": {}, 1090 | "outputs": [], 1091 | "source": [ 1092 | "# Finally we save the model using the built-in method TensorFlow method\n", 1093 | "# We choose the name and the file extension\n", 1094 | "# Since the HDF format is optimal for large numerical objects, that's our preferred choice here (and the one recommended by TF)\n", 1095 | "# The proper extension is .h5 to indicate HDF, version 5\n", 1096 | "model.save('audiobooks_model.h5') " 1097 | ] 1098 | }, 1099 | { 1100 | "cell_type": "markdown", 1101 | "metadata": {}, 1102 | "source": [ 1103 | "# Predicting on new data" 1104 | ] 1105 | }, 1106 | { 1107 | "cell_type": "markdown", 1108 | "metadata": {}, 1109 | "source": [ 1110 | "## Import the relevant libraries" 1111 | ] 1112 | }, 1113 | { 1114 | "cell_type": "code", 1115 | "execution_count": 1, 1116 | "metadata": {}, 1117 | "outputs": [], 1118 | "source": [ 1119 | "# As usual we are starting a new notebook and we need to import all relevant packages\n", 1120 | "import numpy as np\n", 1121 | "import tensorflow as tf\n", 1122 | "import pickle" 1123 | ] 1124 | }, 1125 | { 1126 | "cell_type": "markdown", 1127 | "metadata": {}, 1128 | "source": [ 1129 | "## Load the scaler and the model" 1130 | ] 1131 | }, 1132 | { 1133 | "cell_type": "code", 1134 | "execution_count": 2, 1135 | "metadata": { 1136 | "scrolled": true 1137 | }, 1138 | "outputs": [ 1139 | { 1140 | "name": "stdout", 1141 | "output_type": "stream", 1142 | "text": [ 1143 | "WARNING:tensorflow:Sequential models without an `input_shape` passed to the first layer cannot reload their optimizer state. As a result, your model isstarting with a freshly initialized optimizer.\n" 1144 | ] 1145 | } 1146 | ], 1147 | "source": [ 1148 | "# To load the scaler we use the pickle method load\n", 1149 | "scaler_deep_learning = pickle.load(open('scaler_deep_learning.pickle', 'rb'))\n", 1150 | "# To load the model, we use the TensorFlow (Keras) function relevant for the operation\n", 1151 | "model = tf.keras.models.load_model('audiobooks_model.h5')\n", 1152 | "\n", 1153 | "# Note that since we did not specify the input shape of our inputs in the modeling part, we get a warning\n", 1154 | "# For feed-forward neural networks such as ours that is not an issue" 1155 | ] 1156 | }, 1157 | { 1158 | "cell_type": "markdown", 1159 | "metadata": {}, 1160 | "source": [ 1161 | "## Load the new data" 1162 | ] 1163 | }, 1164 | { 1165 | "cell_type": "code", 1166 | "execution_count": 3, 1167 | "metadata": {}, 1168 | "outputs": [], 1169 | "source": [ 1170 | "# The new data is located in 'New_Audiobooks_Data.csv'\n", 1171 | "# To keep everything as before, we must specify the delimiter explicitly\n", 1172 | "raw_data = np.loadtxt('New_Audiobooks_Data.csv',delimiter=',')\n", 1173 | "# We are interested in all data except for the first column (ID)\n", 1174 | "# Note that there are no targets in this CSV file (we don't know the behavior of these clients, yet!)\n", 1175 | "new_data_inputs = raw_data[:,1:]" 1176 | ] 1177 | }, 1178 | { 1179 | "cell_type": "markdown", 1180 | "metadata": {}, 1181 | "source": [ 1182 | "## Predict the probability of a customer to convert" 1183 | ] 1184 | }, 1185 | { 1186 | "cell_type": "code", 1187 | "execution_count": 4, 1188 | "metadata": {}, 1189 | "outputs": [], 1190 | "source": [ 1191 | "# Scale the new data in the same way we scaled the train data\n", 1192 | "new_data_inputs_scaled = scaler_deep_learning.transform(new_data_inputs)" 1193 | ] 1194 | }, 1195 | { 1196 | "cell_type": "code", 1197 | "execution_count": 5, 1198 | "metadata": {}, 1199 | "outputs": [ 1200 | { 1201 | "data": { 1202 | "text/plain": [ 1203 | "array([0.02, 0. , 0.09, 1. , 0. , 0.07, 0.06, 0.07, 0.05, 0.78, 0. ,\n", 1204 | " 0.82, 0.99, 0. , 0.12, 0.17, 0.89, 0.73, 0.87, 0.97, 1. , 1. ,\n", 1205 | " 1. , 0. , 0. , 0.99, 0.41, 0. , 1. , 1. ], dtype=float32)" 1206 | ] 1207 | }, 1208 | "execution_count": 5, 1209 | "metadata": {}, 1210 | "output_type": "execute_result" 1211 | } 1212 | ], 1213 | "source": [ 1214 | "# Predict the probability of each customer to convert\n", 1215 | "# Here we have also taken only the second column and rounded to 2 digits after the dot\n", 1216 | "model.predict(new_data_inputs_scaled)[:,1].round(2)" 1217 | ] 1218 | }, 1219 | { 1220 | "cell_type": "code", 1221 | "execution_count": 6, 1222 | "metadata": {}, 1223 | "outputs": [ 1224 | { 1225 | "data": { 1226 | "text/plain": [ 1227 | "array([0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n", 1228 | " 1, 0, 0, 1, 0, 0, 1, 1], dtype=int64)" 1229 | ] 1230 | }, 1231 | "execution_count": 6, 1232 | "metadata": {}, 1233 | "output_type": "execute_result" 1234 | } 1235 | ], 1236 | "source": [ 1237 | "# Implement the better approach which is independent of the number of classes\n", 1238 | "np.argmax(model.predict(new_data_inputs_scaled),1)" 1239 | ] 1240 | } 1241 | ], 1242 | "metadata": { 1243 | "kernelspec": { 1244 | "display_name": "Python 3", 1245 | "language": "python", 1246 | "name": "python3" 1247 | }, 1248 | "language_info": { 1249 | "codemirror_mode": { 1250 | "name": "ipython", 1251 | "version": 3 1252 | }, 1253 | "file_extension": ".py", 1254 | "mimetype": "text/x-python", 1255 | "name": "python", 1256 | "nbconvert_exporter": "python", 1257 | "pygments_lexer": "ipython3", 1258 | "version": "3.7.4" 1259 | } 1260 | }, 1261 | "nbformat": 4, 1262 | "nbformat_minor": 2 1263 | } 1264 | -------------------------------------------------------------------------------- /New_Audiobooks_Data.csv: -------------------------------------------------------------------------------- 1 | 1,1188,1188,5.33,5.33,0,8.91,0.12,0,0,39 2 | 2,648,648,5.33,5.33,0,8.91,0.48,0,0,91 3 | 3,2160,2160,7.69,7.69,0,8.91,0,680.4,0,0 4 | 4,1674,3348,8,16,1,10,0,0,0,27 5 | 5,2160,2160,5.66,5.66,0,8.91,0.12,734.4,0,198 6 | 6,2160,2160,6.58,6.58,0,8.91,0,734.4,0,0 7 | 7,2160,2160,5.33,5.33,0,8.91,0,680.4,0,0 8 | 8,2160,2160,7.93,7.93,0,8.91,0.03,680.4,0,152 9 | 9,2160,2160,4.09,4.09,0,8.91,0,680.4,0,0 10 | 10,2160,2160,5.61,5.61,0,8.91,0,0,0,21 11 | 11,2160,2160,10.13,10.13,1,10,0.34,1166.4,0,15 12 | 12,1620,1620,5.33,5.33,0,8.91,0,0,0,1 13 | 13,1620,1620,5.33,5.33,1,6,0,0,0,8 14 | 14,1620,1620,5.33,5.33,0,8.91,0.29,1188,0,27 15 | 15,648,648,5.33,5.33,0,8.91,0,696.6,0,0 16 | 16,1188,1188,7.68,7.68,0,8.91,0,696.6,0,0 17 | 17,1188,1188,8.48,8.48,0,8.91,0,0,0,32 18 | 18,2160,2160,5.33,5.33,0,8.91,0,0,0,4 19 | 19,1188,1188,5.69,5.69,0,8.91,0,0,0,30 20 | 20,1620,1620,5.61,5.61,0,10,0,0,0,2 21 | 21,1242,2484,16.8,33.59,1,10,0,680.4,0,0 22 | 22,756,1512,5.33,10.67,0,8.91,0,0,0,0 23 | 23,1188,1188,104,104,0,10,0,0,0,0 24 | 24,1620,1620,8,8,0,1,0.35,0,0,12 25 | 25,1188,1188,5.33,5.33,0,8.91,0.18,142.56,0,4 26 | 26,1188,1188,5.33,5.33,0,3,0,64.8,0,321 27 | 27,2160,2160,5.33,5.33,0,8.91,0.02,0,0,0 28 | 28,1620,1620,24.16,24.16,1,10,0.4,0,0,0 29 | 29,1134,2268,10.13,20.27,1,10,0,0,0,102 30 | 30,1476,4428,6.93,20.8,0,9,0,172.8,0,282 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Customer-Analytics-in-Python 2 | I use various Data Science and machine learning techniques to analyze customer data using STP framework. 3 | 4 | Segmentation.ipynb : I perform correlation estimates, standardise the data, use segmentation, hierarchical clustering, k-means, PCA techniques with a lot of visualizations such as heatmaps, clusters, dendrograms, scatter plots to segment and understand customer data. 5 | 6 | Purchase Analytics Descriptive Analysis.ipynb : In this notebook, I have used the segmentation model to divide customers into segments and gain insights about their shopping habits. I have done exploratory data analysis. I have answered questions like how often people go shopping, how much money do they spend, how often do they buy a product relative to their store visits. I created dummy variables for the required features. I have answered questions like which brand is preferred by each segment, what are the reasons for their selection. I have also come up with ideas to improve the sales of a brand. I also analyzed different segments based on revenue. 7 | 8 | Purchase Analytics Predictive Analysis.ipynb : I have caluclated price elasticity of purchase probability and quantity, purchase probability by segments, purchase probability with and without promotion, price elasticity with and without promotion, own and cross price elasticities by segment and analyzed brand choice by customers and customers segments. 9 | 10 | Deep Learning.ipynb : The deep learning model predicts if a customer is going to make a purchase again from the audiobook company. I balanced the dataset, preprocessed the data, outlined the model, trained and tested it. 11 | 12 | The file segmentation data.csv is the dataset used to build the segmentation model (Customer Analytics Segmentation.ipynb). 13 | 14 | The file segmentation data legend.xlsx contains the legend of what each column means in the segmentation data.csv file. 15 | 16 | The file purchase data.csv is the dataset used for descriptive analysis of Purchase Analytics (Purchase Analytics Descriptive Analysis.ipynb). It contains purchase data of 500 individuals at a grocery store on a dialy basis for 2 years. For simplification, I focused only on the purchase of chocolate candy bars. 17 | 18 | The file purchase data legend.xlsx contains the legend of what each column means in the purchase data.csv file. 19 | 20 | The file Audiobooks_data.csv doesn't contain any column headers as we don't want any text in training the model. So, to understand the dataset, column names have been provided in the column_names_audiobooks.txt file. The data represents two years worth of engagement. Another 6 months of data was gathered to see if the user actually made another purchase (to construct the Targets column). 21 | 22 | The file New_Audiobooks_Data.csv is used for prediction using our model. The Predicting on New Data section of Deep Learning.ipynb teaches you how to preprocess entirely new data and predict on them. 23 | -------------------------------------------------------------------------------- /column_names_audiobooks.txt: -------------------------------------------------------------------------------- 1 | Column headers in order from left to right: 2 | ID, 3 | Book length (mins) - Overall, 4 | Book Length (mins) - average, 5 | Overall Price, 6 | Average Price, 7 | Review(Boolean variable indicating if the user has left a review after a purchase), 8 | Review 10/10 (Review on a scale of 10), 9 | Minutes listened, 10 | Completion (what fraction of the audiobook has the user completed), 11 | Support requests, 12 | Last visited minus purchase date, 13 | Targets (output of whether the user made another purchase in the audiobook company). -------------------------------------------------------------------------------- /purchase data legend.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vishnukanduri/Customer-Analytics-in-Python/ea6e172c316f500e05c84a8dc3c983a816769760/purchase data legend.xlsx -------------------------------------------------------------------------------- /segmentation data legend.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vishnukanduri/Customer-Analytics-in-Python/ea6e172c316f500e05c84a8dc3c983a816769760/segmentation data legend.xlsx -------------------------------------------------------------------------------- /segmentation data.csv: -------------------------------------------------------------------------------- 1 | ID,Sex,Marital status,Age,Education,Income,Occupation,Settlement size 2 | 100000001,0,0,67,2,124670,1,2 3 | 100000002,1,1,22,1,150773,1,2 4 | 100000003,0,0,49,1,89210,0,0 5 | 100000004,0,0,45,1,171565,1,1 6 | 100000005,0,0,53,1,149031,1,1 7 | 100000006,0,0,35,1,144848,0,0 8 | 100000007,0,0,53,1,156495,1,1 9 | 100000008,0,0,35,1,193621,2,1 10 | 100000009,0,1,61,2,151591,0,0 11 | 100000010,0,1,28,1,174646,2,0 12 | 100000011,1,1,25,1,108469,1,0 13 | 100000012,1,1,24,1,127596,1,0 14 | 100000013,1,1,22,1,108687,1,2 15 | 100000014,0,0,60,2,89374,0,0 16 | 100000015,1,1,28,1,102899,1,1 17 | 100000016,1,1,32,1,88428,0,0 18 | 100000017,0,0,53,1,125550,1,0 19 | 100000018,0,0,25,0,157434,1,2 20 | 100000019,1,1,44,2,261952,2,2 21 | 100000020,0,0,31,0,144657,1,1 22 | 100000021,0,0,48,1,118777,1,1 23 | 100000022,0,0,44,1,147511,1,1 24 | 100000023,0,0,48,1,89804,0,0 25 | 100000024,0,0,44,1,134918,1,2 26 | 100000025,0,1,26,1,103667,1,2 27 | 100000026,0,0,36,1,71909,0,0 28 | 100000027,0,1,39,1,68264,0,0 29 | 100000028,1,1,42,2,163025,1,1 30 | 100000029,0,0,34,1,119307,1,1 31 | 100000030,0,0,63,2,175882,1,0 32 | 100000031,0,1,36,1,159646,1,1 33 | 100000032,0,0,27,0,120131,1,1 34 | 100000033,0,0,30,0,162745,1,2 35 | 100000034,0,0,57,2,87605,0,0 36 | 100000035,1,1,33,1,155569,2,1 37 | 100000036,0,0,25,0,104505,0,0 38 | 100000037,0,0,31,0,143385,1,2 39 | 100000038,0,0,37,1,127676,1,1 40 | 100000039,0,0,37,1,119276,1,1 41 | 100000040,0,0,24,0,92542,1,1 42 | 100000041,0,0,30,0,163329,2,1 43 | 100000042,0,1,26,1,130921,1,0 44 | 100000043,0,0,44,1,133658,0,0 45 | 100000044,0,1,24,1,155104,1,1 46 | 100000045,1,1,58,2,142335,0,1 47 | 100000046,1,1,35,1,138387,2,1 48 | 100000047,0,0,39,1,140182,1,0 49 | 100000048,1,1,23,1,65421,0,0 50 | 100000049,0,0,39,1,130500,0,0 51 | 100000050,1,1,28,1,122831,1,0 52 | 100000051,0,0,29,0,84531,0,0 53 | 100000052,0,0,30,0,180196,2,2 54 | 100000053,0,0,25,0,92058,1,2 55 | 100000054,0,0,31,0,117158,1,0 56 | 100000055,0,0,57,2,135830,1,1 57 | 100000056,0,0,26,0,58258,0,0 58 | 100000057,0,0,52,1,202575,2,2 59 | 100000058,1,1,31,1,183657,1,1 60 | 100000059,1,1,23,1,152267,2,1 61 | 100000060,1,1,23,1,115240,0,0 62 | 100000061,0,1,27,1,106955,1,2 63 | 100000062,0,0,50,1,123641,1,1 64 | 100000063,0,0,61,2,166410,2,1 65 | 100000064,0,0,25,0,227385,1,2 66 | 100000065,1,1,26,1,118372,1,1 67 | 100000066,0,0,48,1,148115,1,1 68 | 100000067,1,1,29,1,111069,1,0 69 | 100000068,0,1,22,1,139780,1,0 70 | 100000069,0,0,37,1,106978,1,2 71 | 100000070,1,1,25,1,110019,1,2 72 | 100000071,1,1,30,1,169102,1,1 73 | 100000072,0,0,46,1,73703,0,0 74 | 100000073,0,0,51,1,141858,2,2 75 | 100000074,1,1,41,2,135959,0,0 76 | 100000075,0,0,40,1,140888,2,2 77 | 100000076,0,0,66,2,157299,2,2 78 | 100000077,0,0,34,1,125187,1,1 79 | 100000078,0,0,51,1,155486,1,2 80 | 100000079,0,0,39,1,151697,0,0 81 | 100000080,0,1,22,1,126400,1,1 82 | 100000081,1,1,44,2,159246,1,2 83 | 100000082,0,0,47,1,136138,1,1 84 | 100000083,1,1,24,1,84792,0,0 85 | 100000084,1,1,58,2,100210,0,0 86 | 100000085,0,0,52,1,93706,0,0 87 | 100000086,1,1,29,1,133783,2,1 88 | 100000087,1,1,27,1,110064,1,2 89 | 100000088,0,0,47,1,241068,1,1 90 | 100000089,0,0,30,0,149022,2,2 91 | 100000090,0,0,28,0,92973,1,2 92 | 100000091,0,0,56,1,110605,1,1 93 | 100000092,0,0,54,1,116604,1,1 94 | 100000093,1,1,33,1,71070,0,0 95 | 100000094,0,0,20,0,128678,1,1 96 | 100000095,0,0,54,1,165230,1,2 97 | 100000096,0,0,58,2,268340,1,1 98 | 100000097,1,1,61,2,135070,1,1 99 | 100000098,0,0,34,1,134794,1,2 100 | 100000099,0,0,36,1,120153,1,1 101 | 100000100,0,0,36,1,195465,2,2 102 | 100000101,0,1,41,1,93372,0,0 103 | 100000102,0,0,24,0,110446,1,0 104 | 100000103,1,1,24,1,95186,1,1 105 | 100000104,0,0,35,1,115343,1,1 106 | 100000105,0,1,26,1,107276,1,1 107 | 100000106,0,0,39,1,244716,2,2 108 | 100000107,0,0,39,1,183108,2,2 109 | 100000108,0,0,32,0,152876,1,2 110 | 100000109,1,1,30,1,165147,1,0 111 | 100000110,0,1,35,1,140520,1,0 112 | 100000111,0,1,31,1,124203,1,1 113 | 100000112,1,1,23,1,107205,1,1 114 | 100000113,0,0,28,0,121432,0,2 115 | 100000114,1,1,25,1,162445,1,0 116 | 100000115,0,1,35,1,134112,1,1 117 | 100000116,0,0,47,1,131842,1,1 118 | 100000117,1,1,30,1,189896,2,0 119 | 100000118,1,1,27,1,109099,1,2 120 | 100000119,1,1,23,1,153539,1,1 121 | 100000120,0,1,36,1,180495,2,1 122 | 100000121,1,1,25,1,104653,1,2 123 | 100000122,1,1,41,2,166933,2,2 124 | 100000123,0,0,24,0,66118,0,0 125 | 100000124,0,0,63,2,135754,1,0 126 | 100000125,1,1,27,1,116103,1,2 127 | 100000126,0,0,30,0,104293,1,1 128 | 100000127,0,1,40,1,71702,0,0 129 | 100000128,0,0,30,0,99066,1,2 130 | 100000129,0,0,34,1,143979,2,2 131 | 100000130,1,1,29,1,123818,1,0 132 | 100000131,1,1,24,1,176714,1,2 133 | 100000132,0,0,29,0,149249,1,2 134 | 100000133,0,0,27,0,77535,0,0 135 | 100000134,0,0,47,1,116540,1,1 136 | 100000135,1,1,21,1,194728,1,0 137 | 100000136,1,1,38,1,109311,1,2 138 | 100000137,0,0,27,0,204723,1,2 139 | 100000138,0,0,66,2,126003,0,0 140 | 100000139,0,0,35,1,123109,1,1 141 | 100000140,1,1,44,2,108251,0,0 142 | 100000141,0,1,27,1,89908,0,0 143 | 100000142,1,1,30,1,176057,2,1 144 | 100000143,0,0,27,0,144332,2,2 145 | 100000144,0,0,22,0,101185,1,1 146 | 100000145,1,1,23,1,107406,1,2 147 | 100000146,0,0,30,0,140665,1,1 148 | 100000147,1,1,39,2,106461,1,0 149 | 100000148,1,1,51,2,127825,1,0 150 | 100000149,0,0,28,0,133898,1,1 151 | 100000150,0,0,46,1,152383,1,2 152 | 100000151,0,0,42,1,119926,1,0 153 | 100000152,0,0,38,1,108784,1,2 154 | 100000153,0,0,24,0,153286,1,1 155 | 100000154,1,1,29,1,214204,1,2 156 | 100000155,0,0,36,1,208101,2,2 157 | 100000156,1,1,20,1,95355,1,1 158 | 100000157,0,0,48,1,124156,1,1 159 | 100000158,0,1,45,2,72215,0,0 160 | 100000159,0,0,38,1,146529,1,2 161 | 100000160,0,0,34,1,75343,0,0 162 | 100000161,0,0,36,1,129789,1,1 163 | 100000162,1,1,30,1,101153,1,1 164 | 100000163,0,0,36,1,127833,1,2 165 | 100000164,0,0,70,2,224998,2,2 166 | 100000165,0,0,36,1,124445,1,2 167 | 100000166,0,0,32,0,141116,1,1 168 | 100000167,1,1,33,1,104276,1,2 169 | 100000168,1,1,20,1,147687,1,2 170 | 100000169,1,1,25,1,125168,1,1 171 | 100000170,0,1,31,1,115369,1,2 172 | 100000171,0,0,33,1,95445,1,0 173 | 100000172,1,1,26,1,95159,1,1 174 | 100000173,1,1,34,1,153031,2,2 175 | 100000174,0,0,33,1,108899,1,0 176 | 100000175,0,0,26,0,113515,1,1 177 | 100000176,1,1,53,2,211229,2,0 178 | 100000177,0,1,42,2,121307,1,0 179 | 100000178,0,0,52,1,131727,1,2 180 | 100000179,0,0,31,0,133574,2,1 181 | 100000180,0,0,65,2,117334,1,0 182 | 100000181,0,1,28,1,177291,1,2 183 | 100000182,0,1,30,1,168763,2,1 184 | 100000183,0,0,40,1,77720,0,0 185 | 100000184,0,0,50,1,176645,1,2 186 | 100000185,0,0,36,1,106205,1,1 187 | 100000186,0,0,31,0,97785,1,1 188 | 100000187,1,1,74,3,214364,2,1 189 | 100000188,0,0,68,2,74525,0,0 190 | 100000189,0,1,20,1,98988,1,0 191 | 100000190,1,1,33,1,133561,1,1 192 | 100000191,0,0,54,1,217651,2,2 193 | 100000192,0,0,34,1,116525,0,0 194 | 100000193,0,0,36,1,135302,1,2 195 | 100000194,0,1,29,1,106434,1,1 196 | 100000195,0,0,21,0,128350,1,2 197 | 100000196,1,1,34,1,147626,2,2 198 | 100000197,1,1,28,1,102697,1,0 199 | 100000198,1,1,27,1,120262,1,0 200 | 100000199,0,0,36,1,124214,1,2 201 | 100000200,0,1,40,1,175223,2,1 202 | 100000201,0,0,52,1,137467,1,0 203 | 100000202,0,1,27,1,65815,0,0 204 | 100000203,0,0,26,0,129864,1,1 205 | 100000204,0,1,21,1,88475,1,1 206 | 100000205,0,0,38,1,74666,0,0 207 | 100000206,0,0,38,1,222294,2,2 208 | 100000207,0,0,43,1,112878,1,0 209 | 100000208,0,0,26,0,103411,1,2 210 | 100000209,0,1,21,1,112868,0,0 211 | 100000210,0,0,55,1,157940,1,2 212 | 100000211,0,0,33,1,115835,1,2 213 | 100000212,1,1,45,2,109807,0,0 214 | 100000213,0,0,50,1,150699,1,1 215 | 100000214,0,0,66,2,178967,2,0 216 | 100000215,0,0,51,1,132767,1,0 217 | 100000216,1,1,39,2,86152,0,0 218 | 100000217,0,0,31,0,114528,1,2 219 | 100000218,0,0,23,0,133912,1,1 220 | 100000219,0,1,24,1,81210,0,0 221 | 100000220,1,1,64,3,131242,1,0 222 | 100000221,0,1,26,1,68804,0,0 223 | 100000222,1,1,23,1,96961,1,1 224 | 100000223,0,0,30,0,90719,1,2 225 | 100000224,0,0,32,0,114116,1,1 226 | 100000225,0,0,30,0,128639,1,1 227 | 100000226,0,0,27,0,106623,1,1 228 | 100000227,0,0,27,0,236264,1,1 229 | 100000228,0,0,53,1,207783,2,1 230 | 100000229,0,0,22,0,91739,1,1 231 | 100000230,0,0,22,0,107780,1,2 232 | 100000231,0,0,26,0,139157,1,2 233 | 100000232,0,0,51,1,121751,0,0 234 | 100000233,0,0,35,1,121974,1,0 235 | 100000234,0,1,25,1,70320,0,0 236 | 100000235,0,0,42,1,78327,0,0 237 | 100000236,0,0,30,0,131433,2,0 238 | 100000237,0,0,23,0,167076,0,2 239 | 100000238,0,1,61,2,130788,0,0 240 | 100000239,1,1,35,1,107408,1,1 241 | 100000240,0,0,39,1,115323,1,1 242 | 100000241,1,1,29,1,99012,1,0 243 | 100000242,0,0,51,1,115996,1,1 244 | 100000243,0,0,24,0,123353,1,1 245 | 100000244,1,1,27,1,100008,1,0 246 | 100000245,1,1,35,1,125105,0,0 247 | 100000246,0,0,25,0,92020,1,2 248 | 100000247,0,0,52,1,108365,1,2 249 | 100000248,0,0,35,1,112979,1,0 250 | 100000249,0,0,26,0,117221,1,1 251 | 100000250,1,1,22,1,88800,1,2 252 | 100000251,1,1,39,2,115099,0,0 253 | 100000252,1,1,46,2,113399,0,0 254 | 100000253,1,1,24,1,115879,1,1 255 | 100000254,0,0,35,1,141270,1,2 256 | 100000255,0,0,24,0,107633,1,1 257 | 100000256,0,0,27,0,131751,0,0 258 | 100000257,0,0,35,1,83687,0,0 259 | 100000258,0,1,29,1,106828,1,2 260 | 100000259,1,1,23,1,135537,1,1 261 | 100000260,1,1,57,2,107142,0,0 262 | 100000261,0,0,27,0,97446,1,1 263 | 100000262,1,1,55,2,126357,1,2 264 | 100000263,0,0,36,1,169617,2,1 265 | 100000264,1,1,57,2,108945,0,0 266 | 100000265,0,0,32,0,67345,0,0 267 | 100000266,0,0,37,1,106215,1,0 268 | 100000267,0,0,36,1,149237,1,0 269 | 100000268,1,1,38,1,112124,1,0 270 | 100000269,0,1,45,2,215150,2,2 271 | 100000270,0,0,25,0,89534,1,1 272 | 100000271,0,0,32,0,111082,1,2 273 | 100000272,1,1,37,1,137069,1,1 274 | 100000273,0,0,36,1,244541,2,2 275 | 100000274,0,0,28,0,120712,1,1 276 | 100000275,0,1,34,1,175367,0,0 277 | 100000276,0,0,32,0,111418,1,1 278 | 100000277,1,1,26,1,110913,1,0 279 | 100000278,0,1,49,2,84267,0,0 280 | 100000279,1,1,32,1,136886,1,2 281 | 100000280,0,0,29,0,144884,2,2 282 | 100000281,0,0,23,0,151180,1,1 283 | 100000282,0,0,50,1,114997,1,1 284 | 100000283,0,0,49,1,100961,0,0 285 | 100000284,0,0,63,2,124849,1,2 286 | 100000285,0,1,37,1,152308,1,2 287 | 100000286,1,1,35,1,167945,0,1 288 | 100000287,0,0,26,0,126706,1,2 289 | 100000288,0,0,31,0,210017,2,2 290 | 100000289,1,1,49,2,125665,1,1 291 | 100000290,0,1,48,2,111184,1,1 292 | 100000291,0,1,26,1,94134,1,0 293 | 100000292,0,1,28,1,214620,2,1 294 | 100000293,1,1,44,2,193816,2,1 295 | 100000294,0,0,56,1,168714,1,1 296 | 100000295,0,1,46,2,202997,2,1 297 | 100000296,1,1,26,1,192451,1,2 298 | 100000297,1,1,20,1,127928,1,2 299 | 100000298,0,0,45,1,78253,0,0 300 | 100000299,0,0,43,1,118446,1,1 301 | 100000300,0,0,32,0,161379,1,2 302 | 100000301,1,1,54,2,56622,0,0 303 | 100000302,1,1,42,2,146117,1,1 304 | 100000303,0,0,37,1,90418,0,0 305 | 100000304,0,0,49,1,109053,1,0 306 | 100000305,0,0,44,1,219319,1,0 307 | 100000306,0,1,33,1,144701,1,1 308 | 100000307,1,1,24,1,102425,0,0 309 | 100000308,0,1,33,1,79867,0,0 310 | 100000309,1,1,24,1,107114,1,2 311 | 100000310,0,1,22,1,62263,0,0 312 | 100000311,0,0,40,1,92567,0,0 313 | 100000312,0,0,25,0,146349,1,0 314 | 100000313,1,1,26,1,141825,1,1 315 | 100000314,0,1,25,1,68582,0,0 316 | 100000315,0,0,29,0,85476,0,0 317 | 100000316,0,0,31,0,111091,1,2 318 | 100000317,0,0,38,1,67110,0,0 319 | 100000318,1,1,48,2,126154,0,0 320 | 100000319,0,0,32,0,92257,1,2 321 | 100000320,1,1,27,1,93605,0,0 322 | 100000321,0,1,28,1,165190,2,0 323 | 100000322,0,1,32,1,107195,1,0 324 | 100000323,0,0,34,1,145059,2,0 325 | 100000324,0,0,28,0,148363,1,0 326 | 100000325,1,1,36,1,105681,1,2 327 | 100000326,0,0,39,1,93732,0,0 328 | 100000327,0,0,49,1,154778,1,2 329 | 100000328,1,1,34,1,149356,1,2 330 | 100000329,0,0,31,0,145670,1,1 331 | 100000330,0,0,28,0,101589,1,2 332 | 100000331,0,0,75,2,213333,2,1 333 | 100000332,1,1,30,1,122420,1,0 334 | 100000333,1,1,24,1,209856,2,1 335 | 100000334,1,1,24,1,181003,0,0 336 | 100000335,0,0,23,0,117804,1,1 337 | 100000336,0,1,44,2,160650,2,1 338 | 100000337,1,1,23,1,84611,0,0 339 | 100000338,1,1,24,1,98479,1,2 340 | 100000339,0,0,28,0,122359,1,2 341 | 100000340,0,1,31,1,81394,0,0 342 | 100000341,1,1,24,1,150372,1,1 343 | 100000342,1,1,26,1,92385,0,0 344 | 100000343,0,1,25,1,149851,1,2 345 | 100000344,0,0,33,1,167939,2,1 346 | 100000345,0,0,37,1,115426,0,0 347 | 100000346,1,1,43,2,85402,0,0 348 | 100000347,0,0,23,0,95815,1,2 349 | 100000348,1,1,23,1,97518,0,0 350 | 100000349,0,0,34,1,87355,0,0 351 | 100000350,0,0,32,0,145933,1,1 352 | 100000351,1,1,23,1,97307,1,0 353 | 100000352,1,1,29,1,108434,1,2 354 | 100000353,0,0,38,1,151312,2,1 355 | 100000354,0,0,28,0,141847,1,1 356 | 100000355,0,0,46,1,130675,1,2 357 | 100000356,0,0,23,0,69309,0,0 358 | 100000357,0,0,49,1,121466,1,2 359 | 100000358,0,0,26,0,153586,2,2 360 | 100000359,0,1,28,1,92849,1,0 361 | 100000360,1,1,23,1,108539,1,2 362 | 100000361,0,0,61,2,129556,1,2 363 | 100000362,0,0,37,1,170146,2,0 364 | 100000363,1,1,36,1,135383,1,1 365 | 100000364,0,1,21,1,96769,1,2 366 | 100000365,0,0,25,0,43684,0,0 367 | 100000366,0,0,36,1,103521,1,0 368 | 100000367,0,0,27,0,118499,1,1 369 | 100000368,1,1,22,1,119684,1,2 370 | 100000369,0,0,42,1,126586,1,1 371 | 100000370,1,1,40,2,136812,1,2 372 | 100000371,0,0,36,1,118277,1,1 373 | 100000372,0,0,33,1,144597,1,1 374 | 100000373,1,1,23,1,106043,1,0 375 | 100000374,0,0,63,2,272314,2,2 376 | 100000375,1,1,60,2,309364,2,2 377 | 100000376,1,1,37,1,170386,1,1 378 | 100000377,0,1,34,1,112458,1,0 379 | 100000378,0,0,36,1,96840,1,1 380 | 100000379,0,0,57,2,281923,2,1 381 | 100000380,1,1,52,2,95551,0,0 382 | 100000381,0,0,39,1,112347,1,2 383 | 100000382,1,1,38,1,260977,2,2 384 | 100000383,1,1,25,1,99354,1,0 385 | 100000384,0,0,26,0,111509,1,2 386 | 100000385,0,0,26,0,105252,0,0 387 | 100000386,1,1,25,1,108522,1,0 388 | 100000387,1,1,21,1,94655,1,1 389 | 100000388,0,0,40,1,201699,2,1 390 | 100000389,0,0,27,0,139868,1,2 391 | 100000390,1,1,27,1,102543,1,1 392 | 100000391,0,1,30,1,134467,2,2 393 | 100000392,1,1,19,1,111187,0,0 394 | 100000393,0,0,39,1,152302,2,1 395 | 100000394,1,1,31,1,110610,1,2 396 | 100000395,0,0,31,0,137827,2,2 397 | 100000396,0,0,32,0,220923,1,2 398 | 100000397,1,1,55,2,165717,2,2 399 | 100000398,0,1,46,2,122299,1,0 400 | 100000399,0,1,46,2,120499,1,0 401 | 100000400,1,1,43,2,126449,0,0 402 | 100000401,0,1,39,1,108315,1,2 403 | 100000402,0,1,28,1,112515,1,1 404 | 100000403,0,0,27,0,164559,1,1 405 | 100000404,0,0,27,0,59238,0,0 406 | 100000405,0,0,43,1,131133,1,0 407 | 100000406,0,1,22,1,109188,1,0 408 | 100000407,0,0,43,1,115393,1,1 409 | 100000408,0,1,27,1,94711,1,2 410 | 100000409,0,1,26,1,171860,2,0 411 | 100000410,0,1,28,1,139414,1,2 412 | 100000411,1,1,20,1,110931,1,1 413 | 100000412,0,0,35,1,187549,2,2 414 | 100000413,0,0,42,1,145508,2,0 415 | 100000414,0,0,40,1,104240,0,0 416 | 100000415,1,1,35,1,108272,1,1 417 | 100000416,0,0,35,1,144004,1,2 418 | 100000417,0,0,33,1,81083,0,0 419 | 100000418,1,1,23,1,166763,1,1 420 | 100000419,1,1,31,1,175530,2,1 421 | 100000420,1,1,33,1,112422,1,1 422 | 100000421,1,1,20,1,154134,1,2 423 | 100000422,0,0,30,0,112401,1,1 424 | 100000423,0,0,47,1,85690,0,0 425 | 100000424,0,0,34,1,145896,2,2 426 | 100000425,1,1,25,1,122552,1,2 427 | 100000426,0,1,21,1,115494,1,2 428 | 100000427,0,0,29,0,109467,1,0 429 | 100000428,0,0,46,1,148226,1,2 430 | 100000429,0,0,20,0,88559,1,1 431 | 100000430,1,1,55,2,62393,0,0 432 | 100000431,0,0,74,2,122133,0,0 433 | 100000432,0,0,29,0,230883,2,2 434 | 100000433,0,0,36,1,136689,2,2 435 | 100000434,0,1,33,1,109145,1,0 436 | 100000435,0,0,25,0,100449,1,2 437 | 100000436,0,1,25,1,106253,1,0 438 | 100000437,0,1,23,1,84747,0,0 439 | 100000438,1,1,37,1,149465,1,1 440 | 100000439,0,0,65,2,84435,0,0 441 | 100000440,1,1,26,1,51681,0,0 442 | 100000441,0,0,39,1,139198,2,1 443 | 100000442,1,1,30,1,106577,1,1 444 | 100000443,0,0,29,0,117372,1,2 445 | 100000444,0,0,41,1,69609,0,0 446 | 100000445,1,1,30,1,178947,2,2 447 | 100000446,1,1,41,2,81743,0,0 448 | 100000447,1,1,34,1,111900,1,1 449 | 100000448,0,0,35,1,121650,1,0 450 | 100000449,1,1,55,2,172639,2,2 451 | 100000450,0,1,61,2,175740,1,1 452 | 100000451,0,0,30,0,220050,2,2 453 | 100000452,1,1,29,1,95200,1,1 454 | 100000453,0,0,34,1,113609,1,1 455 | 100000454,0,0,35,1,143552,2,2 456 | 100000455,0,0,31,0,130973,1,2 457 | 100000456,1,1,29,1,145946,2,2 458 | 100000457,0,0,36,1,126206,1,1 459 | 100000458,0,0,35,1,120426,1,0 460 | 100000459,1,1,27,1,91925,1,2 461 | 100000460,0,0,32,0,129630,1,2 462 | 100000461,0,0,37,1,124268,1,2 463 | 100000462,0,0,36,1,105240,1,1 464 | 100000463,1,1,34,1,162180,2,0 465 | 100000464,0,0,38,1,106552,1,2 466 | 100000465,0,0,34,1,105843,1,2 467 | 100000466,0,0,63,2,138327,1,1 468 | 100000467,1,1,29,1,76154,0,0 469 | 100000468,0,0,32,0,155012,1,1 470 | 100000469,1,1,26,1,114369,1,1 471 | 100000470,0,0,35,1,102839,0,0 472 | 100000471,0,1,22,1,132796,1,0 473 | 100000472,1,1,23,1,89742,1,2 474 | 100000473,0,0,28,0,58615,0,0 475 | 100000474,0,0,36,1,130603,2,2 476 | 100000475,0,1,33,1,110340,1,0 477 | 100000476,1,1,26,1,117729,1,2 478 | 100000477,0,0,24,0,130808,1,0 479 | 100000478,0,0,25,0,147402,1,2 480 | 100000479,0,0,39,1,93567,0,0 481 | 100000480,0,0,44,1,109289,1,1 482 | 100000481,1,1,23,1,98742,0,0 483 | 100000482,0,0,26,0,101270,1,0 484 | 100000483,1,1,57,2,187835,1,1 485 | 100000484,1,1,30,1,140741,1,0 486 | 100000485,0,0,44,1,133265,1,2 487 | 100000486,0,0,47,1,148100,2,2 488 | 100000487,0,0,52,1,131021,1,2 489 | 100000488,1,1,62,2,152620,1,2 490 | 100000489,0,0,35,1,85033,0,0 491 | 100000490,0,0,26,0,114514,1,1 492 | 100000491,0,0,26,0,99307,1,1 493 | 100000492,1,1,42,2,219451,2,2 494 | 100000493,1,1,27,1,114007,1,0 495 | 100000494,0,0,38,1,102846,1,0 496 | 100000495,0,0,39,1,81483,0,0 497 | 100000496,0,1,20,1,107779,1,2 498 | 100000497,0,0,29,0,222360,2,2 499 | 100000498,0,0,40,1,107125,1,0 500 | 100000499,0,1,32,1,80080,0,0 501 | 100000500,0,1,28,1,129600,1,0 502 | 100000501,1,1,27,1,118613,1,1 503 | 100000502,0,0,42,1,146237,1,1 504 | 100000503,0,1,49,2,144461,1,2 505 | 100000504,0,0,38,1,124487,1,0 506 | 100000505,1,1,24,1,97826,1,0 507 | 100000506,0,0,27,0,64105,0,0 508 | 100000507,0,0,36,1,156374,1,2 509 | 100000508,0,0,34,1,205383,2,2 510 | 100000509,0,1,28,1,98964,1,2 511 | 100000510,0,0,45,1,221842,2,2 512 | 100000511,0,0,26,0,88027,1,2 513 | 100000512,0,0,32,0,160513,2,2 514 | 100000513,0,0,26,0,124536,1,2 515 | 100000514,0,1,20,1,93634,1,0 516 | 100000515,0,0,54,1,124725,1,0 517 | 100000516,1,1,37,1,102456,1,0 518 | 100000517,0,0,40,1,74975,0,0 519 | 100000518,1,1,23,1,153861,1,1 520 | 100000519,0,0,43,1,119351,1,2 521 | 100000520,0,0,36,1,95438,1,2 522 | 100000521,0,0,44,1,147967,1,2 523 | 100000522,1,1,24,1,116863,1,1 524 | 100000523,0,0,53,1,170622,1,1 525 | 100000524,1,1,23,1,132426,1,1 526 | 100000525,1,1,26,1,77519,0,0 527 | 100000526,0,0,30,0,169405,1,2 528 | 100000527,1,1,31,1,120030,1,0 529 | 100000528,0,0,42,1,77933,0,0 530 | 100000529,0,1,31,1,109892,1,1 531 | 100000530,0,0,41,1,69062,0,0 532 | 100000531,0,0,32,0,116348,1,0 533 | 100000532,1,1,28,1,137188,1,1 534 | 100000533,0,1,41,1,110199,1,0 535 | 100000534,0,1,26,1,109890,1,1 536 | 100000535,0,0,25,0,109751,1,2 537 | 100000536,0,1,33,1,129651,1,1 538 | 100000537,1,1,75,3,170113,2,1 539 | 100000538,1,1,37,1,140285,1,1 540 | 100000539,0,0,42,1,198029,2,2 541 | 100000540,1,1,45,2,120262,0,0 542 | 100000541,0,1,23,1,105137,1,1 543 | 100000542,0,0,60,2,127371,1,0 544 | 100000543,0,0,31,0,145689,1,0 545 | 100000544,0,0,34,1,102617,0,1 546 | 100000545,0,0,61,2,90709,0,0 547 | 100000546,0,0,43,1,107099,1,1 548 | 100000547,1,1,37,1,116021,1,2 549 | 100000548,0,0,32,0,100426,1,2 550 | 100000549,1,1,24,1,62249,0,0 551 | 100000550,0,0,35,1,172957,1,1 552 | 100000551,1,1,23,1,95003,1,1 553 | 100000552,0,0,45,1,109698,0,0 554 | 100000553,0,1,34,1,157376,1,0 555 | 100000554,0,0,27,0,123191,1,2 556 | 100000555,1,1,67,3,171052,2,0 557 | 100000556,0,0,22,0,99328,1,0 558 | 100000557,1,1,28,1,133799,1,2 559 | 100000558,1,1,29,1,138256,1,2 560 | 100000559,0,0,27,0,115638,1,0 561 | 100000560,0,0,31,0,82238,0,0 562 | 100000561,0,0,49,1,127543,1,1 563 | 100000562,0,0,24,0,63987,0,0 564 | 100000563,1,1,29,1,114784,1,0 565 | 100000564,0,0,37,1,217450,1,1 566 | 100000565,0,0,37,1,173751,2,2 567 | 100000566,1,1,23,1,122850,1,0 568 | 100000567,0,1,36,1,104953,1,0 569 | 100000568,0,0,34,1,152371,1,1 570 | 100000569,0,0,41,1,139905,1,0 571 | 100000570,1,1,31,1,156700,1,1 572 | 100000571,1,1,23,1,86488,0,0 573 | 100000572,0,0,38,1,147472,1,0 574 | 100000573,1,1,26,1,169991,2,0 575 | 100000574,1,1,22,1,62381,0,0 576 | 100000575,0,0,27,0,70926,0,0 577 | 100000576,1,1,24,1,113004,1,1 578 | 100000577,1,1,27,1,125760,1,0 579 | 100000578,1,1,33,1,111918,1,2 580 | 100000579,0,1,27,1,120674,1,1 581 | 100000580,0,1,27,1,63597,0,0 582 | 100000581,0,0,30,0,103069,1,1 583 | 100000582,0,0,49,1,108079,0,0 584 | 100000583,1,1,26,1,101159,1,1 585 | 100000584,0,0,33,1,88211,0,0 586 | 100000585,1,1,52,2,159052,2,1 587 | 100000586,1,1,20,1,102623,1,2 588 | 100000587,0,0,36,1,115589,1,0 589 | 100000588,0,0,21,0,59127,0,0 590 | 100000589,0,1,47,2,82240,0,0 591 | 100000590,0,0,60,2,129425,1,1 592 | 100000591,1,1,58,2,87058,0,0 593 | 100000592,1,1,42,2,128462,1,2 594 | 100000593,1,1,36,1,121403,0,0 595 | 100000594,1,1,20,1,88141,0,0 596 | 100000595,0,0,40,1,134946,2,2 597 | 100000596,1,1,32,1,94058,0,0 598 | 100000597,1,1,23,1,99285,1,1 599 | 100000598,0,0,36,1,108432,0,0 600 | 100000599,0,0,31,0,111369,1,0 601 | 100000600,0,0,32,0,122612,1,2 602 | 100000601,1,1,45,2,134350,1,0 603 | 100000602,1,1,30,1,108838,1,2 604 | 100000603,1,1,34,1,90852,0,0 605 | 100000604,1,1,28,1,151580,2,2 606 | 100000605,1,1,23,1,115681,1,1 607 | 100000606,0,0,22,0,131699,1,1 608 | 100000607,0,0,74,2,192481,2,1 609 | 100000608,1,1,50,2,155122,1,2 610 | 100000609,0,0,33,1,106015,1,2 611 | 100000610,0,0,45,1,108378,1,0 612 | 100000611,1,1,22,1,105257,1,1 613 | 100000612,1,1,48,2,118788,0,0 614 | 100000613,1,1,29,1,162955,1,2 615 | 100000614,1,1,22,1,119511,1,2 616 | 100000615,1,1,22,1,102000,1,0 617 | 100000616,0,0,48,1,254449,2,1 618 | 100000617,0,0,27,0,208446,2,2 619 | 100000618,0,0,37,1,124805,1,0 620 | 100000619,1,1,21,1,139379,1,0 621 | 100000620,0,1,49,2,78296,0,0 622 | 100000621,0,0,27,0,125598,1,1 623 | 100000622,0,0,32,0,100215,1,2 624 | 100000623,0,1,38,1,130951,1,2 625 | 100000624,1,1,22,1,102480,1,2 626 | 100000625,0,0,65,2,136812,1,1 627 | 100000626,0,0,35,1,106919,1,1 628 | 100000627,0,0,41,1,131020,1,2 629 | 100000628,0,0,29,0,119429,1,1 630 | 100000629,0,0,36,1,154521,1,1 631 | 100000630,0,0,64,2,117842,0,0 632 | 100000631,1,1,28,1,124566,1,2 633 | 100000632,0,0,44,1,110009,1,2 634 | 100000633,0,0,23,0,101210,1,1 635 | 100000634,1,1,19,1,101258,1,0 636 | 100000635,1,1,25,1,79045,0,0 637 | 100000636,0,0,47,1,110866,1,0 638 | 100000637,1,1,28,1,129640,1,2 639 | 100000638,0,0,21,0,227021,1,1 640 | 100000639,1,1,34,1,108549,1,1 641 | 100000640,0,0,26,0,122693,1,0 642 | 100000641,1,1,27,1,35832,0,0 643 | 100000642,0,0,38,1,81870,0,0 644 | 100000643,0,0,40,1,179790,2,2 645 | 100000644,0,1,33,1,107158,1,1 646 | 100000645,0,1,32,1,136638,2,1 647 | 100000646,0,0,27,0,158147,1,2 648 | 100000647,0,1,32,1,132587,1,2 649 | 100000648,1,1,26,1,128140,1,2 650 | 100000649,0,0,38,1,117405,1,1 651 | 100000650,0,0,40,1,68475,0,0 652 | 100000651,0,0,50,1,201656,2,2 653 | 100000652,0,0,37,1,86967,0,0 654 | 100000653,0,0,45,1,118006,1,1 655 | 100000654,0,0,42,1,223630,2,2 656 | 100000655,0,0,35,1,110442,1,0 657 | 100000656,0,0,22,0,115691,1,2 658 | 100000657,0,0,41,1,80232,0,0 659 | 100000658,0,0,37,1,187647,1,1 660 | 100000659,1,1,28,1,138952,1,1 661 | 100000660,0,0,41,1,162772,1,2 662 | 100000661,0,1,23,1,111862,1,1 663 | 100000662,0,1,23,1,90051,1,1 664 | 100000663,0,0,50,1,121400,1,1 665 | 100000664,0,0,35,1,137000,2,2 666 | 100000665,1,1,50,2,105031,0,0 667 | 100000666,0,0,27,0,172153,2,2 668 | 100000667,0,0,34,1,170184,1,1 669 | 100000668,1,1,27,1,123279,1,1 670 | 100000669,0,0,43,1,140795,1,0 671 | 100000670,0,0,47,1,144456,1,0 672 | 100000671,0,0,27,0,104773,0,0 673 | 100000672,0,0,31,0,153353,1,1 674 | 100000673,0,0,42,1,223018,2,1 675 | 100000674,0,1,24,1,129177,1,2 676 | 100000675,0,0,41,1,114475,0,1 677 | 100000676,1,1,26,1,161323,2,1 678 | 100000677,0,0,33,1,135765,1,2 679 | 100000678,0,1,24,1,158421,1,0 680 | 100000679,0,0,64,2,103941,0,0 681 | 100000680,1,1,26,1,101783,1,2 682 | 100000681,1,1,56,2,126531,1,1 683 | 100000682,0,0,37,1,111394,1,1 684 | 100000683,0,1,33,1,103577,1,2 685 | 100000684,0,1,47,2,149545,1,1 686 | 100000685,0,0,31,0,171857,0,0 687 | 100000686,0,0,34,1,149782,1,1 688 | 100000687,0,0,27,0,112470,1,1 689 | 100000688,0,0,30,0,133907,1,2 690 | 100000689,0,0,35,1,127849,1,1 691 | 100000690,0,0,31,0,160279,1,2 692 | 100000691,0,1,25,1,92366,1,2 693 | 100000692,1,1,25,1,104794,0,0 694 | 100000693,0,0,29,0,133436,1,1 695 | 100000694,0,0,44,1,110374,0,0 696 | 100000695,0,0,28,0,104263,1,1 697 | 100000696,0,0,50,1,138752,1,0 698 | 100000697,0,0,29,0,102723,1,0 699 | 100000698,1,1,38,1,46297,0,0 700 | 100000699,0,0,24,0,96425,1,1 701 | 100000700,0,0,40,1,158197,2,1 702 | 100000701,1,1,29,1,98008,0,0 703 | 100000702,0,0,46,1,157473,1,0 704 | 100000703,1,1,47,2,149306,1,0 705 | 100000704,0,0,41,1,139236,1,1 706 | 100000705,1,1,32,1,125890,1,2 707 | 100000706,1,1,35,1,173124,1,1 708 | 100000707,0,0,24,0,164621,1,1 709 | 100000708,1,1,25,1,124539,1,1 710 | 100000709,1,1,25,1,107614,1,1 711 | 100000710,0,0,37,1,88849,0,0 712 | 100000711,0,0,32,0,148566,2,2 713 | 100000712,1,1,35,1,106515,1,2 714 | 100000713,0,0,46,1,150465,2,1 715 | 100000714,0,0,25,0,60868,0,0 716 | 100000715,0,0,27,0,255198,2,2 717 | 100000716,0,0,63,2,183178,1,1 718 | 100000717,0,0,40,1,121448,1,2 719 | 100000718,0,0,32,0,129975,2,2 720 | 100000719,0,0,31,0,132950,1,2 721 | 100000720,0,1,31,1,169314,1,1 722 | 100000721,0,0,34,1,147958,2,1 723 | 100000722,1,1,24,1,139896,1,2 724 | 100000723,1,1,24,1,68028,0,0 725 | 100000724,1,1,66,3,133328,0,0 726 | 100000725,1,1,21,1,108518,1,2 727 | 100000726,1,1,41,2,112700,0,0 728 | 100000727,0,1,47,2,110190,0,0 729 | 100000728,1,1,25,1,105104,1,1 730 | 100000729,1,1,59,2,184753,1,1 731 | 100000730,0,1,36,1,162521,1,2 732 | 100000731,0,0,33,1,156794,1,1 733 | 100000732,0,0,21,0,65827,0,0 734 | 100000733,1,1,44,2,88490,0,0 735 | 100000734,1,1,28,1,154919,1,2 736 | 100000735,1,1,37,1,129058,1,0 737 | 100000736,1,1,29,1,77532,0,0 738 | 100000737,1,1,23,1,235417,2,2 739 | 100000738,0,0,35,1,113468,0,0 740 | 100000739,0,0,45,1,190803,2,2 741 | 100000740,1,1,26,1,121423,0,0 742 | 100000741,0,0,32,0,121347,1,1 743 | 100000742,0,0,23,0,67408,0,0 744 | 100000743,0,0,41,1,123043,1,1 745 | 100000744,0,0,22,0,128387,1,2 746 | 100000745,0,0,30,0,250050,2,1 747 | 100000746,0,0,28,0,69588,0,0 748 | 100000747,1,1,23,1,109547,1,1 749 | 100000748,1,1,37,1,78840,0,0 750 | 100000749,0,0,26,0,131122,1,0 751 | 100000750,0,0,33,1,115403,1,1 752 | 100000751,1,1,49,2,110291,1,2 753 | 100000752,1,1,23,1,64811,0,0 754 | 100000753,1,1,23,1,86015,0,0 755 | 100000754,1,1,25,1,142438,1,2 756 | 100000755,0,0,55,1,159303,1,1 757 | 100000756,1,1,32,1,104957,1,1 758 | 100000757,0,0,74,2,89502,0,0 759 | 100000758,0,0,39,1,121313,1,1 760 | 100000759,0,0,31,0,98102,1,0 761 | 100000760,0,0,35,1,94554,1,1 762 | 100000761,1,1,59,2,162591,1,1 763 | 100000762,1,1,24,1,106629,1,2 764 | 100000763,0,0,24,0,70400,0,0 765 | 100000764,0,0,30,0,235660,2,2 766 | 100000765,0,1,27,1,121747,1,2 767 | 100000766,0,1,40,1,85060,0,0 768 | 100000767,0,1,31,1,87630,0,0 769 | 100000768,1,1,31,1,119673,1,0 770 | 100000769,0,0,28,0,126060,1,2 771 | 100000770,0,0,63,2,96145,0,0 772 | 100000771,1,1,26,1,114830,1,0 773 | 100000772,1,1,25,1,194461,2,2 774 | 100000773,0,0,36,1,150158,2,2 775 | 100000774,0,0,52,1,136323,1,2 776 | 100000775,0,0,66,2,111858,0,0 777 | 100000776,1,1,25,1,100198,1,0 778 | 100000777,0,0,37,1,123452,1,2 779 | 100000778,1,1,25,1,120723,1,1 780 | 100000779,0,0,38,1,215639,2,1 781 | 100000780,1,1,67,3,166712,1,1 782 | 100000781,0,0,25,0,136300,1,1 783 | 100000782,0,0,60,2,166988,1,2 784 | 100000783,0,0,31,0,77265,0,0 785 | 100000784,1,1,23,1,85967,0,0 786 | 100000785,0,1,60,2,212020,2,0 787 | 100000786,0,0,35,1,126054,0,0 788 | 100000787,0,0,40,1,144589,1,0 789 | 100000788,0,0,38,1,116723,1,1 790 | 100000789,0,0,50,1,168637,1,1 791 | 100000790,0,0,27,0,139119,1,1 792 | 100000791,1,1,39,2,118610,1,2 793 | 100000792,0,0,41,1,183312,2,2 794 | 100000793,0,1,27,1,96323,1,0 795 | 100000794,0,1,51,2,149510,1,2 796 | 100000795,0,0,32,0,141922,1,2 797 | 100000796,1,1,22,1,120233,1,0 798 | 100000797,0,0,51,1,172790,1,1 799 | 100000798,1,1,22,1,66720,0,0 800 | 100000799,0,1,54,2,113024,1,1 801 | 100000800,0,0,35,1,51791,0,0 802 | 100000801,0,0,54,1,118408,1,2 803 | 100000802,1,1,48,2,101616,0,0 804 | 100000803,1,1,24,1,127250,1,0 805 | 100000804,0,0,35,1,97290,1,0 806 | 100000805,1,1,24,1,106970,0,0 807 | 100000806,0,0,24,0,168147,1,2 808 | 100000807,0,1,26,1,68468,0,0 809 | 100000808,0,0,65,2,120780,1,2 810 | 100000809,0,0,55,1,231992,2,2 811 | 100000810,1,1,26,1,53903,0,0 812 | 100000811,0,1,26,1,101511,1,2 813 | 100000812,0,1,28,1,69046,0,0 814 | 100000813,0,0,24,0,171584,1,1 815 | 100000814,0,0,54,1,132367,1,2 816 | 100000815,0,0,46,1,134433,1,2 817 | 100000816,1,1,54,2,190518,1,0 818 | 100000817,0,1,62,2,152367,1,1 819 | 100000818,1,1,24,1,101157,1,1 820 | 100000819,0,1,43,2,279593,2,2 821 | 100000820,0,1,26,1,96716,1,2 822 | 100000821,0,1,27,1,95171,1,0 823 | 100000822,0,1,24,1,129162,1,2 824 | 100000823,0,0,41,1,118742,1,0 825 | 100000824,0,0,47,1,74511,0,0 826 | 100000825,0,1,35,1,157272,2,1 827 | 100000826,0,1,30,1,102374,1,0 828 | 100000827,1,1,33,1,131492,1,0 829 | 100000828,0,0,36,1,128702,1,2 830 | 100000829,0,0,47,1,177509,1,2 831 | 100000830,0,0,38,1,163451,1,1 832 | 100000831,0,0,44,1,144900,1,1 833 | 100000832,1,1,23,1,97115,1,2 834 | 100000833,0,0,29,0,196568,1,2 835 | 100000834,1,1,42,2,158405,1,0 836 | 100000835,1,1,25,1,97376,0,0 837 | 100000836,0,0,48,1,108678,1,1 838 | 100000837,1,1,21,1,92351,1,0 839 | 100000838,1,1,23,1,61211,0,0 840 | 100000839,0,0,63,2,138644,1,0 841 | 100000840,0,1,46,2,124824,1,2 842 | 100000841,0,0,29,0,132852,1,0 843 | 100000842,0,0,28,0,81069,0,0 844 | 100000843,1,1,23,1,104094,1,2 845 | 100000844,0,0,50,1,114853,1,0 846 | 100000845,0,0,47,1,130344,1,2 847 | 100000846,0,0,35,1,135090,1,0 848 | 100000847,0,0,68,2,179151,1,2 849 | 100000848,0,1,28,1,97390,1,1 850 | 100000849,0,0,59,2,120160,1,0 851 | 100000850,0,0,57,2,82277,0,0 852 | 100000851,0,1,33,1,110844,1,2 853 | 100000852,0,0,43,1,133105,1,0 854 | 100000853,0,0,35,1,102042,1,0 855 | 100000854,0,0,32,0,69370,0,0 856 | 100000855,0,0,45,1,200298,1,1 857 | 100000856,0,1,33,1,117039,1,2 858 | 100000857,1,1,40,2,107585,1,2 859 | 100000858,0,0,28,0,114429,1,0 860 | 100000859,1,1,29,1,128234,1,2 861 | 100000860,0,0,26,0,128580,1,2 862 | 100000861,0,0,27,0,177757,1,1 863 | 100000862,0,1,28,1,106222,1,0 864 | 100000863,1,1,35,1,118428,1,2 865 | 100000864,0,0,32,0,139477,0,0 866 | 100000865,0,0,25,0,71159,0,0 867 | 100000866,1,1,20,1,131370,1,2 868 | 100000867,1,1,27,1,111567,1,2 869 | 100000868,0,0,42,1,125482,1,2 870 | 100000869,0,0,37,1,160642,1,2 871 | 100000870,1,1,24,1,92498,1,0 872 | 100000871,1,1,40,2,199711,1,2 873 | 100000872,0,0,46,1,127588,1,2 874 | 100000873,0,0,26,0,107508,1,2 875 | 100000874,1,1,24,1,94629,1,2 876 | 100000875,0,0,29,0,87598,0,2 877 | 100000876,1,1,40,2,161194,1,1 878 | 100000877,0,0,36,1,137342,2,2 879 | 100000878,0,0,28,0,116848,1,1 880 | 100000879,0,0,27,0,125190,2,1 881 | 100000880,0,0,36,1,153441,1,0 882 | 100000881,0,0,38,1,195328,2,2 883 | 100000882,0,1,48,2,190413,1,0 884 | 100000883,0,0,36,1,118656,1,1 885 | 100000884,1,1,65,3,69487,0,0 886 | 100000885,0,1,43,2,145313,1,1 887 | 100000886,1,1,53,2,117005,1,1 888 | 100000887,0,0,34,1,123243,1,1 889 | 100000888,0,0,23,0,237799,1,1 890 | 100000889,0,0,34,1,180617,2,2 891 | 100000890,0,0,40,1,167019,1,0 892 | 100000891,0,0,43,1,147745,2,2 893 | 100000892,0,0,46,1,114254,1,1 894 | 100000893,0,0,38,1,81155,0,0 895 | 100000894,0,0,34,1,151803,1,2 896 | 100000895,0,0,29,0,94356,1,2 897 | 100000896,0,0,31,0,200621,2,2 898 | 100000897,1,1,28,1,144448,2,1 899 | 100000898,1,1,35,1,150797,1,0 900 | 100000899,1,1,33,1,84404,0,0 901 | 100000900,0,0,42,1,133373,1,2 902 | 100000901,0,0,43,1,119502,1,2 903 | 100000902,0,1,44,2,131619,1,0 904 | 100000903,0,0,42,1,194084,1,2 905 | 100000904,0,1,40,1,108278,1,1 906 | 100000905,0,0,36,1,130987,2,1 907 | 100000906,0,0,20,0,116582,2,2 908 | 100000907,0,0,24,0,85270,0,0 909 | 100000908,0,1,27,1,129227,1,0 910 | 100000909,1,1,46,2,108291,0,0 911 | 100000910,1,1,33,1,103091,0,0 912 | 100000911,1,1,34,1,136975,1,1 913 | 100000912,1,1,25,1,111502,0,0 914 | 100000913,1,1,25,1,124750,1,1 915 | 100000914,0,1,28,1,146463,1,2 916 | 100000915,0,0,31,0,115075,1,0 917 | 100000916,1,1,32,1,308491,2,1 918 | 100000917,0,0,32,0,126368,1,0 919 | 100000918,0,0,68,2,287247,2,2 920 | 100000919,0,1,33,1,125535,1,2 921 | 100000920,0,0,39,1,153223,2,2 922 | 100000921,1,1,28,1,106873,1,1 923 | 100000922,0,0,37,1,268906,2,1 924 | 100000923,1,1,22,1,97757,1,2 925 | 100000924,0,0,30,0,112151,1,1 926 | 100000925,0,1,55,2,172909,1,0 927 | 100000926,0,0,46,1,103387,1,1 928 | 100000927,1,1,21,1,93916,1,2 929 | 100000928,0,0,39,1,189963,1,2 930 | 100000929,0,0,58,2,124191,1,0 931 | 100000930,0,0,43,1,77205,0,0 932 | 100000931,0,0,24,0,65917,0,0 933 | 100000932,1,1,22,1,109676,1,0 934 | 100000933,0,0,30,0,95682,1,2 935 | 100000934,0,0,42,1,125516,1,2 936 | 100000935,1,1,23,1,99822,1,0 937 | 100000936,0,0,30,0,154854,2,1 938 | 100000937,1,1,28,1,84582,0,0 939 | 100000938,0,1,30,1,145800,2,0 940 | 100000939,0,0,42,1,162869,1,1 941 | 100000940,0,0,46,1,192379,2,2 942 | 100000941,0,0,45,1,159757,2,2 943 | 100000942,0,0,31,0,69571,0,0 944 | 100000943,0,0,31,0,93648,1,2 945 | 100000944,0,0,42,1,77472,0,0 946 | 100000945,1,1,46,2,121501,1,0 947 | 100000946,1,1,30,1,207262,1,0 948 | 100000947,0,0,30,0,143082,1,2 949 | 100000948,0,0,38,1,147760,2,1 950 | 100000949,0,1,43,2,82082,0,0 951 | 100000950,0,0,31,0,132991,1,1 952 | 100000951,0,1,40,1,78436,0,0 953 | 100000952,0,0,24,0,99737,1,2 954 | 100000953,1,1,28,1,164915,1,0 955 | 100000954,1,1,26,1,223185,2,1 956 | 100000955,1,1,29,1,108400,1,2 957 | 100000956,1,1,57,2,194882,2,1 958 | 100000957,0,0,49,1,122186,0,0 959 | 100000958,0,0,37,1,79594,0,0 960 | 100000959,0,0,45,1,104355,0,0 961 | 100000960,0,0,30,0,135894,1,2 962 | 100000961,0,1,30,1,103699,1,1 963 | 100000962,0,1,47,2,132145,1,1 964 | 100000963,0,0,29,0,117272,1,2 965 | 100000964,0,0,35,1,137932,1,0 966 | 100000965,0,1,22,1,63972,0,0 967 | 100000966,1,1,26,1,113299,1,2 968 | 100000967,0,0,23,0,108540,0,0 969 | 100000968,1,1,54,2,174424,2,2 970 | 100000969,0,1,29,1,154991,1,2 971 | 100000970,0,0,40,1,99723,0,0 972 | 100000971,0,0,22,0,114584,1,2 973 | 100000972,0,0,43,1,135275,0,0 974 | 100000973,1,1,29,1,41680,0,0 975 | 100000974,0,0,36,1,158769,1,1 976 | 100000975,1,1,33,1,120596,1,0 977 | 100000976,1,1,57,2,139641,0,0 978 | 100000977,1,1,64,3,134377,1,0 979 | 100000978,0,0,42,1,125804,1,2 980 | 100000979,0,0,47,1,91858,0,0 981 | 100000980,0,1,25,1,117641,1,2 982 | 100000981,0,0,49,1,188594,1,1 983 | 100000982,0,0,33,1,162827,2,2 984 | 100000983,1,1,28,1,178991,2,2 985 | 100000984,0,0,26,0,159739,1,1 986 | 100000985,0,0,30,0,73401,0,0 987 | 100000986,1,1,25,1,100794,1,2 988 | 100000987,0,1,33,1,167763,1,1 989 | 100000988,1,1,64,3,145174,1,0 990 | 100000989,0,0,29,0,176292,2,1 991 | 100000990,0,0,48,1,94024,0,0 992 | 100000991,0,0,37,1,93740,0,0 993 | 100000992,0,0,34,1,85685,0,0 994 | 100000993,0,1,23,1,69997,0,0 995 | 100000994,0,0,30,0,151938,2,2 996 | 100000995,0,0,50,1,122830,1,1 997 | 100000996,1,1,31,1,78489,0,0 998 | 100000997,0,1,40,1,161999,2,1 999 | 100000998,0,0,38,1,98032,1,2 1000 | 100000999,0,0,23,0,96060,1,0 1001 | 100001000,0,0,27,0,147968,1,1 1002 | 100001001,1,1,63,2,134853,1,1 1003 | 100001002,0,0,66,2,157576,2,2 1004 | 100001003,0,1,43,2,203738,2,1 1005 | 100001004,0,1,44,2,280570,2,2 1006 | 100001005,0,1,65,3,69487,0,2 1007 | 100001006,1,1,73,3,214126,2,1 1008 | 100001007,0,0,60,2,136671,1,1 1009 | 100001008,0,1,62,2,174337,1,1 1010 | 100001009,1,1,58,2,126710,1,1 1011 | 100001010,1,1,43,2,167139,2,2 1012 | 100001011,0,0,64,2,122094,1,2 1013 | 100001012,0,1,37,3,170113,2,2 1014 | 100001013,1,1,46,2,192698,2,1 1015 | 100001014,0,1,57,2,144197,1,2 1016 | 100001015,0,1,51,2,133623,1,1 1017 | 100001016,1,1,32,3,171052,2,2 1018 | 100001017,0,0,64,2,130492,1,2 1019 | 100001018,0,0,68,2,135705,1,1 1020 | 100001019,1,1,55,2,171804,2,2 1021 | 100001020,0,0,73,2,192167,2,1 1022 | 100001021,1,1,34,3,134377,1,2 1023 | 100001022,0,1,44,2,146716,1,1 1024 | 100001023,0,0,58,2,267872,1,1 1025 | 100001024,1,1,65,2,142193,0,1 1026 | 100001025,1,1,56,2,183765,1,1 1027 | 100001026,1,1,42,2,218664,2,2 1028 | 100001027,1,1,65,3,145174,1,2 1029 | 100001028,0,0,72,2,224961,2,2 1030 | 100001029,1,1,45,2,262634,2,2 1031 | 100001030,0,0,68,2,287106,2,2 1032 | 100001031,0,0,60,2,166298,2,1 1033 | 100001032,1,1,30,3,133328,0,2 1034 | 100001033,0,0,63,2,129798,1,1 1035 | 100001034,0,0,57,2,281084,2,1 1036 | 100001035,1,1,46,2,160678,1,2 1037 | 100001036,1,1,70,3,167532,1,1 1038 | 100001037,0,0,65,2,178591,1,2 1039 | 100001038,0,0,63,2,273063,2,2 1040 | 100001039,0,1,54,2,149410,1,2 1041 | 100001040,0,1,49,2,124658,1,2 1042 | 100001041,1,1,64,2,153645,1,2 1043 | 100001042,1,1,61,2,308529,2,2 1044 | 100001043,1,1,57,2,155062,1,2 1045 | 100001044,1,1,42,2,199654,1,2 1046 | 100001045,0,0,62,2,124723,1,2 1047 | 100001046,1,1,41,2,127752,1,2 1048 | 100001047,1,1,51,2,157595,2,1 1049 | 100001048,1,1,38,2,135534,1,2 1050 | 100001049,1,1,56,2,166264,2,2 1051 | 100001050,1,1,43,2,147259,1,1 1052 | 100001051,1,1,48,2,161116,1,1 1053 | 100001052,0,0,61,2,139380,1,1 1054 | 100001053,0,1,48,2,213768,2,2 1055 | 100001054,0,0,68,2,125903,1,2 1056 | 100001055,1,1,62,2,163940,1,1 1057 | 100001056,1,1,56,2,173378,2,2 1058 | 100001057,1,1,53,2,126847,1,1 1059 | 100001058,0,1,33,3,166712,1,2 1060 | 100001059,1,1,60,2,189166,1,1 1061 | 100001060,1,1,47,2,161714,1,1 1062 | 100001061,0,1,25,3,214364,2,2 1063 | 100001062,0,0,64,2,184680,1,1 1064 | 100001063,0,0,73,2,214732,2,1 1065 | 100001064,0,1,66,2,152527,1,1 1066 | 100001065,1,1,76,3,170366,2,1 1067 | 100001066,1,1,60,2,194532,2,1 1068 | 100001067,1,1,57,2,125883,1,2 1069 | 100001068,0,1,30,3,131242,1,2 1070 | 100001069,0,1,43,2,159880,2,1 1071 | 100001070,0,0,57,2,165519,1,2 1072 | 100001071,0,1,51,2,149653,1,1 1073 | 100001072,1,1,61,2,134102,1,1 1074 | 100001073,0,0,64,2,159378,2,2 1075 | 100001074,0,1,41,2,205476,2,1 1076 | 100001075,0,1,43,2,280566,2,2 1077 | 100001076,0,1,67,3,71823,0,2 1078 | 100001077,1,1,71,3,211572,2,1 1079 | 100001078,0,0,59,2,136123,1,1 1080 | 100001079,0,1,60,2,176372,1,1 1081 | 100001080,1,1,60,2,128271,1,1 1082 | 100001081,1,1,45,2,169020,2,2 1083 | 100001082,0,0,63,2,122267,1,2 1084 | 100001083,0,1,38,3,169324,2,2 1085 | 100001084,1,1,46,2,192561,2,1 1086 | 100001085,0,1,55,2,145781,1,2 1087 | 100001086,0,1,50,2,135376,1,1 1088 | 100001087,1,1,30,3,169002,2,2 1089 | 100001088,0,0,63,2,128469,1,2 1090 | 100001089,0,0,67,2,135567,1,1 1091 | 100001090,1,1,54,2,170644,2,2 1092 | 100001091,0,0,71,2,192360,2,1 1093 | 100001092,1,1,32,3,133235,1,2 1094 | 100001093,1,1,45,2,260847,2,2 1095 | 100001094,0,0,65,2,285647,2,2 1096 | 100001095,0,0,62,2,164816,2,1 1097 | 100001096,1,1,28,3,130148,0,2 1098 | 100001097,0,0,65,2,129838,1,1 1099 | 100001098,0,0,57,2,281647,2,1 1100 | 100001099,1,1,48,2,157305,1,2 1101 | 100001100,1,1,71,3,163654,1,1 1102 | 100001101,0,0,38,1,82398,1,1 1103 | 100001102,0,1,40,1,107710,1,1 1104 | 100001103,0,0,49,1,122346,1,1 1105 | 100001104,0,1,32,1,155540,2,1 1106 | 100001105,0,0,45,1,127572,1,1 1107 | 100001106,0,0,40,1,154031,2,1 1108 | 100001107,0,0,66,2,164931,2,2 1109 | 100001108,0,0,38,1,123003,1,2 1110 | 100001109,0,1,20,1,89605,1,1 1111 | 100001110,0,0,48,1,117721,1,1 1112 | 100001111,0,1,46,2,168904,2,1 1113 | 100001112,0,0,32,1,137576,2,2 1114 | 100001113,0,0,54,1,111274,1,1 1115 | 100001114,0,1,24,1,94249,2,2 1116 | 100001115,0,1,27,1,180940,2,1 1117 | 100001116,0,0,57,1,125032,1,2 1118 | 100001117,0,0,38,1,138011,2,1 1119 | 100001118,0,0,40,1,144850,1,1 1120 | 100001119,0,1,20,1,107270,1,2 1121 | 100001120,0,0,36,1,113405,2,2 1122 | 100001121,0,0,47,1,137338,1,2 1123 | 100001122,0,0,64,2,125119,0,2 1124 | 100001123,0,0,42,1,159745,2,2 1125 | 100001124,0,0,44,1,181262,2,2 1126 | 100001125,0,1,30,1,90500,2,2 1127 | 100001126,0,0,37,1,102733,1,1 1128 | 100001127,0,0,42,1,135493,1,2 1129 | 100001128,0,1,62,2,169044,1,1 1130 | 100001129,0,0,49,1,178549,1,2 1131 | 100001130,0,0,52,1,159716,1,2 1132 | 100001131,0,1,36,1,170118,2,1 1133 | 100001132,0,0,49,1,143886,0,1 1134 | 100001133,0,0,42,1,130164,2,2 1135 | 100001134,0,0,38,1,114476,1,1 1136 | 100001135,0,0,50,1,126143,1,1 1137 | 100001136,0,1,34,1,129654,2,2 1138 | 100001137,0,0,43,1,123202,1,2 1139 | 100001138,0,0,40,1,160524,1,1 1140 | 100001139,0,0,56,2,126906,1,1 1141 | 100001140,0,0,41,1,143994,2,2 1142 | 100001141,0,1,30,1,123517,2,2 1143 | 100001142,0,1,28,1,129055,1,2 1144 | 100001143,0,0,64,2,136312,0,2 1145 | 100001144,0,0,67,2,112486,1,2 1146 | 100001145,0,0,37,1,152401,2,1 1147 | 100001146,0,0,31,1,157453,2,1 1148 | 100001147,0,0,32,1,142870,2,2 1149 | 100001148,0,1,52,2,137231,1,2 1150 | 100001149,0,1,31,1,104406,1,1 1151 | 100001150,0,0,36,1,145385,2,1 1152 | 100001151,0,1,32,1,146519,2,1 1153 | 100001152,0,0,51,1,126227,1,2 1154 | 100001153,0,0,47,1,112227,2,1 1155 | 100001154,0,1,34,1,110145,1,2 1156 | 100001155,0,1,46,2,149419,1,1 1157 | 100001156,0,1,42,1,176646,1,1 1158 | 100001157,0,0,39,1,91019,2,1 1159 | 100001158,0,0,50,1,169579,1,2 1160 | 100001159,0,0,42,1,142305,1,2 1161 | 100001160,0,1,36,1,130602,1,1 1162 | 100001161,0,1,18,1,98992,1,1 1163 | 100001162,0,0,35,1,181926,2,2 1164 | 100001163,0,0,38,1,152864,1,2 1165 | 100001164,0,0,39,1,135837,2,2 1166 | 100001165,0,1,24,1,121757,0,2 1167 | 100001166,0,0,41,1,182274,1,1 1168 | 100001167,0,0,36,1,149040,2,2 1169 | 100001168,0,0,37,1,154196,2,2 1170 | 100001169,0,1,45,2,135332,1,1 1171 | 100001170,0,0,41,1,134200,2,2 1172 | 100001171,0,0,36,1,177171,2,2 1173 | 100001172,0,0,38,1,115964,0,2 1174 | 100001173,0,0,38,1,136871,0,1 1175 | 100001174,0,1,53,2,159559,2,2 1176 | 100001175,0,0,35,1,113878,1,2 1177 | 100001176,0,0,48,1,171203,2,2 1178 | 100001177,0,0,36,1,102180,1,2 1179 | 100001178,0,1,22,1,116844,2,1 1180 | 100001179,0,0,35,1,139844,2,2 1181 | 100001180,0,0,42,1,156431,0,1 1182 | 100001181,0,0,39,1,116137,0,1 1183 | 100001182,0,0,31,1,143081,1,1 1184 | 100001183,0,0,33,1,155870,2,2 1185 | 100001184,0,1,31,1,106924,0,1 1186 | 100001185,0,0,42,1,102133,1,1 1187 | 100001186,0,0,61,2,145227,0,1 1188 | 100001187,0,0,38,1,159500,2,2 1189 | 100001188,0,0,33,1,98498,0,1 1190 | 100001189,0,0,48,1,159714,1,2 1191 | 100001190,0,0,31,1,121852,0,1 1192 | 100001191,0,0,52,1,141271,2,2 1193 | 100001192,0,1,27,1,123213,1,2 1194 | 100001193,0,0,40,1,143723,2,1 1195 | 100001194,0,0,34,1,112538,0,1 1196 | 100001195,0,1,26,1,97932,2,2 1197 | 100001196,0,0,30,1,154003,0,1 1198 | 100001197,0,0,53,1,177179,1,1 1199 | 100001198,0,0,45,1,128052,1,2 1200 | 100001199,0,0,32,1,114617,2,1 1201 | 100001200,0,0,35,1,182822,2,2 1202 | 100001201,0,1,26,1,177215,1,2 1203 | 100001202,0,0,30,1,110929,1,1 1204 | 100001203,0,0,37,1,111821,1,1 1205 | 100001204,0,0,32,1,97306,2,1 1206 | 100001205,0,1,40,1,157231,1,1 1207 | 100001206,0,0,44,1,126906,0,2 1208 | 100001207,0,0,43,1,133243,1,2 1209 | 100001208,0,0,51,1,112250,1,1 1210 | 100001209,0,0,37,1,104349,0,1 1211 | 100001210,0,0,33,1,151421,1,2 1212 | 100001211,0,1,32,1,178081,2,1 1213 | 100001212,0,0,35,1,110181,0,2 1214 | 100001213,0,1,30,1,113012,1,1 1215 | 100001214,0,1,35,1,154585,2,2 1216 | 100001215,0,0,40,1,144704,2,1 1217 | 100001216,0,0,37,1,141632,2,2 1218 | 100001217,0,0,37,1,105055,1,2 1219 | 100001218,0,0,37,1,124597,1,2 1220 | 100001219,0,0,53,1,160164,2,1 1221 | 100001220,0,0,34,1,151754,2,1 1222 | 100001221,0,0,51,1,155551,1,1 1223 | 100001222,0,1,26,1,94986,1,2 1224 | 100001223,0,0,34,1,175800,0,1 1225 | 100001224,0,0,51,1,126246,2,1 1226 | 100001225,0,0,33,1,116261,1,2 1227 | 100001226,0,1,32,1,117796,0,2 1228 | 100001227,0,0,39,1,115363,1,1 1229 | 100001228,0,0,53,1,169076,1,1 1230 | 100001229,0,0,34,1,97474,2,2 1231 | 100001230,0,0,37,1,140341,1,2 1232 | 100001231,0,1,28,1,114503,1,1 1233 | 100001232,0,1,25,1,102937,1,2 1234 | 100001233,0,0,36,1,151781,2,2 1235 | 100001234,0,1,36,1,123133,1,2 1236 | 100001235,0,0,35,1,118879,1,2 1237 | 100001236,0,1,21,1,158683,1,1 1238 | 100001237,0,1,29,1,107514,1,2 1239 | 100001238,0,0,60,2,193879,1,1 1240 | 100001239,0,0,45,1,135043,1,1 1241 | 100001240,0,1,56,2,108559,0,1 1242 | 100001241,0,1,30,1,121038,1,2 1243 | 100001242,0,0,52,1,151947,2,2 1244 | 100001243,0,1,26,1,118820,1,1 1245 | 100001244,0,0,43,1,121517,1,1 1246 | 100001245,0,0,34,1,113572,1,1 1247 | 100001246,0,1,22,1,131170,1,2 1248 | 100001247,0,0,42,1,92430,0,1 1249 | 100001248,0,0,38,1,124554,0,1 1250 | 100001249,0,1,29,1,115988,1,2 1251 | 100001250,0,0,44,1,107301,1,2 1252 | 100001251,0,1,29,1,103767,2,1 1253 | 100001252,0,0,44,1,141493,1,2 1254 | 100001253,0,0,38,1,154339,1,2 1255 | 100001254,0,1,26,1,112369,0,1 1256 | 100001255,0,0,53,1,158193,1,1 1257 | 100001256,0,0,43,1,143734,1,1 1258 | 100001257,0,0,33,1,121890,1,1 1259 | 100001258,0,0,52,1,127609,0,1 1260 | 100001259,0,1,26,1,94650,0,2 1261 | 100001260,0,0,38,1,175504,2,1 1262 | 100001261,0,0,47,1,165495,1,2 1263 | 100001262,0,1,26,1,120389,1,1 1264 | 100001263,0,1,36,1,165340,1,1 1265 | 100001264,0,0,36,1,119804,1,1 1266 | 100001265,0,0,57,2,154344,2,1 1267 | 100001266,0,1,31,1,106266,2,2 1268 | 100001267,0,0,45,1,136129,1,1 1269 | 100001268,0,0,40,1,151914,2,1 1270 | 100001269,0,1,21,1,121473,1,1 1271 | 100001270,0,0,46,1,127147,1,2 1272 | 100001271,0,0,35,1,125387,1,2 1273 | 100001272,0,1,31,1,139490,0,2 1274 | 100001273,0,0,51,1,124990,1,2 1275 | 100001274,0,1,21,1,101471,2,1 1276 | 100001275,0,0,48,1,155708,1,1 1277 | 100001276,0,0,48,1,142345,1,2 1278 | 100001277,0,0,68,2,148675,0,1 1279 | 100001278,0,1,45,2,116484,1,2 1280 | 100001279,0,0,35,1,150237,2,2 1281 | 100001280,0,1,22,1,100273,1,2 1282 | 100001281,0,0,44,1,122292,0,1 1283 | 100001282,0,0,52,1,159216,1,1 1284 | 100001283,0,0,48,1,130082,1,2 1285 | 100001284,0,0,33,1,139547,1,2 1286 | 100001285,0,1,35,1,122895,1,1 1287 | 100001286,0,1,64,2,154549,1,1 1288 | 100001287,0,0,58,1,149315,0,2 1289 | 100001288,0,1,24,1,118101,0,2 1290 | 100001289,0,0,40,1,115831,0,2 1291 | 100001290,0,0,49,1,118571,2,2 1292 | 100001291,0,0,31,1,138906,1,2 1293 | 100001292,0,0,46,1,98520,1,2 1294 | 100001293,0,0,46,1,106576,1,1 1295 | 100001294,0,0,49,1,121592,1,1 1296 | 100001295,0,0,29,1,135605,0,1 1297 | 100001296,0,0,37,1,114552,1,2 1298 | 100001297,0,0,33,1,151339,2,1 1299 | 100001298,0,0,71,2,170387,1,2 1300 | 100001299,0,0,35,1,118288,1,2 1301 | 100001300,0,0,40,1,109992,1,2 1302 | 100001301,1,0,27,1,90654,0,0 1303 | 100001302,1,0,61,2,113290,0,0 1304 | 100001303,1,1,29,1,100093,1,1 1305 | 100001304,1,0,33,1,109489,1,0 1306 | 100001305,1,0,56,2,139427,0,0 1307 | 100001306,1,1,27,1,123411,1,1 1308 | 100001307,1,1,22,1,137925,1,0 1309 | 100001308,1,1,19,1,99119,1,0 1310 | 100001309,1,1,28,1,91084,1,1 1311 | 100001310,1,1,24,1,110137,1,1 1312 | 100001311,1,1,27,1,67041,0,0 1313 | 100001312,1,1,30,1,127299,1,1 1314 | 100001313,1,0,26,1,84555,0,0 1315 | 100001314,1,1,26,1,123895,1,0 1316 | 100001315,1,1,23,1,94324,1,1 1317 | 100001316,1,1,28,1,96062,1,0 1318 | 100001317,1,1,67,3,144843,1,0 1319 | 100001318,1,1,27,1,107485,1,1 1320 | 100001319,1,1,32,1,98573,1,0 1321 | 100001320,1,0,24,1,107462,0,0 1322 | 100001321,1,1,28,1,115809,1,1 1323 | 100001322,1,0,48,2,118749,0,0 1324 | 100001323,1,1,32,1,139112,1,1 1325 | 100001324,1,1,25,1,94075,1,0 1326 | 100001325,1,1,57,2,62002,0,0 1327 | 100001326,1,1,28,1,127262,1,0 1328 | 100001327,1,1,24,1,122846,1,1 1329 | 100001328,1,1,25,1,61907,0,0 1330 | 100001329,1,0,31,1,89287,0,0 1331 | 100001330,1,0,33,1,103696,1,1 1332 | 100001331,1,1,50,2,147603,1,0 1333 | 100001332,1,1,58,2,139229,0,1 1334 | 100001333,1,1,27,1,107932,0,0 1335 | 100001334,1,1,48,2,116235,0,0 1336 | 100001335,1,1,22,1,85974,0,0 1337 | 100001336,1,1,40,1,124001,0,0 1338 | 100001337,1,1,32,1,121428,1,0 1339 | 100001338,1,0,25,1,93233,0,0 1340 | 100001339,1,1,27,1,67965,0,0 1341 | 100001340,1,1,27,1,88001,0,0 1342 | 100001341,1,1,23,1,129112,1,0 1343 | 100001342,1,1,32,1,109324,1,1 1344 | 100001343,1,1,25,1,112785,1,1 1345 | 100001344,1,1,46,2,136735,0,0 1346 | 100001345,1,1,21,1,107779,1,1 1347 | 100001346,1,1,29,1,103526,1,0 1348 | 100001347,1,1,31,1,93171,0,0 1349 | 100001348,1,0,26,1,106559,0,0 1350 | 100001349,1,1,23,1,112728,1,1 1351 | 100001350,1,0,38,1,102855,1,1 1352 | 100001351,1,0,35,1,85381,0,0 1353 | 100001352,1,1,27,1,100762,1,1 1354 | 100001353,1,1,22,1,131445,1,1 1355 | 100001354,1,1,52,2,123194,1,0 1356 | 100001355,1,1,19,1,99519,1,1 1357 | 100001356,1,1,23,1,112853,1,0 1358 | 100001357,1,0,42,1,110509,1,0 1359 | 100001358,1,1,27,1,106446,1,1 1360 | 100001359,1,1,39,2,89665,0,0 1361 | 100001360,1,1,50,2,128233,1,1 1362 | 100001361,1,1,36,1,133615,1,0 1363 | 100001362,1,1,25,1,115833,1,1 1364 | 100001363,1,1,27,1,65560,0,0 1365 | 100001364,1,1,30,1,118642,1,0 1366 | 100001365,1,0,22,1,63635,0,0 1367 | 100001366,1,1,27,1,122649,1,1 1368 | 100001367,1,0,31,1,143321,2,1 1369 | 100001368,1,1,29,1,99556,1,0 1370 | 100001369,1,0,34,1,36760,0,0 1371 | 100001370,1,0,33,1,71935,0,0 1372 | 100001371,1,1,26,1,114977,1,0 1373 | 100001372,1,1,36,1,147691,1,1 1374 | 100001373,1,1,26,1,54296,0,0 1375 | 100001374,1,1,39,1,80014,0,0 1376 | 100001375,1,1,44,2,77887,0,0 1377 | 100001376,1,1,46,2,98517,0,0 1378 | 100001377,1,1,31,1,103012,0,0 1379 | 100001378,1,0,26,1,121377,1,0 1380 | 100001379,1,1,22,1,91359,1,1 1381 | 100001380,1,0,48,2,104833,0,0 1382 | 100001381,1,1,27,1,101209,1,0 1383 | 100001382,1,0,30,1,58207,0,0 1384 | 100001383,1,1,27,1,116708,1,1 1385 | 100001384,1,1,36,1,107471,1,1 1386 | 100001385,1,1,31,1,128495,1,0 1387 | 100001386,1,0,21,1,124468,1,0 1388 | 100001387,1,1,26,1,106922,1,1 1389 | 100001388,1,0,24,1,104291,1,0 1390 | 100001389,1,1,29,1,98204,1,0 1391 | 100001390,1,1,32,1,127071,1,0 1392 | 100001391,1,1,45,2,85115,0,0 1393 | 100001392,1,1,58,2,104013,0,0 1394 | 100001393,1,1,25,1,89863,1,0 1395 | 100001394,1,1,67,3,135300,1,0 1396 | 100001395,1,1,53,2,107861,0,0 1397 | 100001396,1,1,24,1,123994,1,0 1398 | 100001397,1,0,20,1,91270,0,0 1399 | 100001398,1,1,71,3,133245,0,0 1400 | 100001399,1,1,31,1,118594,1,1 1401 | 100001400,1,1,27,1,40606,0,0 1402 | 100001401,1,1,36,1,129304,0,0 1403 | 100001402,1,1,25,1,113118,1,0 1404 | 100001403,1,0,41,1,133131,1,0 1405 | 100001404,1,1,30,1,106876,1,1 1406 | 100001405,1,1,32,1,130870,1,1 1407 | 100001406,1,1,29,1,125621,0,0 1408 | 100001407,1,0,27,1,78923,0,0 1409 | 100001408,1,1,32,1,123983,1,0 1410 | 100001409,1,1,25,1,75184,0,0 1411 | 100001410,1,0,24,1,109693,1,0 1412 | 100001411,1,1,63,2,86273,0,0 1413 | 100001412,1,0,42,2,113190,0,0 1414 | 100001413,1,1,22,1,109274,0,0 1415 | 100001414,1,1,46,2,143489,1,1 1416 | 100001415,1,1,24,1,99570,1,1 1417 | 100001416,1,0,30,1,139468,1,1 1418 | 100001417,1,1,44,2,108627,0,0 1419 | 100001418,1,0,25,1,106355,1,0 1420 | 100001419,1,1,27,1,96952,1,0 1421 | 100001420,1,1,27,1,141502,1,1 1422 | 100001421,1,1,34,1,110420,1,1 1423 | 100001422,1,1,18,1,97741,1,1 1424 | 100001423,1,1,25,1,99583,1,1 1425 | 100001424,1,1,21,1,63698,0,0 1426 | 100001425,1,1,26,1,116688,1,1 1427 | 100001426,1,1,27,1,131542,2,1 1428 | 100001427,1,0,25,1,136055,1,1 1429 | 100001428,1,1,30,1,100195,1,1 1430 | 100001429,1,0,66,3,131001,1,0 1431 | 100001430,1,1,25,1,104062,1,1 1432 | 100001431,1,1,43,2,137689,1,0 1433 | 100001432,1,1,35,1,137705,1,1 1434 | 100001433,1,0,70,3,69915,0,0 1435 | 100001434,1,0,35,1,68731,0,0 1436 | 100001435,1,1,26,1,105726,1,0 1437 | 100001436,1,0,29,1,78078,0,0 1438 | 100001437,1,1,22,1,110835,0,0 1439 | 100001438,1,0,26,1,115531,1,1 1440 | 100001439,1,1,36,1,92723,0,0 1441 | 100001440,1,1,35,1,107509,1,1 1442 | 100001441,1,1,28,1,116763,1,1 1443 | 100001442,1,1,24,1,100733,1,0 1444 | 100001443,1,1,34,1,92652,0,0 1445 | 100001444,1,1,25,1,106987,1,0 1446 | 100001445,1,1,54,2,51882,0,0 1447 | 100001446,1,0,46,2,104751,0,0 1448 | 100001447,1,1,42,1,50947,0,0 1449 | 100001448,1,0,45,2,126986,0,0 1450 | 100001449,1,0,48,2,110223,0,0 1451 | 100001450,1,0,21,1,100591,0,0 1452 | 100001451,1,1,31,1,123257,1,0 1453 | 100001452,1,0,35,1,137736,1,1 1454 | 100001453,1,1,36,1,110221,1,1 1455 | 100001454,1,1,32,1,99703,0,0 1456 | 100001455,1,1,26,1,106667,0,0 1457 | 100001456,1,1,34,1,143319,1,0 1458 | 100001457,1,1,65,2,135557,1,1 1459 | 100001458,1,1,50,2,93390,0,0 1460 | 100001459,1,1,39,1,97577,1,0 1461 | 100001460,1,0,52,2,124196,0,0 1462 | 100001461,1,1,36,1,81136,0,0 1463 | 100001462,1,1,29,1,119439,1,0 1464 | 100001463,1,1,36,1,145231,1,1 1465 | 100001464,1,1,36,1,85623,0,0 1466 | 100001465,1,1,27,1,145373,1,1 1467 | 100001466,1,1,36,1,135896,2,1 1468 | 100001467,1,1,26,1,106470,1,1 1469 | 100001468,1,0,57,2,113334,1,1 1470 | 100001469,1,0,27,1,100560,0,0 1471 | 100001470,1,1,58,2,108442,0,0 1472 | 100001471,1,1,27,1,64472,0,0 1473 | 100001472,1,1,49,2,120207,1,0 1474 | 100001473,1,1,43,2,101680,1,0 1475 | 100001474,1,0,45,2,92342,0,0 1476 | 100001475,1,1,27,1,98611,0,0 1477 | 100001476,1,1,34,1,97613,1,1 1478 | 100001477,1,1,21,1,82298,0,0 1479 | 100001478,1,1,54,2,125302,1,1 1480 | 100001479,1,1,43,2,108725,0,0 1481 | 100001480,1,0,25,1,85569,0,0 1482 | 100001481,1,0,57,2,110372,0,0 1483 | 100001482,1,1,26,1,100511,1,1 1484 | 100001483,1,0,30,1,110455,1,0 1485 | 100001484,1,0,58,2,141993,0,0 1486 | 100001485,1,1,25,1,121789,1,1 1487 | 100001486,1,1,23,1,138967,1,0 1488 | 100001487,1,0,22,1,105230,1,0 1489 | 100001488,1,1,21,1,90656,1,1 1490 | 100001489,1,1,20,1,115445,1,1 1491 | 100001490,1,1,22,1,59955,0,0 1492 | 100001491,1,0,27,1,126268,1,1 1493 | 100001492,1,0,24,1,80830,0,0 1494 | 100001493,1,1,23,1,123625,1,0 1495 | 100001494,1,1,26,1,102543,1,1 1496 | 100001495,1,0,28,1,101948,1,0 1497 | 100001496,1,1,64,3,142280,1,0 1498 | 100001497,1,1,26,1,105434,1,1 1499 | 100001498,1,1,31,1,106115,1,0 1500 | 100001499,1,0,28,1,111057,0,0 1501 | 100001500,1,1,25,1,117758,1,1 1502 | 100001501,1,0,49,2,118396,0,0 1503 | 100001502,1,1,33,1,136260,1,1 1504 | 100001503,1,0,27,1,97192,1,0 1505 | 100001504,1,1,59,2,62101,0,0 1506 | 100001505,1,1,28,1,123497,1,0 1507 | 100001506,1,1,24,1,120326,1,1 1508 | 100001507,1,1,26,1,66645,0,0 1509 | 100001508,1,0,33,1,83429,0,0 1510 | 100001509,1,0,37,1,107539,1,1 1511 | 100001510,1,1,46,2,153880,1,0 1512 | 100001511,1,1,62,2,140178,0,1 1513 | 100001512,1,0,26,1,100402,0,0 1514 | 100001513,1,1,49,2,122158,0,0 1515 | 100001514,1,1,25,1,89331,0,0 1516 | 100001515,1,1,37,1,125359,0,0 1517 | 100001516,1,0,31,1,124110,1,0 1518 | 100001517,1,0,25,1,93526,0,0 1519 | 100001518,1,1,21,1,70170,0,0 1520 | 100001519,1,1,27,1,82357,0,0 1521 | 100001520,1,1,29,1,126745,1,0 1522 | 100001521,1,1,30,1,103326,1,1 1523 | 100001522,1,1,26,1,116048,1,1 1524 | 100001523,1,1,40,2,137115,0,0 1525 | 100001524,1,1,23,1,105365,1,1 1526 | 100001525,1,1,31,1,95911,1,0 1527 | 100001526,1,1,29,1,88669,0,0 1528 | 100001527,1,0,22,1,103776,0,0 1529 | 100001528,1,1,26,1,108864,1,1 1530 | 100001529,1,0,39,1,106037,1,1 1531 | 100001530,1,0,35,1,84851,0,0 1532 | 100001531,1,1,26,1,95748,1,1 1533 | 100001532,1,1,28,1,133616,1,1 1534 | 100001533,1,1,56,2,132752,1,0 1535 | 100001534,1,1,22,1,95712,1,1 1536 | 100001535,1,1,26,1,109063,1,0 1537 | 100001536,1,0,41,1,113521,1,0 1538 | 100001537,1,1,29,1,109380,1,1 1539 | 100001538,1,1,42,2,82558,0,0 1540 | 100001539,1,1,50,2,124777,1,1 1541 | 100001540,1,1,33,1,133542,1,0 1542 | 100001541,1,1,28,1,116492,1,1 1543 | 100001542,1,1,27,1,68834,0,0 1544 | 100001543,1,1,27,1,124023,1,0 1545 | 100001544,1,0,28,1,63882,0,0 1546 | 100001545,1,1,24,1,122492,1,1 1547 | 100001546,1,0,28,1,141453,2,1 1548 | 100001547,1,1,32,1,99327,1,0 1549 | 100001548,1,0,32,1,45590,0,0 1550 | 100001549,1,0,30,1,71167,0,0 1551 | 100001550,1,1,29,1,111992,1,0 1552 | 100001551,1,1,37,1,145140,1,1 1553 | 100001552,1,1,24,1,49672,0,0 1554 | 100001553,1,1,36,1,75536,0,0 1555 | 100001554,1,1,40,2,86720,0,0 1556 | 100001555,1,1,51,2,97729,0,0 1557 | 100001556,1,1,33,1,106808,0,0 1558 | 100001557,1,0,31,1,117971,1,0 1559 | 100001558,1,1,29,1,97731,1,1 1560 | 100001559,1,0,48,2,109196,0,0 1561 | 100001560,1,1,25,1,94905,1,0 1562 | 100001561,1,0,28,1,57480,0,0 1563 | 100001562,1,1,23,1,109175,1,1 1564 | 100001563,1,1,32,1,111174,1,1 1565 | 100001564,1,1,34,1,127255,1,0 1566 | 100001565,1,0,23,1,115499,1,0 1567 | 100001566,1,1,25,1,109499,1,1 1568 | 100001567,1,0,25,1,104696,1,0 1569 | 100001568,1,1,27,1,104467,1,0 1570 | 100001569,1,1,29,1,120157,1,0 1571 | 100001570,1,1,46,2,81200,0,0 1572 | 100001571,1,1,61,2,97558,0,0 1573 | 100001572,1,1,25,1,95914,1,0 1574 | 100001573,1,1,67,3,128053,1,0 1575 | 100001574,1,1,49,2,101734,0,0 1576 | 100001575,1,1,21,1,126009,1,0 1577 | 100001576,1,0,19,1,91232,0,0 1578 | 100001577,1,1,67,3,128343,0,0 1579 | 100001578,1,1,31,1,110040,1,1 1580 | 100001579,1,1,27,1,38247,0,0 1581 | 100001580,1,1,37,1,129027,0,0 1582 | 100001581,1,1,27,1,115026,1,0 1583 | 100001582,1,0,36,1,130323,1,0 1584 | 100001583,1,1,24,1,103181,1,1 1585 | 100001584,1,1,31,1,138307,1,1 1586 | 100001585,1,1,29,1,122564,0,0 1587 | 100001586,1,0,28,1,82351,0,0 1588 | 100001587,1,1,34,1,125351,1,0 1589 | 100001588,1,1,26,1,82940,0,0 1590 | 100001589,1,0,21,1,108029,1,0 1591 | 100001590,1,1,63,2,82734,0,0 1592 | 100001591,1,0,38,2,116816,0,0 1593 | 100001592,1,1,20,1,113472,0,0 1594 | 100001593,1,1,44,2,143343,1,1 1595 | 100001594,1,1,31,1,104074,1,1 1596 | 100001595,1,0,33,1,138525,1,1 1597 | 100001596,1,1,49,2,106960,0,0 1598 | 100001597,1,0,26,1,108323,1,0 1599 | 100001598,1,1,28,1,95784,1,0 1600 | 100001599,1,1,30,1,140673,1,1 1601 | 100001600,1,1,36,1,104235,1,1 1602 | 100001601,1,1,27,1,54041,0,0 1603 | 100001602,0,0,23,0,107961,0,0 1604 | 100001603,0,0,31,0,113757,1,0 1605 | 100001604,1,1,27,1,94884,1,0 1606 | 100001605,1,1,25,1,126041,1,0 1607 | 100001606,1,1,23,1,64952,0,0 1608 | 100001607,0,1,27,1,66764,0,0 1609 | 100001608,1,0,38,1,67861,0,0 1610 | 100001609,0,0,44,1,113516,0,0 1611 | 100001610,1,1,42,1,46109,0,0 1612 | 100001611,1,1,25,1,103651,0,0 1613 | 100001612,0,1,40,1,75043,0,0 1614 | 100001613,1,1,24,1,116473,0,0 1615 | 100001614,1,0,39,1,96614,0,0 1616 | 100001615,0,0,24,0,66447,0,0 1617 | 100001616,1,0,50,1,119068,1,0 1618 | 100001617,1,1,28,1,122973,0,0 1619 | 100001618,1,1,36,1,81609,0,0 1620 | 100001619,0,0,36,1,105519,1,0 1621 | 100001620,1,1,40,1,86649,0,0 1622 | 100001621,1,0,31,0,76384,0,0 1623 | 100001622,0,1,27,1,67136,0,0 1624 | 100001623,1,1,35,1,93155,0,0 1625 | 100001624,0,0,51,1,124183,0,0 1626 | 100001625,1,0,26,0,64860,0,0 1627 | 100001626,0,0,33,1,87232,0,0 1628 | 100001627,1,1,27,1,92304,0,0 1629 | 100001628,0,0,38,1,84254,0,0 1630 | 100001629,1,0,30,0,106696,1,0 1631 | 100001630,0,0,28,0,113212,1,0 1632 | 100001631,0,0,23,0,71076,0,0 1633 | 100001632,1,1,23,1,114270,0,0 1634 | 100001633,1,1,26,1,125538,1,0 1635 | 100001634,1,1,21,1,92442,0,0 1636 | 100001635,1,0,36,1,75297,0,0 1637 | 100001636,1,1,24,1,65707,0,0 1638 | 100001637,0,0,41,1,120387,1,0 1639 | 100001638,0,0,42,1,120946,1,0 1640 | 100001639,0,0,27,0,73265,0,0 1641 | 100001640,0,1,40,1,77481,0,0 1642 | 100001641,1,1,34,1,91282,0,0 1643 | 100001642,0,0,40,1,104405,0,0 1644 | 100001643,0,0,33,1,99646,1,0 1645 | 100001644,1,0,49,1,97791,0,0 1646 | 100001645,0,0,28,0,81878,0,0 1647 | 100001646,1,1,26,1,107908,1,0 1648 | 100001647,1,0,40,1,98608,0,0 1649 | 100001648,0,0,47,1,95228,0,0 1650 | 100001649,1,1,41,1,128163,1,0 1651 | 100001650,1,1,29,1,94325,0,0 1652 | 100001651,1,1,37,1,90815,0,0 1653 | 100001652,0,0,31,0,120719,1,0 1654 | 100001653,0,0,35,1,110159,1,0 1655 | 100001654,0,0,35,1,124490,1,0 1656 | 100001655,1,1,29,1,75161,0,0 1657 | 100001656,1,0,37,1,127206,1,0 1658 | 100001657,0,0,37,1,83660,0,0 1659 | 100001658,1,1,26,1,87400,0,0 1660 | 100001659,1,1,28,1,78942,0,0 1661 | 100001660,1,1,23,1,88452,0,0 1662 | 100001661,0,0,38,1,104128,1,0 1663 | 100001662,1,1,30,1,100313,1,0 1664 | 100001663,1,0,45,1,107387,1,0 1665 | 100001664,0,0,24,0,84355,0,0 1666 | 100001665,1,0,35,1,112723,1,0 1667 | 100001666,1,1,41,1,115892,1,0 1668 | 100001667,0,1,30,1,106597,1,0 1669 | 100001668,1,1,30,1,121327,1,0 1670 | 100001669,1,1,26,1,92559,0,0 1671 | 100001670,1,1,25,1,87537,0,0 1672 | 100001671,1,1,23,1,70569,0,0 1673 | 100001672,1,1,27,1,85294,0,0 1674 | 100001673,1,0,26,0,70905,0,0 1675 | 100001674,0,0,25,0,103716,0,0 1676 | 100001675,0,1,27,1,94947,1,0 1677 | 100001676,1,0,42,1,80116,0,0 1678 | 100001677,0,0,35,1,86492,0,0 1679 | 100001678,1,1,25,1,88672,0,0 1680 | 100001679,1,1,26,1,82984,0,0 1681 | 100001680,0,0,38,1,128100,1,0 1682 | 100001681,1,0,28,0,72869,0,0 1683 | 100001682,0,1,33,1,112227,1,0 1684 | 100001683,1,0,40,1,94674,0,0 1685 | 100001684,1,1,23,1,101003,1,0 1686 | 100001685,1,0,25,0,112924,1,0 1687 | 100001686,1,0,28,0,108645,0,0 1688 | 100001687,0,0,41,1,69415,0,0 1689 | 100001688,1,0,50,1,112204,0,0 1690 | 100001689,1,1,23,1,109700,1,0 1691 | 100001690,1,1,26,1,104484,1,0 1692 | 100001691,1,1,22,1,61239,0,0 1693 | 100001692,0,0,37,1,119602,0,0 1694 | 100001693,1,0,38,1,81014,0,0 1695 | 100001694,1,1,22,1,68165,0,0 1696 | 100001695,1,0,30,0,88652,0,0 1697 | 100001696,0,0,38,1,75705,0,0 1698 | 100001697,1,1,36,1,104189,1,0 1699 | 100001698,0,0,41,1,71603,0,0 1700 | 100001699,1,1,29,1,121914,1,0 1701 | 100001700,1,1,31,1,106637,1,0 1702 | 100001701,1,0,31,0,99800,1,0 1703 | 100001702,1,0,21,0,67629,0,0 1704 | 100001703,0,0,32,0,120354,1,0 1705 | 100001704,1,1,35,1,122110,1,0 1706 | 100001705,0,0,29,0,89170,0,0 1707 | 100001706,1,0,34,1,109195,1,0 1708 | 100001707,1,0,38,1,92392,0,0 1709 | 100001708,1,1,33,1,43805,0,0 1710 | 100001709,1,1,28,1,68389,0,0 1711 | 100001710,1,1,28,1,112521,1,0 1712 | 100001711,0,0,21,0,59255,0,0 1713 | 100001712,1,1,29,1,98612,0,0 1714 | 100001713,1,1,26,1,70649,0,0 1715 | 100001714,1,0,40,1,95228,0,0 1716 | 100001715,1,0,25,0,46865,0,0 1717 | 100001716,0,1,20,1,101688,1,0 1718 | 100001717,1,1,23,1,62618,0,0 1719 | 100001718,1,0,27,0,102531,1,0 1720 | 100001719,1,0,36,1,100737,1,0 1721 | 100001720,1,1,25,1,107321,1,0 1722 | 100001721,1,1,25,1,112879,0,0 1723 | 100001722,1,1,34,1,125372,0,0 1724 | 100001723,1,0,24,0,69419,0,0 1725 | 100001724,1,0,36,1,124759,1,0 1726 | 100001725,1,0,40,1,79076,0,0 1727 | 100001726,0,0,39,1,84779,0,0 1728 | 100001727,1,0,42,1,77393,0,0 1729 | 100001728,0,0,35,1,113187,0,0 1730 | 100001729,1,1,27,1,99100,1,0 1731 | 100001730,0,0,27,0,64954,0,0 1732 | 100001731,1,1,23,1,103244,1,0 1733 | 100001732,1,1,32,1,124975,1,0 1734 | 100001733,0,1,28,1,133582,1,0 1735 | 100001734,0,0,22,0,103519,1,0 1736 | 100001735,0,0,31,0,117813,1,0 1737 | 100001736,1,1,22,1,119902,1,0 1738 | 100001737,0,0,23,0,70783,0,0 1739 | 100001738,1,1,35,1,125470,0,0 1740 | 100001739,1,1,26,1,109782,0,0 1741 | 100001740,1,1,28,1,78322,0,0 1742 | 100001741,0,0,54,1,125517,1,0 1743 | 100001742,1,0,49,1,102463,0,0 1744 | 100001743,1,0,38,1,89309,0,0 1745 | 100001744,1,0,47,1,110287,1,0 1746 | 100001745,1,0,49,1,122391,0,0 1747 | 100001746,1,1,30,1,116399,1,0 1748 | 100001747,1,0,32,0,81907,0,0 1749 | 100001748,1,1,24,1,97909,0,0 1750 | 100001749,1,0,25,0,68051,0,0 1751 | 100001750,0,0,33,1,82414,0,0 1752 | 100001751,1,1,34,1,123089,1,0 1753 | 100001752,1,1,24,1,66537,0,0 1754 | 100001753,1,0,36,1,127926,0,0 1755 | 100001754,1,0,41,1,78963,0,0 1756 | 100001755,0,1,33,1,108694,1,0 1757 | 100001756,1,1,26,1,100892,1,0 1758 | 100001757,1,0,36,1,119560,1,0 1759 | 100001758,1,0,35,1,116176,0,0 1760 | 100001759,0,0,29,0,111854,1,0 1761 | 100001760,1,1,26,1,69831,0,0 1762 | 100001761,0,0,31,0,69375,0,0 1763 | 100001762,0,1,26,1,71310,0,0 1764 | 100001763,0,0,47,1,73913,0,0 1765 | 100001764,0,1,20,1,95492,1,0 1766 | 100001765,0,0,45,1,109329,0,0 1767 | 100001766,0,0,36,1,116027,1,0 1768 | 100001767,0,1,31,1,81987,0,0 1769 | 100001768,1,0,41,1,83481,0,0 1770 | 100001769,1,0,31,0,72361,0,0 1771 | 100001770,1,1,27,1,106625,0,0 1772 | 100001771,1,1,32,1,123707,1,0 1773 | 100001772,1,0,43,1,79353,0,0 1774 | 100001773,1,0,32,0,68347,0,0 1775 | 100001774,1,1,29,1,115832,1,0 1776 | 100001775,0,0,37,1,89946,0,0 1777 | 100001776,1,0,35,1,86319,0,0 1778 | 100001777,1,1,23,1,70963,0,0 1779 | 100001778,0,0,40,1,106120,1,0 1780 | 100001779,1,1,26,1,97856,1,0 1781 | 100001780,0,0,28,0,61824,0,0 1782 | 100001781,1,1,40,1,103907,1,0 1783 | 100001782,1,1,26,1,99953,0,0 1784 | 100001783,1,1,23,1,113413,1,0 1785 | 100001784,0,0,26,0,107091,0,0 1786 | 100001785,0,0,26,0,124783,1,0 1787 | 100001786,1,0,49,1,92281,0,0 1788 | 100001787,1,1,26,1,96219,1,0 1789 | 100001788,1,0,35,1,86221,0,0 1790 | 100001789,1,1,24,1,80962,0,0 1791 | 100001790,1,0,46,1,78754,0,0 1792 | 100001791,0,0,26,0,60026,0,0 1793 | 100001792,0,0,47,1,88157,0,0 1794 | 100001793,0,0,27,0,59881,0,0 1795 | 100001794,0,1,41,1,112818,1,0 1796 | 100001795,1,1,29,1,102250,1,0 1797 | 100001796,1,1,28,1,38980,0,0 1798 | 100001797,1,1,33,1,81807,0,0 1799 | 100001798,1,0,50,1,93148,0,0 1800 | 100001799,1,1,32,1,108032,1,0 1801 | 100001800,0,1,31,1,89335,0,0 1802 | 100001801,0,0,52,1,95639,0,0 1803 | 100001802,0,0,53,1,124902,1,0 1804 | 100001803,1,1,34,1,87801,0,0 1805 | 100001804,1,1,22,1,92538,1,0 1806 | 100001805,0,1,33,1,83687,0,0 1807 | 100001806,0,0,32,0,128310,1,0 1808 | 100001807,1,0,45,1,104754,0,0 1809 | 100001808,0,1,25,1,68222,0,0 1810 | 100001809,1,1,41,1,97006,0,0 1811 | 100001810,1,0,36,1,107372,0,0 1812 | 100001811,1,1,27,1,110511,1,0 1813 | 100001812,0,0,40,1,72193,0,0 1814 | 100001813,1,0,37,1,95972,0,0 1815 | 100001814,0,0,35,1,105556,0,0 1816 | 100001815,0,0,34,1,88701,0,0 1817 | 100001816,1,0,28,0,117710,1,0 1818 | 100001817,1,0,44,1,76057,0,0 1819 | 100001818,0,1,27,1,100392,1,0 1820 | 100001819,1,0,50,1,113308,1,0 1821 | 100001820,1,1,18,1,100924,1,0 1822 | 100001821,1,0,25,0,72188,0,0 1823 | 100001822,1,1,40,1,70431,0,0 1824 | 100001823,0,1,28,1,110103,1,0 1825 | 100001824,1,1,23,1,60825,0,0 1826 | 100001825,1,1,35,1,75100,0,0 1827 | 100001826,1,1,28,1,129327,1,0 1828 | 100001827,1,0,23,0,95541,1,0 1829 | 100001828,0,1,34,1,112777,1,0 1830 | 100001829,1,1,29,1,51496,0,0 1831 | 100001830,1,0,35,1,102781,1,0 1832 | 100001831,1,1,32,1,87494,0,0 1833 | 100001832,1,0,46,1,72728,0,0 1834 | 100001833,1,1,27,1,114775,1,0 1835 | 100001834,1,1,25,1,124359,1,0 1836 | 100001835,1,1,27,1,101620,0,0 1837 | 100001836,1,1,24,1,87964,0,0 1838 | 100001837,1,0,33,0,69523,0,0 1839 | 100001838,1,1,24,1,109486,1,0 1840 | 100001839,1,0,28,0,77206,0,0 1841 | 100001840,1,0,35,1,53608,0,0 1842 | 100001841,1,1,30,1,118677,1,0 1843 | 100001842,0,0,43,1,116512,1,0 1844 | 100001843,0,1,21,1,114756,0,0 1845 | 100001844,1,1,24,1,65852,0,0 1846 | 100001845,0,0,34,1,75626,0,0 1847 | 100001846,1,1,26,1,127455,1,0 1848 | 100001847,0,0,37,1,107073,1,0 1849 | 100001848,1,1,32,1,82196,0,0 1850 | 100001849,1,1,33,1,106741,0,0 1851 | 100001850,0,1,28,1,94518,1,0 1852 | 100001851,1,1,30,1,114430,1,0 1853 | 100001852,1,1,26,1,57165,0,0 1854 | 100001853,1,0,25,0,109610,0,0 1855 | 100001854,0,0,33,0,113619,1,0 1856 | 100001855,1,1,30,1,93854,1,0 1857 | 100001856,1,1,26,1,129022,1,0 1858 | 100001857,0,1,23,1,66804,0,0 1859 | 100001858,0,1,25,1,62689,0,0 1860 | 100001859,1,0,40,1,67619,0,0 1861 | 100001860,0,0,46,1,113495,0,0 1862 | 100001861,1,1,43,1,48632,0,0 1863 | 100001862,1,1,22,1,107394,0,0 1864 | 100001863,0,1,39,1,72385,0,0 1865 | 100001864,1,1,27,1,115934,0,0 1866 | 100001865,0,0,40,1,93183,0,0 1867 | 100001866,0,0,24,0,63506,0,0 1868 | 100001867,1,0,52,1,113619,1,0 1869 | 100001868,1,1,30,1,121399,0,0 1870 | 100001869,1,1,34,1,78281,0,0 1871 | 100001870,1,0,38,1,103926,1,0 1872 | 100001871,0,1,39,1,89097,0,0 1873 | 100001872,1,0,29,0,80852,0,0 1874 | 100001873,0,1,25,1,65207,0,0 1875 | 100001874,1,1,35,1,93495,0,0 1876 | 100001875,0,0,53,1,121970,0,0 1877 | 100001876,0,0,26,0,62027,0,0 1878 | 100001877,0,0,33,1,88602,0,0 1879 | 100001878,0,1,29,1,89914,0,0 1880 | 100001879,0,0,39,1,83342,0,0 1881 | 100001880,0,0,29,0,103439,1,0 1882 | 100001881,0,0,26,0,115451,1,0 1883 | 100001882,0,0,24,0,68250,0,0 1884 | 100001883,1,1,21,1,113630,0,0 1885 | 100001884,1,1,26,1,125880,1,0 1886 | 100001885,1,1,20,1,91177,0,0 1887 | 100001886,1,0,35,1,73266,0,0 1888 | 100001887,1,1,24,1,69021,0,0 1889 | 100001888,1,0,40,1,122593,1,0 1890 | 100001889,1,0,44,1,122180,1,0 1891 | 100001890,0,0,29,0,75160,0,0 1892 | 100001891,1,1,39,1,81973,0,0 1893 | 100001892,1,1,35,1,92194,0,0 1894 | 100001893,0,0,42,1,107380,0,0 1895 | 100001894,1,0,32,1,98023,1,0 1896 | 100001895,0,0,48,1,94868,0,0 1897 | 100001896,0,0,26,0,83442,0,0 1898 | 100001897,1,1,26,1,109887,1,0 1899 | 100001898,0,0,42,1,98876,0,0 1900 | 100001899,0,0,48,1,94962,0,0 1901 | 100001900,1,1,42,1,130740,1,0 1902 | 100001901,1,1,27,1,94095,0,0 1903 | 100001902,1,1,37,1,95071,0,0 1904 | 100001903,0,0,33,0,117308,1,0 1905 | 100001904,0,0,33,1,112093,1,0 1906 | 100001905,1,0,37,1,123893,1,0 1907 | 100001906,1,1,31,1,80189,0,0 1908 | 100001907,0,0,39,1,124089,1,0 1909 | 100001908,1,0,40,1,82673,0,0 1910 | 100001909,1,1,28,1,88858,0,0 1911 | 100001910,1,1,26,1,80540,0,0 1912 | 100001911,1,1,24,1,84228,0,0 1913 | 100001912,0,0,40,1,103963,1,0 1914 | 100001913,1,1,29,1,102397,1,0 1915 | 100001914,0,0,43,1,111563,1,0 1916 | 100001915,0,0,23,0,88260,0,0 1917 | 100001916,1,0,34,1,114767,1,0 1918 | 100001917,1,1,42,1,113275,1,0 1919 | 100001918,1,1,33,1,104755,1,0 1920 | 100001919,1,1,32,1,120525,1,0 1921 | 100001920,1,1,26,1,96082,0,0 1922 | 100001921,1,1,23,1,87227,0,0 1923 | 100001922,1,1,26,1,69333,0,0 1924 | 100001923,1,1,27,1,87777,0,0 1925 | 100001924,0,0,24,0,70978,0,0 1926 | 100001925,0,0,27,0,104196,0,0 1927 | 100001926,1,1,26,1,97551,1,0 1928 | 100001927,1,0,42,1,78979,0,0 1929 | 100001928,1,0,37,1,82500,0,0 1930 | 100001929,1,1,26,1,86306,0,0 1931 | 100001930,1,1,24,1,78762,0,0 1932 | 100001931,1,0,39,1,125543,1,0 1933 | 100001932,0,0,26,0,70336,0,0 1934 | 100001933,0,1,35,1,112975,1,0 1935 | 100001934,0,0,38,1,96681,0,0 1936 | 100001935,1,1,24,1,98922,1,0 1937 | 100001936,1,0,26,0,109250,1,0 1938 | 100001937,0,0,25,0,108960,0,0 1939 | 100001938,0,0,40,1,71302,0,0 1940 | 100001939,1,0,48,1,107757,0,0 1941 | 100001940,1,1,22,1,111600,1,0 1942 | 100001941,1,1,25,1,102974,1,0 1943 | 100001942,0,1,24,1,63442,0,0 1944 | 100001943,0,0,39,1,118913,0,0 1945 | 100001944,0,0,39,1,80987,0,0 1946 | 100001945,1,1,21,1,68790,0,0 1947 | 100001946,1,0,27,0,86462,0,0 1948 | 100001947,0,0,40,1,76881,0,0 1949 | 100001948,1,1,37,1,107409,1,0 1950 | 100001949,1,0,42,1,69114,0,0 1951 | 100001950,1,1,31,1,119167,1,0 1952 | 100001951,1,1,31,1,102018,1,0 1953 | 100001952,0,0,30,0,97680,1,0 1954 | 100001953,1,0,23,0,65062,0,0 1955 | 100001954,0,0,33,0,118144,1,0 1956 | 100001955,1,1,37,1,124548,1,0 1957 | 100001956,1,0,29,0,85637,0,0 1958 | 100001957,1,0,31,1,113108,1,0 1959 | 100001958,0,0,39,1,93554,0,0 1960 | 100001959,1,1,33,1,42516,0,0 1961 | 100001960,0,1,26,1,72429,0,0 1962 | 100001961,1,1,27,1,110154,1,0 1963 | 100001962,1,0,20,0,60965,0,0 1964 | 100001963,1,1,27,1,100618,0,0 1965 | 100001964,1,1,26,1,71021,0,0 1966 | 100001965,0,0,40,1,94189,0,0 1967 | 100001966,0,0,24,0,44742,0,0 1968 | 100001967,1,1,22,1,103201,1,0 1969 | 100001968,1,1,24,1,62335,0,0 1970 | 100001969,1,0,27,0,103787,1,0 1971 | 100001970,0,0,35,1,99401,1,0 1972 | 100001971,0,1,27,1,105197,1,0 1973 | 100001972,1,1,25,1,115566,0,0 1974 | 100001973,1,1,34,1,125843,0,0 1975 | 100001974,1,0,24,0,67936,0,0 1976 | 100001975,1,0,34,1,120863,1,0 1977 | 100001976,0,0,42,1,77317,0,0 1978 | 100001977,1,0,38,1,84653,0,0 1979 | 100001978,0,0,42,1,81606,0,0 1980 | 100001979,1,0,35,1,113380,0,0 1981 | 100001980,1,1,27,1,100644,1,0 1982 | 100001981,0,0,25,0,64037,0,0 1983 | 100001982,1,1,23,1,101350,1,0 1984 | 100001983,1,1,34,1,126334,1,0 1985 | 100001984,1,1,28,1,130877,1,0 1986 | 100001985,0,0,21,0,103470,1,0 1987 | 100001986,1,0,32,0,114588,1,0 1988 | 100001987,1,1,21,1,120682,1,0 1989 | 100001988,0,0,25,0,66628,0,0 1990 | 100001989,1,1,35,1,124447,0,0 1991 | 100001990,1,1,25,1,106567,0,0 1992 | 100001991,1,1,31,1,78758,0,0 1993 | 100001992,0,0,54,1,128537,1,0 1994 | 100001993,1,0,51,1,101074,0,0 1995 | 100001994,1,0,38,1,87670,0,0 1996 | 100001995,0,0,45,1,113414,1,0 1997 | 100001996,1,0,47,1,123525,0,0 1998 | 100001997,1,1,27,1,117744,1,0 1999 | 100001998,0,0,31,0,86400,0,0 2000 | 100001999,1,1,24,1,97968,0,0 2001 | 100002000,0,0,25,0,68416,0,0 2002 | --------------------------------------------------------------------------------