diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6bbf507 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +.ipynb_checkpoints/Untitled-checkpoint.ipynb diff --git a/Untitled.ipynb b/Untitled.ipynb index bc2231e..ad98cb8 100644 --- a/Untitled.ipynb +++ b/Untitled.ipynb @@ -1,7362 +1,7305 @@ { "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np \n", "data = np.load(\"data.npz\", allow_pickle=True)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['target_labels', 'target_CMs', 'database_labels', 'database_CMs']" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.files" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "8\n", "7\n", "12\n", "17\n", "13\n", "13\n", "15\n", "16\n", "15\n", "15\n", "15\n", "17\n", "17\n", "14\n", "13\n", "17\n", "15\n", "15\n", "15\n", "14\n", "11\n", "13\n", "15\n", "17\n", "13\n", "11\n", "13\n", "11\n", "17\n", "13\n", "13\n", "12\n", "13\n", "13\n", "15\n", "12\n", "15\n", "13\n", "13\n", "13\n", "15\n", "15\n", "15\n", "14\n", "15\n", "17\n", "12\n", "13\n", "17\n", "15\n", "15\n", "13\n", "17\n", "15\n", "17\n", "12\n", "15\n", "12\n", "15\n", "17\n", "13\n", "11\n", "13\n", "11\n", "15\n", "15\n", "15\n", "18\n", "12\n", "17\n", "15\n", "11\n", "15\n", "11\n", "17\n", "13\n", "17\n", "13\n", "15\n", "14\n", "18\n", "13\n", "11\n", "15\n", "15\n", "11\n", "11\n", "15\n", "15\n", "15\n", "10\n", "13\n", "16\n", "15\n", "15\n", "11\n", "15\n", "11\n", "15\n", "15\n", "11\n", "10\n", "17\n", "15\n", "14\n", "15\n", "13\n", "15\n", "13\n", "15\n", "13\n", "15\n", "8\n", "8\n", "13\n", "13\n", "11\n", "18\n", "18\n", "11\n", "13\n", "9\n", "11\n", "11\n", "10\n", "15\n", "13\n", "9\n", "11\n", "11\n", "16\n", "15\n", "13\n", "15\n", "13\n", "12\n", "15\n", "13\n", "7\n", "9\n", "7\n", "11\n", "14\n", "11\n", "9\n", "11\n", "11\n", "11\n", "9\n", "13\n", "15\n", "13\n", "13\n", "13\n", "18\n", "11\n", "11\n", "10\n", "13\n", "13\n", "11\n", "12\n", "11\n", "12\n", "11\n", "11\n", "18\n", "11\n", "12\n", "11\n", "11\n", "14\n", "12\n", "10\n", "11\n", "16\n", "11\n", "10\n", "10\n", "10\n", "12\n", "16\n", "14\n", "12\n", "18\n", "18\n", "18\n", "16\n", "22\n", "20\n", "10\n", "16\n", "22\n", "18\n", "22\n", "18\n", "14\n", "22\n", "19\n", "18\n", "18\n", "10\n", "18\n", "14\n", "20\n", "16\n", "20\n", "16\n", "22\n", "22\n", "17\n", "18\n", "8\n", "18\n", "14\n", "22\n", "18\n", "22\n", "20\n", "20\n", "22\n", "22\n", "19\n", "10\n", "9\n", "22\n", "18\n", "22\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "8\n", "19\n", "17\n", "17\n", "17\n", "17\n", "17\n", "19\n", "19\n", "19\n", "19\n", "8\n", "19\n", "15\n", "15\n", "17\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "9\n", "17\n", "17\n", "19\n", "17\n", "19\n", "19\n", "19\n", "15\n", "15\n", "19\n", "15\n", "19\n", "19\n", "20\n", "15\n", "18\n", "16\n", "18\n", "18\n", "18\n", "20\n", "13\n", "20\n", "16\n", "16\n", "20\n", "15\n", "22\n", "12\n", "18\n", "16\n", "18\n", "11\n", "16\n", "20\n", "18\n", "16\n", "12\n", "15\n", "16\n", "20\n", "20\n", "18\n", "13\n", "20\n", "18\n", "22\n", "18\n", "16\n", "14\n", "17\n", "19\n", "20\n", "18\n", "15\n", "16\n", "14\n", "18\n", "22\n", "20\n", "18\n", "22\n", "20\n", "17\n", "20\n", "11\n", "18\n", "22\n", "20\n", "18\n", "22\n", "11\n", "15\n", "15\n", "11\n", "17\n", "6\n", "15\n", "17\n", "9\n", "17\n", "11\n", "19\n", "19\n", "17\n", "19\n", "17\n", "11\n", "13\n", "19\n", "17\n", "19\n", "13\n", "21\n", "21\n", "19\n", "13\n", "17\n", "15\n", "11\n", "17\n", "19\n", "17\n", "15\n", "21\n", "19\n", "13\n", "21\n", "21\n", "19\n", "9\n", "15\n", "17\n", "17\n", "15\n", "17\n", "15\n", "17\n", "15\n", "19\n", "17\n", "15\n", "19\n", "13\n", "15\n", "17\n", "19\n", "17\n", "19\n", "21\n", "19\n", "17\n", "15\n", "19\n", "19\n", "20\n", "20\n", "17\n", "20\n", "18\n", "16\n", "20\n", "20\n", "13\n", "18\n", "14\n", "16\n", "20\n", "20\n", "17\n", "16\n", "20\n", "20\n", "13\n", "15\n", "19\n", "15\n", "19\n", "19\n", "22\n", "18\n", "15\n", "16\n", "14\n", "20\n", "13\n", "18\n", "22\n", "20\n", "18\n", "16\n", "18\n", "16\n", "17\n", "21\n", "20\n", "15\n", "20\n", "18\n", "20\n", "22\n", "20\n", "18\n", "20\n", "18\n", "20\n", "17\n", "10\n", "14\n", "18\n", "22\n", "22\n", "20\n", "18\n", "21\n", "15\n", "13\n", "17\n", "17\n", "10\n", "17\n", "17\n", "21\n", "21\n", "19\n", "19\n", "17\n", "21\n", "19\n", "21\n", "12\n", "15\n", "17\n", "21\n", "17\n", "19\n", "19\n", "17\n", "17\n", "19\n", "21\n", "14\n", "19\n", "19\n", "17\n", "19\n", "14\n", "14\n", "15\n", "15\n", "13\n", "17\n", "14\n", "15\n", "19\n", "17\n", "19\n", "17\n", "15\n", "17\n", "21\n", "17\n", "19\n", "14\n", "19\n", "17\n", "15\n", "19\n", "19\n", "20\n", "18\n", "16\n", "19\n", "15\n", "14\n", "20\n", "20\n", "16\n", "14\n", "20\n", "17\n", "18\n", "20\n", "15\n", "13\n", "14\n", "17\n", "15\n", "13\n", "15\n", "19\n", "17\n", "17\n", "20\n", "20\n", "19\n", "14\n", "19\n", "20\n", "20\n", "20\n", "20\n", "19\n", "19\n", "19\n", "19\n", "19\n", "14\n", "19\n", "19\n", "19\n", "20\n", "20\n", "20\n", "19\n", "19\n", "17\n", "19\n", "7\n", "15\n", "18\n", "16\n", "14\n", "20\n", "18\n", "16\n", "18\n", "16\n", "22\n", "20\n", "14\n", "17\n", "18\n", "16\n", "14\n", "20\n", "20\n", "18\n", "22\n", "20\n", "18\n", "12\n", "22\n", "19\n", "22\n", "22\n", "20\n", "18\n", "20\n", "22\n", "20\n", "18\n", "10\n", "20\n", "18\n", "19\n", "21\n", "15\n", "21\n", "15\n", "19\n", "19\n", "21\n", "16\n", "21\n", "17\n", "21\n", "19\n", "17\n", "21\n", "19\n", "17\n", "19\n", "15\n", "10\n", "21\n", "17\n", "21\n", "17\n", "19\n", "21\n", "19\n", "19\n", "19\n", "19\n", "8\n", "17\n", "13\n", "15\n", "13\n", "19\n", "19\n", "17\n", "19\n", "17\n", "21\n", "14\n", "17\n", "15\n", "19\n", "17\n", "19\n", "19\n", "17\n", "19\n", "17\n", "15\n", "10\n", "12\n", "12\n", "14\n", "14\n", "17\n", "17\n", "17\n", "15\n", "17\n", "17\n", "14\n", "17\n", "17\n", "15\n", "13\n", "19\n", "17\n", "15\n", "17\n", "13\n", "15\n", "10\n", "10\n", "13\n", "17\n", "15\n", "19\n", "19\n", "17\n", "15\n", "12\n", "14\n", "19\n", "15\n", "19\n", "14\n", "12\n", "14\n", "14\n", "16\n", "18\n", "18\n", "16\n", "17\n", "16\n", "18\n", "17\n", "17\n", "18\n", "18\n", "16\n", "19\n", "19\n", "15\n", "18\n", "16\n", "18\n", "17\n", "19\n", "18\n", "16\n", "20\n", "18\n", "16\n", "19\n", "15\n", "12\n", "15\n", "18\n", "15\n", "17\n", "15\n", "15\n", "17\n", "20\n", "18\n", "20\n", "12\n", "18\n", "18\n", "15\n", "15\n", "15\n", "17\n", "17\n", "15\n", "15\n", "19\n", "8\n", "19\n", "19\n", "17\n", "17\n", "19\n", "15\n", "15\n", "15\n", "15\n", "20\n", "16\n", "18\n", "16\n", "19\n", "19\n", "15\n", "19\n", "15\n", "20\n", "20\n", "20\n", "12\n", "19\n", "19\n", "19\n", "20\n", "20\n", "16\n", "18\n", "17\n", "20\n", "18\n", "16\n", "17\n", "13\n", "15\n", "15\n", "19\n", "19\n", "19\n", "15\n", "17\n", "19\n", "12\n", "14\n", "19\n", "19\n", "15\n", "20\n", "19\n", "19\n", "20\n", "20\n", "20\n", "17\n", "16\n", "20\n", "19\n", "19\n", "19\n", "19\n", "19\n", "19\n", "19\n", "20\n", "20\n", "15\n", "15\n", "19\n", "20\n", "19\n", "19\n", "19\n", "22\n", "20\n", "20\n", "18\n", "14\n", "18\n", "16\n", "13\n", "20\n", "18\n", "20\n", "22\n", "20\n", "18\n", "20\n", "12\n", "18\n", "14\n", "20\n", "13\n", "18\n", "16\n", "18\n", "16\n", "20\n", "22\n", "16\n", "20\n", "18\n", "16\n", "14\n", "13\n", "20\n", "22\n", "20\n", "18\n", "20\n", "14\n", "18\n", "21\n", "17\n", "21\n", "15\n", "15\n", "17\n", "17\n", "15\n", "15\n", "14\n", "15\n", "21\n", "15\n", "21\n", "17\n", "21\n", "15\n", "17\n", "13\n", "19\n", "16\n", "15\n", "19\n", "15\n", "21\n", "21\n", "17\n", "17\n", "19\n", "13\n", "21\n", "14\n", "17\n", "21\n", "17\n", "15\n", "17\n", "21\n", "19\n", "17\n", "15\n", "19\n", "10\n", "12\n", "17\n", "17\n", "15\n", "19\n", "17\n", "19\n", "17\n", "21\n", "14\n", "17\n", "11\n", "14\n", "12\n", "14\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "19\n", "14\n", "17\n", "17\n", "17\n", "15\n", "17\n", "19\n", "17\n", "15\n", "17\n", "19\n", "17\n", "17\n", "19\n", "19\n", "15\n", "17\n", "15\n", "15\n", "14\n", "14\n", "14\n", "14\n", "14\n", "14\n", "13\n", "17\n", "12\n", "15\n", "13\n", "17\n", "15\n", "17\n", "10\n", "17\n", "15\n", "17\n", "17\n", "17\n", "13\n", "15\n", "17\n", "15\n", "17\n", "9\n", "19\n", "17\n", "15\n", "17\n", "15\n", "17\n", "12\n", "12\n", "14\n", "14\n", "14\n", "14\n", "14\n", "14\n", "16\n", "18\n", "16\n", "19\n", "18\n", "17\n", "17\n", "12\n", "17\n", "17\n", "16\n", "18\n", "17\n", "18\n", "16\n", "19\n", "17\n", "17\n", "9\n", "17\n", "15\n", "18\n", "18\n", "17\n", "17\n", "18\n", "16\n", "19\n", "17\n", "11\n", "11\n", "18\n", "17\n", "18\n", "15\n", "17\n", "17\n", "18\n", "16\n", "18\n", "17\n", "9\n", "16\n", "18\n", "16\n", "18\n", "16\n", "15\n", "13\n", "17\n", "15\n", "16\n", "13\n", "19\n", "16\n", "18\n", "19\n", "17\n", "14\n", "20\n", "16\n", "16\n", "16\n", "11\n", "18\n", "17\n", "18\n", "18\n", "13\n", "17\n", "15\n", "15\n", "13\n", "19\n", "17\n", "19\n", "17\n", "19\n", "19\n", "13\n", "19\n", "17\n", "17\n", "17\n", "15\n", "13\n", "17\n", "15\n", "17\n", "15\n", "19\n", "17\n", "17\n", "17\n", "15\n", "15\n", "13\n", "15\n", "18\n", "16\n", "19\n", "11\n", "17\n", "19\n", "20\n", "16\n", "14\n", "13\n", "12\n", "12\n", "12\n", "14\n", "14\n", "18\n", "19\n", "16\n", "16\n", "16\n", "13\n", "18\n", "18\n", "19\n", "15\n", "11\n", "15\n", "19\n", "15\n", "15\n", "13\n", "13\n", "17\n", "19\n", "11\n", "15\n", "10\n", "12\n", "13\n", "19\n", "17\n", "12\n", "6\n", "11\n", "13\n", "10\n", "10\n", "12\n", "10\n", "17\n", "15\n", "10\n", "13\n", "19\n", "17\n", "13\n", "17\n", "12\n", "10\n", "12\n", "10\n", "19\n", "20\n", "16\n", "19\n", "15\n", "11\n", "15\n", "19\n", "15\n", "19\n", "20\n", "16\n", "14\n", "12\n", "18\n", "16\n", "9\n", "18\n", "17\n", "18\n", "16\n", "19\n", "15\n", "13\n", "11\n", "17\n", "15\n", "15\n", "17\n", "17\n", "15\n", "15\n", "18\n", "16\n", "16\n", "14\n", "18\n", "16\n", "17\n", "18\n", "16\n", "18\n", "13\n", "19\n", "16\n", "14\n", "16\n", "14\n", "18\n", "11\n", "16\n", "18\n", "16\n", "16\n", "14\n", "19\n", "20\n", "18\n", "21\n", "11\n", "13\n", "9\n", "13\n", "13\n", "11\n", "13\n", "19\n", "19\n", "19\n", "17\n", "19\n", "11\n", "13\n", "15\n", "13\n", "11\n", "19\n", "17\n", "19\n", "19\n", "17\n", "10\n", "13\n", "10\n", "19\n", "15\n", "19\n", "15\n", "19\n", "19\n", "17\n", "19\n", "19\n", "13\n", "11\n", "17\n", "12\n", "12\n", "12\n", "13\n", "12\n", "13\n", "17\n", "15\n", "19\n", "15\n", "15\n", "17\n", "17\n", "17\n", "17\n", "13\n", "15\n", "15\n", "13\n", "15\n", "15\n", "17\n", "13\n", "13\n", "11\n", "17\n", "15\n", "12\n", "14\n", "12\n", "12\n", "13\n", "10\n", "17\n", "14\n", "17\n", "13\n", "15\n", "15\n", "17\n", "17\n", "15\n", "11\n", "13\n", "11\n", "19\n", "15\n", "13\n", "15\n", "13\n", "13\n", "11\n", "17\n", "9\n", "15\n", "15\n", "15\n", "19\n", "15\n", "15\n", "15\n", "13\n", "13\n", "13\n", "11\n", "15\n", "13\n", "15\n", "13\n", "17\n", "19\n", "17\n", "17\n", "17\n", "17\n", "16\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "13\n", "15\n", "15\n", "17\n", "18\n", "13\n", "17\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "16\n", "15\n", "17\n", "15\n", "17\n", "15\n", "17\n", "19\n", "15\n", "15\n", "15\n", "7\n", "13\n", "17\n", "15\n", "15\n", "17\n", "17\n", "17\n", "15\n", "15\n", "17\n", "17\n", "12\n", "15\n", "17\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "12\n", "15\n", "15\n", "15\n", "13\n", "15\n", "11\n", "13\n", "15\n", "17\n", "15\n", "15\n", "15\n", "13\n", "15\n", "15\n", "15\n", "13\n", "15\n", "15\n", "13\n", "15\n", "15\n", "13\n", "17\n", "13\n", "15\n", "15\n", "17\n", "15\n", "17\n", "17\n", "15\n", "15\n", "17\n", "17\n", "17\n", "17\n", "15\n", "17\n", "17\n", "17\n", "17\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "15\n", "19\n", "19\n", "17\n", "17\n", "15\n", "18\n", "17\n", "17\n", "15\n", "17\n", "15\n", "17\n", "19\n", "17\n", "15\n", "17\n", "15\n", "15\n", "15\n", "17\n", "15\n", "15\n", "19\n", "19\n", "19\n", "15\n", "17\n", "15\n", "19\n", "19\n", "17\n", "17\n", "19\n", "17\n", "17\n", "15\n", "13\n", "15\n", "5\n", "13\n", "15\n", "15\n", "19\n", "13\n", "13\n", "15\n", "17\n", "15\n", "13\n", "15\n", "13\n", "13\n", "19\n", "17\n", "17\n", "15\n", "17\n", "15\n", "19\n", "17\n", "17\n", "15\n", "15\n", "19\n", "19\n", "17\n", "15\n", "15\n", "15\n", "17\n", "15\n", "15\n", "11\n", "15\n", "15\n", "17\n", "19\n", "17\n", "17\n", "17\n", "17\n", "17\n", "19\n", "17\n", "17\n", "17\n", "19\n", "11\n", "19\n", "17\n", "15\n", "17\n", "17\n", "15\n", "12\n", "15\n", "15\n", "17\n", "19\n", "13\n", "17\n", "19\n", "19\n", "19\n", "17\n", "10\n", "19\n", "13\n", "13\n", "13\n", "15\n", "11\n", "17\n", "15\n", "17\n", "15\n", "12\n", "17\n", "15\n", "15\n", "15\n", "15\n", "19\n", "15\n", "15\n", "15\n", "15\n", "18\n", "17\n", "19\n", "17\n", "13\n", "11\n", "13\n", "13\n", "17\n", "21\n", "17\n", "15\n", "15\n", "13\n", "15\n", "17\n", "15\n", "15\n", "19\n", "17\n", "13\n", "15\n", "13\n", "10\n", "13\n", "15\n", "17\n", "17\n", "15\n", "13\n", "17\n", "15\n", "15\n", "17\n", "16\n", "21\n", "19\n", "15\n", "15\n", "17\n", "17\n", "13\n", "17\n", "15\n", "13\n", "10\n", "15\n", "19\n", "15\n", "15\n", "17\n", "17\n", "15\n", "17\n", "13\n", "17\n", "14\n", "15\n", "19\n", "17\n", "17\n", "15\n", "19\n", "17\n", "15\n", "19\n", "17\n", "12\n", "15\n", "17\n", "17\n", "19\n", "15\n", "17\n", "17\n", "15\n", "15\n", "17\n", "14\n", "15\n", "15\n", "15\n", "19\n", "17\n", "15\n", "15\n", "17\n", "17\n", "13\n", "14\n", "17\n", "13\n", "15\n", "17\n", "15\n", "13\n", "17\n", "17\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "17\n", "15\n", "19\n", "15\n", "15\n", "17\n", "15\n", "19\n", "17\n", "17\n", "19\n", "17\n", "17\n", "17\n", "17\n", "15\n", "13\n", "18\n", "15\n", "13\n", "17\n", "15\n", "17\n", "15\n", "17\n", "13\n", "15\n", "21\n", "9\n", "14\n", "17\n", "15\n", "13\n", "15\n", "13\n", "17\n", "15\n", "17\n", "15\n", "17\n", "12\n", "17\n", "17\n", "15\n", "17\n", "17\n", "15\n", "15\n", "17\n", "15\n", "15\n", "12\n", "19\n", "15\n", "17\n", "15\n", "17\n", "17\n", "17\n", "17\n", "15\n", "17\n", "17\n", "15\n", "15\n", "19\n", "13\n", "13\n", "17\n", "15\n", "19\n", "17\n", "17\n", "17\n", "13\n", "17\n", "11\n", "21\n", "13\n", "17\n", "15\n", "15\n", "17\n", "15\n", "13\n", "15\n", "13\n", "13\n", "15\n", "19\n", "19\n", "15\n", "17\n", "17\n", "15\n", "17\n", "15\n", "17\n", "17\n", "17\n", "17\n", "17\n", "15\n", "15\n", "15\n", "17\n", "17\n", "15\n", "17\n", "17\n", "13\n", "15\n", "15\n", "15\n", "11\n", "13\n", "15\n", "17\n", "13\n", "15\n", "19\n", "15\n", "19\n", "17\n", "19\n", "13\n", "19\n", "19\n", "17\n", "15\n", "19\n", "19\n", "17\n", "15\n", "13\n", "11\n", "19\n", "19\n", "17\n", "12\n", "18\n", "15\n", "15\n", "15\n", "13\n", "13\n", "17\n", "15\n", "17\n", "19\n", "21\n", "17\n", "21\n", "19\n", "17\n", "19\n", "15\n", "13\n", "11\n", "19\n", "17\n", "15\n", "17\n", "15\n", "19\n", "15\n", "13\n", "17\n", "17\n", "19\n", "17\n", "19\n", "13\n", "13\n", "15\n", "19\n", "17\n", "19\n", "13\n", "17\n", "15\n", "15\n", "15\n", "13\n", "17\n", "13\n", "15\n", "17\n", "19\n", "19\n", "17\n", "17\n", "15\n", "13\n", "13\n", "17\n", "11\n", "15\n", "15\n", "17\n", "17\n", "19\n", "15\n", "13\n", "11\n", "19\n", "17\n", "17\n", "15\n", "17\n", "13\n", "15\n", "17\n", "19\n", "19\n", "17\n", "13\n", "15\n", "17\n", "15\n", "15\n", "13\n", "15\n", "19\n", "15\n", "17\n", "17\n", "15\n", "15\n", "13\n", "13\n", "11\n", "15\n", "17\n", "19\n", "17\n", "17\n", "17\n", "19\n", "17\n", "15\n", "19\n", "17\n", "15\n", "17\n", "17\n", "19\n", "19\n", "15\n", "15\n", "13\n", "17\n", "19\n", "19\n", "17\n", "15\n", "17\n", "17\n", "19\n", "15\n", "19\n", "21\n", "18\n", "17\n", "19\n", "15\n", "19\n", "19\n", "19\n", "17\n", "13\n", "15\n", "15\n", "13\n", "15\n", "19\n", "13\n", "15\n", "13\n", "11\n", "17\n", "17\n", "17\n", "17\n", "12\n", "19\n", "17\n", "13\n", "19\n", "15\n", "15\n", "17\n", "17\n", "19\n", "15\n", "14\n", "21\n", "13\n", "15\n", "19\n", "15\n", "15\n", "13\n", "15\n", "15\n", "13\n", "14\n", "17\n", "19\n", "15\n", "19\n", "19\n", "19\n", "17\n", "17\n", "17\n", "15\n", "14\n", "17\n", "15\n", "19\n", "19\n", "17\n", "17\n", "15\n", "13\n", "19\n", "17\n", "17\n", "17\n", "19\n", "17\n", "15\n", "17\n", "15\n", "15\n", "19\n", "15\n", "13\n", "16\n", "17\n", "17\n", "17\n", "15\n", "17\n", "21\n", "19\n", "13\n", "19\n", "17\n", "17\n", "17\n", "17\n", "17\n", "21\n", "19\n", "19\n", "17\n", "19\n", "17\n", "17\n", "11\n", "17\n", "21\n", "21\n", "19\n", "17\n", "15\n", "21\n", "19\n", "19\n", "15\n", "15\n", "12\n", "17\n", "15\n", "17\n", "15\n", "13\n", "15\n", "13\n", "17\n", "17\n", "15\n", "18\n", "19\n", "13\n", "11\n", "17\n", "15\n", "15\n", "19\n", "19\n", "17\n", "19\n", "16\n", "17\n", "19\n", "21\n", "17\n", "19\n", "19\n", "17\n", "17\n", "17\n", "17\n", "14\n", "21\n", "19\n", "17\n", "17\n", "21\n", "19\n", "21\n", "19\n", "19\n", "21\n", "12\n", "19\n", "17\n", "17\n", "15\n", "19\n", "15\n", "19\n", "17\n", "19\n", "17\n", "10\n", "21\n", "21\n", "19\n", "17\n", "15\n", "19\n", "21\n", "19\n", "19\n", "21\n", "12\n", "19\n", "19\n", "19\n", "21\n", "19\n", "21\n", "17\n", "21\n", "17\n", "19\n", "12\n", "19\n", "21\n", "15\n", "15\n", "15\n", "15\n", "15\n", "19\n", "17\n", "17\n", "14\n", "13\n", "13\n", "15\n", "15\n", "17\n", "13\n", "17\n", "21\n", "17\n", "13\n", "13\n", "12\n", "13\n", "15\n", "13\n", "17\n", "13\n", "17\n", "17\n", "15\n", "15\n", "21\n", "17\n", "13\n", "17\n", "15\n", "17\n", "15\n", "13\n", "17\n", "15\n", "17\n", "13\n", "15\n", "19\n", "15\n", "17\n", "15\n", "19\n", "19\n", "17\n", "17\n", "15\n", "19\n", "20\n", "17\n", "15\n", "19\n", "17\n", "15\n", "19\n", "17\n", "13\n", "11\n", "15\n", "13\n", "13\n", "15\n", "21\n", "21\n", "17\n", "17\n", "15\n", "21\n", "19\n", "17\n", "16\n", "19\n", "19\n", "19\n", "17\n", "19\n", "19\n", "17\n", "15\n", "21\n", "19\n", "12\n", "17\n", "19\n", "13\n", "13\n", "13\n", "17\n", "13\n", "13\n", "15\n", "13\n", "16\n", "15\n", "17\n", "15\n", "15\n", "13\n", "17\n", "19\n", "15\n", "15\n", "15\n", "16\n", "13\n", "17\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "19\n", "17\n", "17\n", "17\n", "15\n", "19\n", "17\n", "17\n", "15\n", "17\n", "13\n", "21\n", "11\n", "4\n", "11\n", "15\n", "15\n", "13\n", "13\n", "15\n", "15\n", "15\n", "19\n", "17\n", "17\n", "19\n", "14\n", "19\n", "17\n", "17\n", "15\n", "19\n", "17\n", "17\n", "19\n", "17\n", "19\n", "12\n", "17\n", "17\n", "15\n", "15\n", "15\n", "17\n", "17\n", "17\n", "19\n", "19\n", "16\n", "19\n", "15\n", "17\n", "19\n", "13\n", "13\n", "15\n", "17\n", "17\n", "15\n", "20\n", "17\n", "21\n", "21\n", "13\n", "17\n", "15\n", "13\n", "17\n", "19\n", "17\n", "14\n", "17\n", "15\n", "17\n", "21\n", "21\n", "17\n", "15\n", "15\n", "13\n", "17\n", "12\n", "19\n", "17\n", "21\n", "19\n", "19\n", "19\n", "17\n", "17\n", "15\n", "19\n", "17\n", "19\n", "17\n", "17\n", "19\n", "17\n", "15\n", "17\n", "17\n", "15\n", "19\n", "17\n", "21\n", "19\n", "17\n", "19\n", "17\n", "19\n", "19\n", "19\n", "17\n", "19\n", "15\n", "21\n", "19\n", "19\n", "17\n", "19\n", "13\n", "15\n", "17\n", "17\n", "15\n", "11\n", "13\n", "15\n", "17\n", "15\n", "15\n", "15\n", "13\n", "15\n", "19\n", "19\n", "17\n", "17\n", "17\n", "17\n", "17\n", "19\n", "17\n", "15\n", "17\n", "17\n", "17\n", "17\n", "17\n", "15\n", "15\n", "15\n", "19\n", "19\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "19\n", "17\n", "17\n", "19\n", "19\n", "17\n", "15\n", "19\n", "19\n", "17\n", "15\n", "15\n", "17\n", "15\n", "19\n", "17\n", "17\n", "19\n", "19\n", "19\n", "15\n", "20\n", "17\n", "17\n", "17\n", "13\n", "15\n", "15\n", "17\n", "17\n", "17\n", "19\n", "13\n", "17\n", "17\n", "19\n", "17\n", "15\n", "21\n", "15\n", "15\n", "17\n", "15\n", "17\n", "13\n", "15\n", "13\n", "15\n", "15\n", "13\n", "13\n", "15\n", "13\n", "19\n", "17\n", "13\n", "11\n", "17\n", "15\n", "17\n", "15\n", "13\n", "19\n", "19\n", "17\n", "17\n", "15\n", "17\n", "15\n", "21\n", "19\n", "17\n", "15\n", "13\n", "17\n", "19\n", "9\n", "15\n", "19\n", "17\n", "17\n", "15\n", "19\n", "19\n", "17\n", "15\n", "19\n", "15\n", "13\n", "17\n", "15\n", "21\n", "19\n", "21\n", "19\n", "17\n", "19\n", "21\n", "19\n", "15\n", "13\n", "17\n", "19\n", "17\n", "19\n", "13\n", "13\n", "15\n", "17\n", "15\n", "15\n", "13\n", "11\n", "15\n", "13\n", "17\n", "13\n", "11\n", "15\n", "15\n", "19\n", "17\n", "15\n", "17\n", "19\n", "15\n", "17\n", "15\n", "19\n", "19\n", "17\n", "15\n", "13\n", "13\n", "19\n", "17\n", "17\n", "17\n", "15\n", "17\n", "15\n", "17\n", "15\n", "20\n", "19\n", "17\n", "19\n", "17\n", "15\n", "17\n", "19\n", "17\n", "19\n", "19\n", "16\n", "11\n", "13\n", "11\n", "15\n", "13\n", "17\n", "21\n", "11\n", "15\n", "13\n", "19\n", "15\n", "13\n", "17\n", "15\n", "15\n", "13\n", "17\n", "15\n", "15\n", "17\n", "9\n", "15\n", "13\n", "17\n", "15\n", "13\n", "17\n", "15\n", "15\n", "21\n", "13\n", "10\n", "11\n", "19\n", "17\n", "15\n", "17\n", "17\n", "15\n", "17\n", "17\n", "19\n", "19\n", "11\n", "19\n", "19\n", "17\n", "17\n", "17\n", "15\n", "19\n", "17\n", "15\n", "15\n", "9\n", "17\n", "19\n", "15\n", "17\n", "19\n", "17\n", "13\n", "17\n", "15\n", "13\n", "13\n", "17\n", "19\n", "15\n", "17\n", "15\n", "17\n", "17\n", "15\n", "17\n", "15\n", "9\n", "15\n", "19\n", "21\n", "17\n", "19\n", "19\n", "17\n", "17\n", "17\n", "17\n", "7\n", "17\n", "19\n", "17\n", "19\n", "17\n", "19\n", "17\n", "15\n", "15\n", "17\n", "11\n", "17\n", "15\n", "17\n", "19\n", "17\n", "17\n", "15\n", "17\n", "15\n", "17\n", "17\n", "19\n", "17\n", "15\n", "17\n", "15\n", "19\n", "17\n", "15\n", "17\n", "15\n", "20\n", "19\n", "17\n", "15\n", "19\n", "17\n", "19\n", "17\n", "21\n", "17\n", "21\n", "17\n", "19\n", "17\n", "19\n", "17\n", "13\n", "19\n", "17\n", "15\n", "17\n", "19\n", "10\n", "13\n", "15\n", "19\n", "21\n", "19\n", "17\n", "15\n", "13\n", "19\n", "21\n", "19\n", "17\n", "21\n", "17\n", "19\n", "17\n", "19\n", "17\n", "17\n", "15\n", "17\n", "15\n", "13\n", "15\n", "19\n", "17\n", "17\n", "15\n", "15\n", "15\n", "15\n", "19\n", "17\n", "17\n", "15\n", "19\n", "17\n", "17\n", "19\n", "17\n", "17\n", "17\n", "15\n", "17\n", "13\n", "15\n", "19\n", "19\n", "19\n", "17\n", "15\n", "13\n", "19\n", "17\n", "17\n", "13\n", "19\n", "17\n", "19\n", "17\n", "17\n", "17\n", "19\n", "15\n", "13\n", "17\n", "19\n", "17\n", "17\n", "15\n", "15\n", "13\n", "19\n", "17\n", "15\n", "17\n", "17\n", "17\n", "15\n", "15\n", "17\n", "15\n", "13\n", "15\n", "17\n", "13\n", "17\n", "15\n", "13\n", "17\n", "19\n", "17\n", "17\n", "15\n", "13\n", "13\n", "19\n", "13\n", "15\n", "14\n", "17\n", "15\n", "17\n", "15\n", "15\n", "15\n", "13\n", "15\n", "17\n", "21\n", "12\n", "19\n", "17\n", "15\n", "15\n", "13\n", "17\n", "15\n", "15\n", "15\n", "13\n", "15\n", "15\n", "21\n", "11\n", "13\n", "13\n", "17\n", "17\n", "15\n", "15\n", "17\n", "15\n", "19\n", "15\n", "19\n", "15\n", "17\n", "15\n", "15\n", "13\n", "17\n", "15\n", "13\n", "15\n", "15\n", "13\n", "17\n", "13\n", "13\n", "17\n", "15\n", "17\n", "15\n", "17\n", "11\n", "15\n", "15\n", "15\n", "21\n", "15\n", "17\n", "15\n", "13\n", "15\n", "15\n", "15\n", "13\n", "11\n", "13\n", "15\n", "19\n", "15\n", "17\n", "17\n", "11\n", "13\n", "15\n", "13\n", "15\n", "13\n", "15\n", "13\n", "21\n", "19\n", "17\n", "15\n", "15\n", "11\n", "15\n", "15\n", "15\n", "17\n", "17\n", "17\n", "21\n", "11\n", "15\n", "13\n", "17\n", "13\n", "17\n", "15\n", "13\n", "15\n", "17\n", "11\n", "19\n", "13\n", "15\n", "13\n", "11\n", "17\n", "15\n", "11\n", "13\n", "13\n", "13\n", "15\n", "21\n", "15\n", "8\n", "14\n", "11\n", "15\n", "13\n", "15\n", "13\n", "15\n", "13\n", "15\n", "13\n", "19\n", "17\n", "21\n", "15\n", "13\n", "13\n", "15\n", "15\n", "15\n", "13\n", "11\n", "13\n", "13\n", "13\n", "15\n", "13\n", "17\n", "15\n", "17\n", "13\n", "15\n", "17\n", "13\n", "19\n", "15\n", "19\n", "21\n", "17\n", "15\n", "13\n", "13\n", "13\n", "15\n", "15\n", "19\n", "17\n", "15\n", "15\n", "21\n", "15\n", "17\n", "17\n", "13\n", "11\n", "17\n", "15\n", "15\n", "13\n", "13\n", "15\n", "19\n", "15\n", "13\n", "11\n", "17\n", "15\n", "15\n", "13\n", "13\n", "15\n", "15\n", "17\n", "17\n", "13\n", "13\n", "15\n", "17\n", "11\n", "15\n", "11\n", "15\n", "13\n", "13\n", "17\n", "19\n", "15\n", "17\n", "19\n", "19\n", "17\n", "17\n", "15\n", "17\n", "15\n", "17\n", "19\n", "17\n", "17\n", "13\n", "15\n", "15\n", "13\n", "17\n", "15\n", "17\n", "17\n", "15\n", "17\n", "15\n", "15\n", "12\n", "19\n", "11\n", "13\n", "11\n", "15\n", "13\n", "15\n", "15\n", "13\n", "11\n", "17\n", "12\n", "13\n", "11\n", "11\n", "13\n", "11\n", "15\n", "17\n", "15\n", "15\n", "13\n", "19\n", "15\n", "21\n", "17\n", "15\n", "17\n", "15\n", "17\n", "15\n", "13\n", "15\n", "14\n", "13\n", "17\n", "21\n", "15\n", "17\n", "15\n", "15\n", "13\n", "19\n", "17\n", "14\n", "19\n", "13\n", "11\n", "21\n", "15\n", "15\n", "13\n", "15\n", "15\n", "15\n", "14\n", "13\n", "17\n", "15\n", "17\n", "19\n", "15\n", "15\n", "13\n", "17\n", "11\n", "14\n", "11\n", "15\n", "13\n", "15\n", "15\n", "17\n", "13\n", "17\n", "15\n", "15\n", "14\n", "13\n", "17\n", "15\n", "17\n", "17\n", "15\n", "21\n", "13\n", "15\n", "15\n", "16\n", "17\n", "11\n", "13\n", "15\n", "13\n", "17\n", "15\n", "19\n", "17\n", "15\n", "16\n", "15\n", "15\n", "15\n", "15\n", "11\n", "13\n", "13\n", "11\n", "17\n", "13\n", "12\n", "12\n", "11\n", "11\n", "9\n", "15\n", "13\n", "14\n", "14\n", "14\n", "13\n", "21\n", "12\n", "13\n", "14\n", "14\n", "12\n", "14\n", "12\n", "16\n", "16\n", "14\n", "16\n", "14\n", "21\n", "16\n", "12\n", "11\n", "16\n", "16\n", "14\n", "16\n", "16\n", "13\n", "16\n", "14\n", "19\n", "21\n", "16\n", "16\n", "16\n", "16\n", "16\n", "18\n", "15\n", "16\n", "15\n", "14\n", "16\n", "19\n", "16\n", "15\n", "14\n", "15\n", "14\n", "16\n", "16\n", "16\n", "14\n", "13\n", "16\n", "17\n", "12\n", "16\n", "11\n", "11\n", "16\n", "17\n", "16\n", "16\n", "13\n", "13\n", "12\n", "15\n", "11\n", "13\n", "12\n", "10\n", "15\n", "11\n", "10\n", "16\n", "14\n", "12\n", "13\n", "21\n", "13\n", "14\n", "13\n", - "13\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "13\n", "12\n", "14\n", "13\n", "13\n", "12\n", "14\n", "16\n", "21\n", "16\n", "14\n", "17\n", "16\n", "16\n", "18\n", "16\n", "18\n", "16\n", "14\n", "14\n", "19\n", "16\n", "10\n", "19\n", "16\n", "18\n", "16\n", "14\n", "14\n", "14\n", "16\n", "18\n", "16\n", "21\n", "17\n", "14\n", "16\n", "16\n", "16\n", "16\n", "12\n", "14\n", "12\n", "14\n", "18\n", "15\n", "19\n", "16\n", "14\n", "18\n", "16\n", "14\n", "16\n", "18\n", "18\n", "14\n", "14\n", "13\n", "16\n", "13\n", "15\n", "14\n", "14\n", "13\n", "13\n", "14\n", "14\n", "19\n", "14\n", "18\n", "16\n", "21\n", "12\n", "18\n", "16\n", "18\n", "14\n", "16\n", "17\n", "18\n", "16\n", "15\n", "14\n", "16\n", "14\n", "14\n", "12\n", "14\n", "16\n", "15\n", "16\n", "15\n", "13\n", "12\n", "14\n", "15\n", "12\n", "12\n", "16\n", "18\n", "19\n", "16\n", "16\n", "15\n", "15\n", "15\n", "18\n", "16\n", "18\n", "16\n", "18\n", "17\n", "18\n", "16\n", "16\n", "18\n", "14\n", "12\n", "18\n", "15\n", "16\n", "18\n", "15\n", "18\n", "16\n", "16\n", "14\n", "18\n", "16\n", "18\n", "13\n", "16\n", "15\n", "9\n", "10\n", "19\n", "13\n", "15\n", "15\n", "14\n", "14\n", "18\n", "16\n", "13\n", "15\n", "16\n", "8\n", "13\n", "12\n", "14\n", "14\n", "13\n", "14\n", "13\n", "16\n", "13\n", "12\n", "14\n", "11\n", "13\n", "13\n", "15\n", "15\n", "13\n", "15\n", "13\n", "16\n", "14\n", "14\n", "12\n", "10\n", "12\n", "14\n", "13\n", "15\n", "16\n", "18\n", "18\n", "13\n", "16\n", "14\n", "18\n", "18\n", "14\n", "14\n", "14\n", "18\n", "16\n", "18\n", "18\n", "14\n", "16\n", "21\n", "14\n", "18\n", "18\n", "18\n", "14\n", "18\n", "13\n", "13\n", "12\n", "15\n", "15\n", "13\n", "13\n", "14\n", "14\n", "12\n", "12\n", "14\n", "14\n", "18\n", "16\n", "13\n", "16\n", "13\n", "15\n", "12\n", "12\n", "14\n", "14\n", "16\n", "16\n", "13\n", "15\n", "12\n", "15\n", "14\n", "16\n", "18\n", "18\n", "16\n", "16\n", "10\n", "15\n", "15\n", "14\n", "18\n", "15\n", "18\n", "18\n", "18\n", "16\n", "16\n", "12\n", "18\n", "18\n", "12\n", "18\n", "16\n", "18\n", "15\n", "16\n", "16\n", "13\n", "15\n", "18\n", "13\n", "18\n", "18\n", - "15\n", + "15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "13\n", "13\n", "16\n", "12\n", "11\n", "11\n", "16\n", "17\n", "15\n", "13\n", "13\n", "13\n", "14\n", "16\n", "15\n", "13\n", "15\n", "12\n", "12\n", "16\n", "14\n", "14\n", "12\n", "12\n", "16\n", "14\n", "15\n", "11\n", "14\n", "13\n", "12\n", "12\n", "11\n", "11\n", "15\n", "14\n", "13\n", "13\n", "18\n", "16\n", "15\n", "13\n", "11\n", "15\n", "13\n", "15\n", "13\n", "13\n", "13\n", "13\n", "14\n", "18\n", "21\n", "14\n", "14\n", "13\n", "15\n", "12\n", "14\n", "16\n", "14\n", "16\n", "13\n", "14\n", "18\n", "14\n", "12\n", "13\n", "16\n", "18\n", "18\n", "14\n", "16\n", "15\n", "15\n", "14\n", "18\n", "14\n", "18\n", "18\n", "18\n", "14\n", "16\n", "14\n", "14\n", "14\n", "18\n", "18\n", "18\n", "16\n", "18\n", "18\n", "18\n", "14\n", "10\n", "16\n", "13\n", "11\n", "17\n", "12\n", "10\n", "18\n", "16\n", "14\n", "11\n", "13\n", "16\n", "15\n", "13\n", "14\n", "12\n", "14\n", "14\n", "18\n", "16\n", "14\n", "13\n", "17\n", "15\n", "12\n", "14\n", "14\n", "14\n", "14\n", "12\n", "18\n", "10\n", "14\n", "17\n", "12\n", "16\n", "14\n", "12\n", "10\n", "14\n", "16\n", "14\n", "18\n", "16\n", "17\n", "14\n", "18\n", "16\n", "14\n", "12\n", "10\n", "18\n", "13\n", "11\n", "18\n", "17\n", "9\n", "14\n", "12\n", "10\n", "13\n", "11\n", "9\n", "14\n", "12\n", "10\n", "14\n", "18\n", "18\n", "14\n", "12\n", "14\n", "16\n", "13\n", "11\n", "9\n", "18\n", "16\n", "14\n", "18\n", "21\n", "16\n", "18\n", "14\n", "18\n", "16\n", "14\n", "12\n", "17\n", "10\n", "13\n", "11\n", "17\n", "9\n", "18\n", "13\n", "11\n", "9\n", "13\n", "17\n", "11\n", "9\n", "14\n", "12\n", "15\n", "16\n", "12\n", "10\n", "14\n", "18\n", "10\n", "15\n", "12\n", "10\n", "14\n", "18\n", "18\n", "15\n", "18\n", "12\n", "10\n", "14\n", "19\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "18\n", "16\n", "16\n", "16\n", "19\n", "16\n", "16\n", "16\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "14\n", "17\n", "16\n", "14\n", "14\n", "14\n", "14\n", "16\n", "16\n", "16\n", "18\n", "16\n", "15\n", "16\n", "18\n", "18\n", "18\n", "14\n", "14\n", "18\n", "18\n", "18\n", "14\n", "18\n", "12\n", "14\n", "14\n", "16\n", "16\n", "18\n", "18\n", "16\n", "18\n", "16\n", "18\n", "15\n", "16\n", "18\n", "20\n", "20\n", "18\n", "14\n", "16\n", "14\n", "16\n", "16\n", "16\n", "16\n", "16\n", "20\n", "18\n", "20\n", "20\n", "18\n", "15\n", "15\n", "16\n", "15\n", "17\n", "16\n", "21\n", "13\n", "17\n", "13\n", "17\n", "17\n", "18\n", "12\n", "20\n", "18\n", "12\n", "12\n", "17\n", "12\n", "12\n", "14\n", "12\n", "18\n", "6\n", "18\n", "14\n", "12\n", "18\n", "14\n", "12\n", "17\n", "14\n", "14\n", "16\n", "14\n", "16\n", "20\n", "16\n", "14\n", "16\n", "10\n", "16\n", "15\n", "12\n", "14\n", "20\n", "16\n", "16\n", "16\n", "14\n", "20\n", "16\n", "16\n", "16\n", "13\n", "16\n", "18\n", "14\n", "18\n", "14\n", "18\n", "20\n", "18\n", "18\n", "15\n", "15\n", "18\n", "17\n", "16\n", "17\n", "13\n", "17\n", "17\n", "14\n", "14\n", "16\n", "14\n", "16\n", "18\n", "16\n", "12\n", "14\n", "16\n", "16\n", "12\n", "18\n", "14\n", "18\n", "18\n", "20\n", "14\n", "18\n", "16\n", "16\n", "16\n", "16\n", "20\n", "20\n", "18\n", "18\n", "18\n", "14\n", "14\n", "16\n", "20\n", "18\n", "20\n", "16\n", "20\n", "18\n", "18\n", "18\n", "14\n", "18\n", "15\n", "16\n", "15\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "12\n", "17\n", "17\n", "13\n", "18\n", "21\n", "17\n", "17\n", "17\n", "17\n", "17\n", "10\n", "16\n", "17\n", "17\n", "17\n", "20\n", "14\n", "16\n", "16\n", "16\n", "16\n", "13\n", "14\n", "13\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "18\n", "17\n", "15\n", "12\n", "17\n", "15\n", "17\n", "17\n", "17\n", "14\n", "18\n", "14\n", "15\n", "15\n", "16\n", "15\n", "13\n", "17\n", "13\n", "17\n", "12\n", "14\n", "14\n", "14\n", "16\n", "17\n", "16\n", "16\n", "14\n", "16\n", "17\n", "14\n", "14\n", "16\n", "18\n", "18\n", "15\n", "20\n", "16\n", "18\n", "20\n", "12\n", "14\n", "12\n", "18\n", "14\n", "18\n", "13\n", "14\n", "15\n", "12\n", "20\n", "20\n", "16\n", "16\n", "20\n", "18\n", "14\n", "16\n", "16\n", "16\n", "13\n", "14\n", "20\n", "20\n", "16\n", "16\n", "16\n", "18\n", "12\n", "20\n", "15\n", "15\n", "17\n", "15\n", "15\n", "17\n", "17\n", "17\n", "17\n", "13\n", "17\n", "17\n", "15\n", "17\n", "18\n", "17\n", "17\n", "17\n", "17\n", "14\n", "8\n", "14\n", "14\n", "14\n", "14\n", "16\n", "16\n", "17\n", "21\n", "16\n", "16\n", "16\n", "17\n", "16\n", "14\n", "14\n", "16\n", "16\n", "16\n", "16\n", "18\n", "16\n", "14\n", "15\n", "16\n", "18\n", "16\n", "18\n", "20\n", "18\n", "16\n", "18\n", "17\n", "13\n", "12\n", "15\n", "15\n", "17\n", "17\n", "17\n", "15\n", "17\n", "12\n", "14\n", "15\n", "14\n", "16\n", "16\n", "16\n", "14\n", "16\n", "13\n", "13\n", "15\n", "17\n", "17\n", "12\n", "17\n", "15\n", "16\n", "12\n", "16\n", "14\n", "18\n", "16\n", "14\n", "16\n", "16\n", "16\n", "17\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "14\n", "18\n", "18\n", "16\n", "18\n", "20\n", "14\n", "20\n", "16\n", "16\n", "18\n", "17\n", "18\n", "20\n", "20\n", "17\n", "16\n", "20\n", "16\n", "20\n", "18\n", "18\n", "16\n", "18\n", "16\n", "20\n", "18\n", "18\n", "20\n", "18\n", "18\n", "15\n", "15\n", "9\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "17\n", "20\n", "14\n", "14\n", "16\n", "16\n", "13\n", "13\n", "13\n", "14\n", "21\n", "13\n", "19\n", "17\n", "19\n", "17\n", "15\n", "17\n", "15\n", "15\n", "17\n", "17\n", "16\n", "17\n", "16\n", "17\n", "12\n", "14\n", "12\n", "18\n", "16\n", "18\n", "16\n", "18\n", "13\n", "17\n", "16\n", "14\n", "18\n", "16\n", "14\n", "11\n", "11\n", "19\n", "13\n", "17\n", "17\n", "13\n", "13\n", "12\n", "12\n", "12\n", "18\n", "18\n", "16\n", "14\n", "14\n", "16\n", "16\n", "15\n", "14\n", "13\n", "17\n", "15\n", "17\n", "16\n", "15\n", "17\n", "17\n", "15\n", "13\n", "13\n", "15\n", "15\n", "15\n", "17\n", "15\n", "15\n", "15\n", "15\n", "17\n", "17\n", "17\n", "15\n", "15\n", "17\n", "17\n", "17\n", "15\n", "16\n", "19\n", "16\n", "15\n", "14\n", "18\n", "18\n", "16\n", "14\n", "17\n", "13\n", "17\n", "14\n", "17\n", "17\n", "16\n", "14\n", "14\n", "16\n", "18\n", "16\n", "17\n", "15\n", "15\n", "15\n", "18\n", "18\n", "16\n", "18\n", "18\n", "18\n", "18\n", "18\n", "16\n", "16\n", "16\n", "18\n", "18\n", "18\n", "18\n", "16\n", "16\n", "18\n", "17\n", "21\n", "20\n", "17\n", "12\n", "12\n", "14\n", "12\n", "12\n", "16\n", "10\n", "14\n", "20\n", "18\n", "19\n", "14\n", "12\n", "18\n", "14\n", "18\n", "14\n", "20\n", "20\n", "16\n", "16\n", "17\n", "19\n", "12\n", "16\n", "14\n", "18\n", "14\n", "18\n", "14\n", "20\n", "16\n", "15\n", "20\n", "15\n", "16\n", "20\n", "15\n", "15\n", "17\n", "17\n", "17\n", "15\n", "17\n", "17\n", "17\n", "16\n", "17\n", "14\n", "14\n", "14\n", "16\n", "16\n", "16\n", "15\n", "14\n", "16\n", "16\n", "17\n", "16\n", "16\n", "18\n", "18\n", "16\n", "18\n", "18\n", "16\n", "20\n", "15\n", "19\n", "16\n", "19\n", "17\n", "14\n", "18\n", "18\n", "9\n", "14\n", "16\n", "13\n", "13\n", "15\n", "15\n", "16\n", "17\n", "17\n", "15\n", "17\n", "18\n", "16\n", "18\n", "16\n", "14\n", "14\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "14\n", "16\n", "14\n", "18\n", "18\n", "16\n", "16\n", "14\n", "14\n", "17\n", "13\n", "13\n", "17\n", "13\n", "17\n", "17\n", "16\n", "17\n", "21\n", "14\n", "14\n", "14\n", "14\n", "16\n", "14\n", "16\n", "16\n", "17\n", "16\n", "15\n", "12\n", "13\n", "15\n", "14\n", "16\n", "16\n", "16\n", "18\n", "18\n", "16\n", "16\n", "18\n", "15\n", "17\n", "15\n", "14\n", "16\n", "18\n", "16\n", "16\n", "14\n", "14\n", "14\n", "14\n", "16\n", "18\n", "14\n", "18\n", "18\n", "16\n", "18\n", "13\n", "15\n", "18\n", "12\n", "13\n", "15\n", "17\n", "15\n", "13\n", "15\n", "12\n", "14\n", "14\n", "14\n", "18\n", "13\n", "15\n", "17\n", "15\n", "13\n", "15\n", "13\n", "13\n", "13\n", "7\n", "9\n", "18\n", "13\n", "13\n", "15\n", "13\n", "16\n", "13\n", "15\n", "12\n", "14\n", "15\n", "16\n", "18\n", "18\n", "16\n", "18\n", "18\n", "15\n", "18\n", "18\n", "16\n", "14\n", "14\n", "13\n", "14\n", "18\n", "18\n", "16\n", "18\n", "15\n", "13\n", "15\n", "17\n", "16\n", "15\n", "13\n", "13\n", "18\n", "16\n", "14\n", "18\n", "15\n", "16\n", "13\n", "14\n", "15\n", "13\n", "15\n", "15\n", "13\n", "18\n", "18\n", "18\n", "15\n", "21\n", "14\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "20\n", "16\n", "14\n", "18\n", "20\n", "16\n", "18\n", "18\n", "16\n", "14\n", "16\n", "16\n", "16\n", "12\n", "20\n", "15\n", "16\n", "20\n", "18\n", "20\n", "18\n", "18\n", "18\n", "16\n", "14\n", "18\n", "16\n", "15\n", "20\n", "20\n", "18\n", "16\n", "14\n", "20\n", "18\n", "14\n", "18\n", "15\n", "15\n", "18\n", "15\n", "17\n", "17\n", "17\n", "15\n", "17\n", "9\n", "10\n", "17\n", "17\n", "17\n", "17\n", "16\n", "20\n", "20\n", "18\n", "18\n", "20\n", "12\n", "16\n", "14\n", "16\n", "16\n", "17\n", "18\n", "15\n", "15\n", "17\n", "15\n", "16\n", "13\n", "17\n", "19\n", "19\n", "17\n", "17\n", "18\n", "17\n", "16\n", "14\n", "14\n", "14\n", "18\n", "16\n", "16\n", "14\n", "18\n", "16\n", "18\n", "18\n", "17\n", "12\n", "13\n", "15\n", "17\n", "13\n", "15\n", "13\n", "19\n", "15\n", "16\n", "16\n", "14\n", "14\n", "14\n", "16\n", "14\n", "18\n", "16\n", "16\n", "14\n", "18\n", "18\n", "15\n", "21\n", "16\n", "16\n", "15\n", "17\n", "15\n", "17\n", "17\n", "17\n", "16\n", "13\n", "15\n", "18\n", "17\n", "15\n", "15\n", "15\n", "15\n", "15\n", "15\n", "17\n", "16\n", "15\n", "17\n", "15\n", "17\n", "17\n", "17\n", "15\n", "17\n", "15\n", "13\n", "17\n", "15\n", "16\n", "16\n", "18\n", "15\n", "14\n", "16\n", "16\n", "18\n", "16\n", "11\n", "13\n", "14\n", "16\n", "14\n", "15\n", "18\n", "17\n", "15\n", "17\n", "13\n", "14\n", "15\n", "16\n", "16\n", "14\n", "14\n", "17\n", "17\n", "16\n", "15\n", "15\n", "17\n", "15\n", "15\n", "13\n", "13\n", "15\n", "13\n", "15\n", "15\n", "15\n", "13\n", "15\n", "14\n", "13\n", "13\n", "15\n", "15\n", "17\n", "17\n", "15\n", "18\n", "17\n", "15\n", "10\n", "15\n", "15\n", "17\n", "17\n", "17\n", "11\n", "15\n", "13\n", "18\n", "15\n", "12\n", "15\n", "13\n", "16\n", "15\n", "14\n", "16\n", "15\n", "14\n", "14\n", "16\n", "16\n", "13\n", "14\n", "15\n", "13\n", "10\n", "14\n", "12\n", "18\n", "18\n", "14\n", "12\n", "18\n", "21\n", "18\n", "18\n", "18\n", "14\n", "18\n", "16\n", "18\n", "18\n", "16\n", "14\n", "13\n", "18\n", "12\n", "14\n", "12\n", "18\n", "17\n", "16\n", "14\n", "16\n", "18\n", "18\n", "12\n", "15\n", "13\n", "13\n", "15\n", "13\n", "12\n", "12\n", "14\n", "12\n", "14\n", "15\n", "13\n", "12\n", "18\n", "15\n", "13\n", "14\n", "18\n", "18\n", "12\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "18\n", "16\n", "16\n", "18\n", "16\n", "20\n", "18\n", "18\n", "14\n", "18\n", "14\n", "15\n", "18\n", "18\n", "14\n", "17\n", "14\n", "14\n", "20\n", "18\n", "14\n", "20\n", "16\n", "16\n", "20\n", "16\n", "13\n", "12\n", "18\n", "14\n", "18\n", "14\n", "20\n", "20\n", "16\n", "15\n", "16\n", "16\n", "12\n", "20\n", "16\n", "15\n", "15\n", "15\n", "15\n", "15\n", "17\n", "15\n", "12\n", "17\n", "17\n", "17\n", "17\n", "14\n", "14\n", "14\n", "14\n", "14\n", "16\n", "16\n", "18\n", "16\n", "16\n", "16\n", "16\n", "18\n", "18\n", "18\n", "16\n", "18\n", "16\n", "16\n", "18\n", "21\n", "20\n", "15\n", "15\n", "13\n", "19\n", "19\n", "17\n", "12\n", "14\n", "14\n", "14\n", "20\n", "18\n", "18\n", "16\n", "15\n", "15\n", "17\n", "10\n", "16\n", "18\n", "16\n", "18\n", "16\n", "20\n", "16\n", "13\n", "14\n", "15\n", "15\n", "17\n", "15\n", "17\n", "17\n", "15\n", "13\n", "16\n", "12\n", "14\n", "18\n", "16\n", "13\n", "14\n", "16\n", "14\n", "16\n", "14\n", "16\n", "17\n", "14\n", "14\n", "13\n", "16\n", "13\n", "15\n", "16\n", "15\n", "14\n", "16\n", "14\n", "17\n", "16\n", "18\n", "12\n", "16\n", "14\n", "16\n", "14\n", "17\n", "17\n", "13\n", "15\n", "18\n", "17\n", "15\n", "13\n", "15\n", "17\n", "16\n", "16\n", "14\n", "16\n", "14\n", "14\n", "18\n", "13\n", "14\n", "16\n", "17\n", "16\n", "15\n", "17\n", "15\n", "15\n", "13\n", "14\n", "11\n", "20\n", "14\n", "12\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "14\n", "19\n", "14\n", "14\n", "13\n", "16\n", "16\n", "18\n", "15\n", "15\n", "16\n", "14\n", "17\n", "17\n", "21\n", "15\n", "16\n", "16\n", "14\n", "15\n", "16\n", "8\n", "15\n", "16\n", "18\n", "16\n", "14\n", "17\n", "18\n", "16\n", "16\n", "13\n", "13\n", "13\n", "18\n", "18\n", "18\n", "15\n", "13\n", "18\n", "13\n", "12\n", "11\n", "13\n", "15\n", "17\n", "15\n", "13\n", "13\n", "13\n", "14\n", "16\n", "16\n", "13\n", "17\n", "13\n", "12\n", "12\n", "16\n", "14\n", "18\n", "14\n", "12\n", "16\n", "18\n", "14\n", "13\n", "16\n", "16\n", "11\n", "13\n", "11\n", "13\n", "12\n", "13\n", "18\n", "11\n", "11\n", "15\n", "12\n", "17\n", "17\n", "15\n", "17\n", "15\n", "13\n", "13\n", "18\n", "17\n", "16\n", "14\n", "16\n", "14\n", "16\n", "14\n", "16\n", "16\n", "16\n", "16\n", "15\n", "18\n", "13\n", "17\n", "12\n", "16\n", "16\n", "16\n", "18\n", "16\n", "16\n", "18\n", "16\n", "16\n", "15\n", "13\n", "13\n", "17\n", "12\n", "16\n", "16\n", "14\n", "8\n", "15\n", "13\n", "16\n", "13\n", "11\n", "13\n", "11\n", "15\n", "13\n", "11\n", "6\n", "14\n", "13\n", "13\n", "13\n", "18\n", "23\n", "19\n", "13\n", "12\n", "18\n", "18\n", "6\n", "14\n", "10\n", "18\n", "14\n", "12\n", "12\n", "16\n", "16\n", "16\n", "13\n", "10\n", "9\n", "11\n", "15\n", "14\n", "10\n", "18\n", "14\n", "16\n", "12\n", "16\n", "16\n", "18\n", "13\n", "9\n", "15\n", "14\n", "15\n", "17\n", "15\n", "20\n", "13\n", "16\n", "9\n", "17\n", "13\n", "9\n", "16\n", "14\n", "12\n", "12\n", "16\n", "20\n", "14\n", "18\n", "16\n", "13\n", "9\n", "17\n", "16\n", "14\n", "16\n", "11\n", "13\n", "16\n", "20\n", "15\n", "17\n", "17\n", "17\n", "13\n", "9\n", "17\n", "11\n", "15\n", "12\n", "16\n", "16\n", "14\n", "17\n", "16\n", "17\n", "17\n", "16\n", "16\n", "12\n", "16\n", "18\n", "16\n", "20\n", "16\n", "14\n", "17\n", "16\n", "18\n", "18\n", "14\n", "14\n", "18\n", "14\n", "18\n", "20\n", "18\n", "14\n", "12\n", "10\n", "16\n", "14\n", "12\n", "14\n", "16\n", "16\n", "14\n", "20\n", "16\n", "14\n", "14\n", "18\n", "18\n", "16\n", "16\n", "18\n", "18\n", "16\n", "15\n", "15\n", "16\n", "23\n", "13\n", "15\n", "15\n", "14\n", "15\n", "15\n", "15\n", "13\n", "13\n", "17\n", "17\n", "20\n", "14\n", "12\n", "14\n", "14\n", "14\n", "12\n", "16\n", "15\n", "15\n", "19\n", "19\n", "16\n", "17\n", "12\n", "12\n", "14\n", "12\n", "12\n", "18\n", "16\n", "16\n", "16\n", "18\n", "18\n", "14\n", "16\n", "18\n", "16\n", "18\n", "11\n", "13\n", "11\n", "11\n", "19\n", "12\n", "12\n", "16\n", "14\n", "14\n", "12\n", "14\n", "14\n", "18\n", "18\n", "16\n", "17\n", "12\n", "17\n", "18\n", "19\n", "19\n", "13\n", "13\n", "18\n", "14\n", "18\n", "18\n", "14\n", "17\n", "17\n", "16\n", "16\n", "16\n", "18\n", "16\n", "18\n", "16\n", "18\n", "14\n", "16\n", "19\n", "11\n", "14\n", "13\n", "18\n", "12\n", "18\n", "14\n", "18\n", "12\n", "12\n", "13\n", "15\n", "15\n", "14\n", "16\n", "13\n", "13\n", "15\n", "13\n", "13\n", "12\n", "15\n", "15\n", "15\n", "15\n", "15\n", "16\n", "15\n", "13\n", "15\n", "17\n", "14\n", "15\n", "13\n", "15\n", "13\n", "13\n", "11\n", "20\n", "23\n", "15\n", "11\n", "12\n", "11\n", "13\n", "11\n", "15\n", "13\n", "15\n", "15\n", "15\n", "18\n", "13\n", "14\n", "15\n", "13\n", "14\n", "16\n", "15\n", "14\n", "15\n", "14\n", "16\n", "16\n", "14\n", "15\n", "14\n", "14\n", "12\n", "14\n", "12\n", "12\n", "10\n", "16\n", "14\n", "14\n", "20\n", "11\n", "11\n", "9\n", "13\n", "16\n", "14\n", "12\n", "14\n", "12\n", "14\n", "12\n", "18\n", "10\n", "14\n", "15\n", "12\n", "10\n", "14\n", "12\n", "14\n", "12\n", "15\n", "15\n", "18\n", "15\n", "13\n", "14\n", "14\n", "12\n", "13\n", "13\n", "14\n", "13\n", "15\n", "13\n", "20\n", "15\n", "13\n", "15\n", "13\n", "13\n", "15\n", "15\n", "16\n", "15\n", "15\n", "15\n", "17\n", "14\n", "15\n", "15\n", "13\n", "15\n", "13\n", "12\n", "15\n", "13\n", "15\n", "13\n", "15\n", "20\n", "15\n", "15\n", "15\n", "15\n", "14\n", "13\n", "15\n", "13\n", "11\n", "11\n", "11\n", "20\n", "16\n", "16\n", "16\n", "16\n", "16\n", "16\n", "14\n", "16\n", "16\n", "14\n", "16\n", "18\n", "23\n", "12\n", "14\n", "14\n", "13\n", "13\n", "12\n", "16\n", "16\n", "14\n", "16\n", "15\n", "18\n", "12\n", "14\n", "15\n", "14\n", "16\n", "14\n", "14\n", "16\n", "14\n", "13\n", "16\n", "14\n", "20\n", "14\n", "12\n", "12\n", "14\n", "14\n", "14\n", "14\n", "12\n", "16\n", "12\n", "14\n", "20\n", "12\n", "14\n", "12\n", "16\n", "14\n", "14\n", "12\n", "12\n", "14\n", "18\n", "16\n", "16\n", "11\n", "15\n", "13\n", "10\n", "12\n", "14\n", "12\n", "12\n", "12\n", "12\n", "11\n", "16\n", "16\n", "14\n", "12\n", "13\n", "15\n", "12\n", "9\n", "13\n", "14\n", "12\n", "14\n", "12\n", "18\n", "20\n", "16\n", "14\n", "11\n", "13\n", "10\n", "12\n", "12\n", "11\n", "13\n", "13\n", "15\n", "18\n", "12\n", "10\n", "10\n", "12\n", "12\n", "14\n", "16\n", "14\n", "12\n", "16\n", "14\n", "18\n", "16\n", "14\n", "11\n", "12\n", "13\n", "15\n", "13\n", "14\n", "14\n", "14\n", "15\n", "16\n", "16\n", "14\n", "16\n", "16\n", "16\n", "14\n", "14\n", "16\n", "11\n", "15\n", "10\n", "20\n", "23\n", "16\n", "14\n", "11\n", "13\n", "15\n", "15\n", "12\n", "14\n", "12\n", "12\n", "11\n", "16\n", "15\n", "13\n", "13\n", "15\n", "14\n", "12\n", "12\n", "14\n", "14\n", "13\n", "14\n", "12\n", "14\n", "12\n", "11\n", "14\n", "13\n", "13\n", "12\n", "10\n", "14\n", "16\n", "11\n", "15\n", "20\n", "13\n", "10\n", "14\n", "12\n", "11\n", "10\n", "13\n", "16\n", "13\n", "12\n", "18\n", "12\n", "12\n", "12\n", "12\n", "14\n", "18\n", "16\n", "13\n", "16\n", "12\n", "14\n", "18\n", "18\n", "16\n", "14\n", "12\n", "16\n", "14\n", "13\n", "14\n", "11\n", "15\n", "13\n", "12\n", "18\n", "10\n", "12\n", "14\n", "12\n", "10\n", "12\n", "12\n", "14\n", "15\n", "12\n", "14\n", "18\n", "15\n", "12\n", "14\n", "14\n", "16\n", "13\n", "11\n", "15\n", "13\n", "12\n", "10\n", "20\n", "11\n", "13\n", "11\n", "14\n", "13\n", "15\n", "13\n", "12\n", "10\n", "12\n", "10\n", "20\n", "16\n", "12\n", "14\n", "14\n", "12\n", "16\n", "14\n", "11\n", "13\n", "16\n", "12\n", "20\n", "23\n", "12\n", "14\n", "16\n", "12\n", "14\n", "14\n", "16\n", "13\n", "15\n", "11\n", "13\n", "14\n", "20\n", "12\n", "10\n", "13\n", "11\n", "15\n", "13\n", "12\n", "14\n", "16\n", "16\n", "18\n", "20\n", "16\n", "18\n", "16\n", "18\n", "16\n", "12\n", "14\n", "12\n", "14\n", "16\n", "14\n", "15\n", "16\n", "16\n", "14\n", "10\n", "12\n", "10\n", "10\n", "15\n", "16\n", "12\n", "10\n", "14\n", "13\n", "14\n", "12\n", "14\n", "14\n", "14\n", "12\n", "12\n", "12\n", "14\n", "14\n", "12\n", "15\n", "16\n", "14\n", "14\n", "14\n", "12\n", "16\n", "16\n", "18\n", "16\n", "12\n", "14\n", "15\n", "10\n", "14\n", "12\n", "15\n", "14\n", "15\n", "17\n", "14\n", "14\n", "14\n", "16\n", "17\n", "15\n", "17\n", "16\n", "14\n", "18\n", "16\n", "18\n", "16\n", "12\n", "14\n", "11\n", "17\n", "13\n", "14\n", "16\n", "18\n", "16\n", "13\n", "15\n", "18\n", "14\n", "16\n", "11\n", "19\n", "13\n", "10\n", "15\n", "15\n", "15\n", "12\n", "12\n", "14\n", "14\n", "16\n", "12\n", "17\n", "14\n", "23\n", "14\n", "14\n", "12\n", "11\n", "12\n", "12\n", "16\n", "14\n", "14\n", "16\n", "11\n", "17\n", "15\n", "13\n", "14\n", "11\n", "13\n", "12\n", "13\n", "12\n", "12\n", "16\n", "15\n", "15\n", "14\n", "16\n", "15\n", "14\n", "12\n", "14\n", "11\n", "15\n", "16\n", "13\n", "12\n", "13\n", "18\n", "10\n", "15\n", "15\n", "11\n", "13\n", "14\n", "14\n", "12\n", "14\n", "14\n", "14\n", "16\n", "14\n", "14\n", "14\n", "10\n", "13\n", "12\n", "13\n", "15\n", "12\n", "12\n", "14\n", "18\n", "13\n", "15\n", "13\n", "13\n", "12\n", "16\n", "12\n", "14\n", "14\n", "15\n", "13\n", "16\n", "11\n", "14\n", "12\n", "14\n", "15\n", "11\n", "14\n", "13\n", "12\n", "13\n", "12\n", "15\n", "14\n", "16\n", "16\n", "15\n", "14\n", "15\n", "14\n", "16\n", "15\n", "14\n", "14\n", "17\n", "12\n", "14\n", "10\n", "14\n", "12\n", "14\n", "12\n", "12\n", "10\n", "16\n", "14\n", "15\n", "14\n", "11\n", "9\n", "11\n", "11\n", "9\n", "13\n", "15\n", "13\n", "12\n", "12\n", "14\n", "17\n", "23\n", "12\n", "10\n", "14\n", "14\n", "12\n", "15\n", "10\n", "12\n", "12\n", "10\n", "14\n", "17\n", "12\n", "14\n", "15\n", "15\n", "15\n", "15\n", "15\n", "11\n", "12\n", "13\n", "15\n", "13\n", "17\n", "14\n", "14\n", "14\n", "14\n", "12\n", "14\n", "14\n", "12\n", "13\n", "12\n", "11\n", "18\n", "12\n", "11\n", "11\n", "11\n", "10\n", "16\n", "10\n", "15\n", "16\n", "14\n", "13\n", "14\n", "14\n", "13\n", "13\n", "13\n", "14\n", "12\n", "12\n", "12\n", "16\n", "15\n", "15\n", "14\n", "13\n", "15\n", "14\n", "12\n", "13\n", "12\n", "13\n", "15\n", "20\n", "13\n", "13\n", "12\n", "14\n", "14\n", "14\n", "12\n", "13\n", "20\n", "15\n", "14\n", "13\n", "15\n", "14\n", "14\n", "13\n", "12\n", "13\n", "13\n", "13\n", "12\n", "14\n", "13\n", "12\n", "15\n", "14\n", "13\n", "14\n", "13\n", "12\n", "15\n", "13\n", "12\n", "14\n", "14\n", "13\n", "12\n", "13\n", "12\n", "13\n", "13\n", "23\n", "13\n", "12\n", "13\n", "13\n", "13\n", "15\n", "14\n", "14\n", "13\n", "13\n", "12\n", "13\n", "12\n", "13\n", "11\n", "15\n", "19\n", "12\n", "11\n", "12\n", "10\n", "14\n", "13\n", "11\n", "15\n", "12\n", "10\n", "14\n", "12\n", "15\n", "12\n", "10\n", "14\n", "11\n", "9\n", "13\n", "12\n", "10\n", "14\n", "11\n", "9\n", "16\n", "19\n", "13\n", "12\n", "10\n", "14\n", "11\n", "9\n", "13\n", "12\n", "10\n", "14\n", "14\n", "17\n", "11\n", "9\n", "13\n", "11\n", "9\n", "13\n", "11\n", "9\n", "14\n", "13\n", "15\n", "14\n", "15\n", "17\n", "17\n", "15\n", "15\n", "17\n", "13\n", "12\n", "17\n", "14\n", "14\n", "16\n", "16\n", "12\n", "16\n", "13\n", "13\n", "15\n", "14\n", "11\n", "15\n", "17\n", "17\n", "20\n", "16\n", "13\n", "15\n", "15\n", "13\n", "16\n", "11\n", "15\n", "13\n", "17\n", "10\n", "18\n", "12\n", "11\n", "13\n", "15\n", - "16\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "16\n", "16\n", "15\n", "18\n", "15\n", "12\n", "15\n", "14\n", "13\n", "12\n", "14\n", "14\n", "13\n", "18\n", "12\n", "14\n", "13\n", "14\n", "13\n", "13\n", "13\n", "13\n", "9\n", "18\n", "13\n", "13\n", "16\n", "15\n", "16\n", "16\n", "15\n", "17\n", "15\n", "14\n", "14\n", "12\n", "13\n", "12\n", "20\n", "13\n", "12\n", "12\n", "12\n", "12\n", "12\n", "12\n", "15\n", "13\n", "11\n", "15\n", "18\n", "14\n", "13\n", "15\n", "13\n", "14\n", "16\n", "12\n", "13\n", "15\n", "14\n", "14\n", "20\n", "13\n", "13\n", "12\n", "12\n", "16\n", "13\n", "12\n", "13\n", "13\n", "12\n", "13\n", "12\n", "12\n", "15\n", "10\n", "14\n", "14\n", "9\n", "13\n", "10\n", "14\n", "9\n", "13\n", "9\n", "13\n", "15\n", "12\n", "9\n", "13\n", "9\n", "13\n", "9\n", "13\n", "15\n", "15\n", "15\n", "13\n", "16\n", "15\n", "14\n", "14\n", "12\n", "13\n", "13\n", "11\n", "17\n", "15\n", "19\n", "16\n", "13\n", "10\n", "12\n", "11\n", "13\n", "10\n", "12\n", "10\n", "12\n", "10\n", "16\n", "19\n", "12\n", "10\n", "12\n", "10\n", "12\n", "9\n", "13\n", "11\n", "11\n", "13\n", "14\n", "15\n", "13\n", "13\n", "15\n", "10\n", "12\n", "14\n", "11\n", "13\n", "10\n", "12\n", "14\n", "19\n", "13\n", "12\n", "11\n", "9\n", "8\n", "13\n", "13\n", "11\n", "12\n", "13\n", "13\n", "17\n", "13\n", "15\n", "15\n", "16\n", "15\n", "15\n", "15\n", "14\n", "19\n", "17\n", "17\n", "13\n", "15\n", "13\n", "15\n", "15\n", "15\n", "13\n", "14\n", "15\n", "15\n", "17\n", "17\n", "15\n", "17\n", "18\n", "18\n", "17\n", "18\n", "16\n", "16\n", "19\n", "17\n", "17\n", "15\n", "18\n", "16\n", "20\n", "18\n", "16\n", "12\n", "20\n", "18\n", "16\n", "20\n", "17\n", "18\n", "16\n", "19\n", "19\n", "15\n", "18\n", "19\n", "19\n", "17\n", - "15\n", + "15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "17\n", "17\n", "18\n", "16\n", "20\n", "16\n", "12\n", "20\n", "18\n", "19\n", "19\n", "19\n", "19\n", "17\n", "16\n", "18\n", "20\n", "12\n", "20\n", "18\n", "13\n", "15\n", "19\n", "19\n", "17\n", "15\n", "17\n", "15\n", "11\n", "10\n", "15\n", "19\n", "17\n", "13\n", "15\n", "15\n", "15\n", "15\n", "17\n", "19\n", "14\n", "17\n", "17\n", "17\n", "16\n", "15\n", "16\n", "15\n", "15\n", "13\n", "17\n", "12\n", "15\n", "15\n", "17\n", "15\n", "15\n", "17\n", "18\n", "17\n", "18\n", "18\n", "16\n", "19\n", "19\n", "16\n", "19\n", "19\n", "15\n", "18\n", "15\n", "20\n", "20\n", "16\n", "18\n", "16\n", "17\n", "19\n", "19\n", "19\n", "19\n", "15\n", "18\n", "15\n", "14\n", "17\n", "20\n", "18\n", "17\n", "18\n", "19\n", "19\n", "19\n", "20\n", "16\n", "16\n", "18\n", "18\n", "18\n", "18\n", "17\n", "18\n", "13\n", "17\n", "15\n", "15\n", "14\n", "15\n", "19\n", "19\n", "15\n", "15\n", "17\n", "17\n", "13\n", "13\n", "15\n", "14\n", "15\n", "15\n", "15\n", "15\n", "13\n", "15\n", "19\n", "17\n", "15\n", "17\n", "16\n", "15\n", "15\n", "15\n", "15\n", "20\n", "14\n", "12\n", "19\n", "20\n", "16\n", "13\n", "14\n", "20\n", "20\n", "20\n", "20\n", "20\n", "20\n", "18\n", "16\n", "17\n", "20\n", "14\n", "20\n", "20\n", "14\n", "12\n", "16\n", "20\n", "20\n", "20\n", "20\n", "17\n", "14\n", "18\n", "16\n", "16\n", "14\n", "18\n", "18\n", "20\n", "20\n", "14\n", "12\n", "10\n", "17\n", "16\n", "13\n", "11\n", "15\n", "15\n", "13\n", "17\n", "20\n", "15\n", "18\n", "17\n", "17\n", "19\n", "15\n", "17\n", "20\n", "20\n", "19\n", "20\n", "20\n", "16\n", "15\n", "13\n", "15\n", "17\n", "19\n", "17\n", "15\n", "13\n", "11\n", "13\n", "14\n", "15\n", "11\n", "13\n", "15\n", "19\n", "15\n", "17\n", "13\n", "11\n", "15\n", "18\n", "20\n", "16\n", "14\n", "12\n", "20\n", "17\n", "18\n", "16\n", "19\n", "13\n", "16\n", "11\n", "15\n", "20\n", "20\n", "19\n", "19\n", "19\n", "16\n", "14\n", "20\n", "18\n", "18\n", "15\n", "13\n", "17\n", "13\n", "11\n", "15\n", "17\n", "19\n", "15\n", "9\n", "13\n", "16\n", "13\n", "13\n", "11\n", "17\n", "15\n", "20\n", "18\n", "18\n", "19\n", "20\n", "16\n", "16\n", "20\n", "18\n", "16\n", "18\n", "18\n", "20\n", "20\n", "16\n", "17\n", "14\n", "20\n", "20\n", "18\n", "20\n", "16\n", "20\n", "18\n", "16\n", "18\n", "18\n", "14\n", "19\n", "20\n", "16\n", "20\n", "18\n", "20\n", "16\n", "20\n", "20\n", "20\n", "16\n", "18\n", "17\n", "14\n", "16\n", "16\n", "14\n", "16\n", "14\n", "12\n", "18\n", "12\n", "18\n", "18\n", "17\n", "19\n", "18\n", "20\n", "18\n", "20\n", "16\n", "16\n", "12\n", "18\n", "18\n", "20\n", "16\n", "15\n", "22\n", "12\n", "14\n", "14\n", "14\n", "16\n", "12\n", "12\n", "14\n", "14\n", "12\n", "17\n", "16\n", "12\n", "10\n", "10\n", "14\n", "12\n", "10\n", "14\n", "20\n", "14\n", "20\n", "17\n", "20\n", "16\n", "12\n", "16\n", "18\n", "14\n", "18\n", "14\n", "20\n", "20\n", "16\n", "15\n", "16\n", "12\n", "13\n", "14\n", "20\n", "16\n", "20\n", "18\n", "14\n", "18\n", "14\n", "20\n", "17\n", "16\n", "18\n", "12\n", "16\n", "14\n", "12\n", "18\n", "14\n", "22\n", "20\n", "20\n", "15\n", "18\n", "16\n", "16\n", "16\n", "22\n", "18\n", "14\n", "20\n", "16\n", "20\n", "16\n", "16\n", "17\n", "22\n", "22\n", "18\n", "18\n", "14\n", "22\n", "18\n", "16\n", "14\n", "14\n", "18\n", "17\n", "16\n", "12\n", "16\n", "12\n", "18\n", "18\n", "14\n", "14\n", "14\n", "10\n", "18\n", "17\n", "14\n", "20\n", "20\n", "16\n", "20\n", "16\n", "20\n", "12\n", "20\n", "16\n", "16\n", "17\n", "19\n", "18\n", "16\n", "16\n", "13\n", "18\n", "16\n", "16\n", "18\n", "12\n", "12\n", "10\n", "14\n", "10\n", "14\n", "15\n", "18\n", "10\n", "12\n", "10\n", "14\n", "14\n", "14\n", "8\n", "12\n", "16\n", "13\n", "14\n", "16\n", "16\n", "14\n", "16\n", "14\n", "12\n", "18\n", "12\n", "16\n", "13\n", "14\n", "16\n", "10\n", "10\n", "12\n", "12\n", "12\n", "12\n", "16\n", "16\n", "11\n", "14\n", "14\n", "16\n", "14\n", "14\n", "12\n", "16\n", "14\n", "14\n", "14\n", "13\n", "14\n", "18\n", "16\n", "14\n", "14\n", "16\n", "12\n", "14\n", "12\n", "14\n", "11\n", "12\n", "16\n", "16\n", "16\n", "14\n", "16\n", "18\n", "16\n", "16\n", "14\n", "13\n", "16\n", "12\n", "14\n", "18\n", "12\n", "12\n", "16\n", "16\n", "14\n", "14\n", "11\n", "13\n", "14\n", "14\n", "16\n", "12\n", "16\n", "16\n", "14\n", "16\n", "16\n", "14\n", "11\n", "16\n", "14\n", "16\n", "14\n", "12\n", "14\n", "14\n", "12\n", "16\n", "18\n", "9\n", "16\n", "14\n", "16\n", "18\n", "16\n", "14\n", "16\n", "16\n", "14\n", "16\n", "13\n", "14\n", "12\n", "14\n", "12\n", "16\n", "14\n", "16\n", "14\n", "14\n", "14\n", "11\n", "16\n", "14\n", "16\n", "12\n", "10\n", "14\n", "10\n", "14\n", "16\n", "12\n", "10\n", "12\n", "14\n", "12\n", "16\n", "14\n", "10\n", "12\n", "12\n", "12\n", "16\n", "8\n", "14\n", "14\n", "10\n", "12\n", "10\n", "10\n", "14\n", "12\n", "12\n", "14\n", "8\n", "14\n", "12\n", "10\n", "14\n", "16\n", "14\n", "14\n", "12\n", "14\n", "12\n", "12\n", "14\n", "16\n", "18\n", "16\n", "14\n", "14\n", "12\n", "8\n", "10\n", "8\n", "12\n", "12\n", "14\n", "12\n", "14\n", "10\n", "14\n", "12\n", "14\n", "12\n", "12\n", "9\n", "12\n", "10\n", "16\n", "14\n", "16\n", "18\n", "10\n", "8\n", "12\n", "12\n", "14\n", "11\n", "12\n", "14\n", "12\n", "12\n", "10\n", "16\n", "14\n", "8\n", "10\n", "12\n", "10\n", "10\n", "14\n", "12\n", "14\n", "12\n", "12\n", "14\n", "10\n", "12\n", "10\n", "14\n", "11\n", "15\n", "13\n", "13\n", "13\n", "13\n", "11\n", "18\n", "11\n", "13\n", "12\n", "11\n", "13\n", "13\n", "15\n", "13\n", "11\n", "15\n", "11\n", "16\n", "11\n", "14\n", "15\n", "11\n", "13\n", "15\n", "13\n", "15\n", "15\n", "13\n", "11\n", "18\n", "12\n", "15\n", "13\n", "15\n", "11\n", "15\n", "15\n", "15\n", "13\n", "13\n", "13\n", "14\n", "18\n", "13\n", "13\n", "15\n", "15\n", "11\n", "11\n", "15\n", "15\n", "15\n", "12\n", "13\n", "16\n", "13\n", "13\n", "13\n", "17\n", "15\n", "17\n", "17\n", "15\n", "12\n", "15\n", "9\n", "12\n", "18\n", "9\n", "11\n", "17\n", "13\n", "13\n", "11\n" ] } ], "source": [ "for i in data['database_CMs']:\n", " print(len(i))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 27, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "72\n" + ] + }, { "data": { "text/plain": [ - "array([[73.51669472, 39.82535399, 28.22985434, 13.94430946, 10.82449569,\n", - " 13.53877151, 8.21151584, 10.33309222, 13.94292898, 13.59162817,\n", - " 20.06070732, 22.10257327, 1.96631409, 1.82750382, 1.99407482,\n", - " 1.21946086, 1.30005602, 1.12207006, 1.50704584, 3.31851231],\n", - " [39.82535399, 36.8581052 , 35.09973631, 15.74494229, 10.60940751,\n", - " 12.30136437, 7.6133438 , 9.55868099, 15.80291502, 13.40187939,\n", - " 24.701225 , 19.65805896, 2.01244255, 1.75250512, 1.78582378,\n", - " 1.08803375, 1.19130477, 1.00884235, 1.45263715, 2.50917189],\n", - " [28.22985434, 35.09973631, 73.51669472, 33.49274819, 20.15569304,\n", - " 24.24101033, 12.8133839 , 14.67161772, 20.57113483, 17.69890231,\n", - " 20.88524134, 17.94329083, 3.90405151, 2.92309598, 3.7675265 ,\n", - " 1.78538165, 2.02713525, 1.52267536, 2.0671084 , 2.15815604],\n", - " [13.94430946, 15.74494229, 33.49274819, 36.8581052 , 23.36059128,\n", - " 19.94541215, 14.04168186, 15.89123696, 23.77544862, 19.0928143 ,\n", - " 15.54895145, 13.16740491, 5.46446483, 2.78086751, 2.45151549,\n", - " 1.72273651, 2.17168264, 1.54570821, 2.34482852, 1.45295412],\n", - " [10.82449569, 10.60940751, 20.15569304, 23.36059128, 36.8581052 ,\n", - " 34.14358306, 23.64356343, 19.96242324, 13.76732559, 14.73242833,\n", - " 10.29264593, 10.07971202, 2.77201716, 5.44723614, 3.1188525 ,\n", - " 2.81590187, 2.7940154 , 1.84782702, 2.09066185, 1.14200165],\n", - " [13.53877151, 12.30136437, 24.24101033, 19.94541215, 34.14358306,\n", - " 73.51669472, 20.72919638, 17.89479531, 12.68251229, 13.96158328,\n", - " 10.78843963, 11.11009582, 2.93402139, 3.84366551, 8.26847099,\n", - " 3.2292684 , 3.09929752, 1.87435223, 1.89414876, 1.31416734],\n", - " [ 8.21151584, 7.6133438 , 12.8133839 , 14.04168186, 23.64356343,\n", - " 20.72919638, 36.8581052 , 33.73830186, 10.7344055 , 13.99366663,\n", - " 7.9377108 , 8.39258601, 2.21036283, 2.78323943, 1.89875332,\n", - " 5.47861436, 5.46281696, 3.05736788, 2.24947973, 0.94219237],\n", - " [10.33309222, 9.55868099, 14.67161772, 15.89123696, 19.96242324,\n", - " 17.89479531, 33.73830186, 73.51669472, 15.31281194, 23.8321636 ,\n", - " 10.8884308 , 11.91579101, 2.44631334, 3.05973211, 1.86100017,\n", - " 3.84748655, 3.82752327, 8.30167457, 4.5927381 , 1.29796361],\n", - " [13.94292898, 15.80291502, 20.57113483, 23.77544862, 13.76732559,\n", - " 12.68251229, 10.7344055 , 15.31281194, 36.8581052 , 36.02344598,\n", - " 26.82634831, 19.68525834, 2.76950489, 2.18868811, 1.57433128,\n", - " 1.38668559, 1.61896809, 1.50394444, 3.17430715, 1.89729202],\n", - " [13.59162817, 13.40187939, 17.69890231, 19.0928143 , 14.73242833,\n", - " 13.96158328, 13.99366663, 23.8321636 , 36.02344598, 73.51669472,\n", - " 19.98798124, 21.14394469, 2.78295256, 2.3855148 , 1.6564577 ,\n", - " 1.81220272, 2.12080646, 2.38559345, 8.15648427, 2.0326496 ],\n", - " [20.06070732, 24.701225 , 20.88524134, 15.54895145, 10.29264593,\n", - " 10.78843963, 7.9377108 , 10.8884308 , 26.82634831, 19.98798124,\n", - " 36.8581052 , 35.62991361, 1.98521336, 1.74860265, 1.43260739,\n", - " 1.10435399, 1.22164529, 1.13368403, 1.90524206, 3.21241232],\n", - " [22.10257327, 19.65805896, 17.94329083, 13.16740491, 10.07971202,\n", - " 11.11009582, 8.39258601, 11.91579101, 19.68525834, 21.14394469,\n", - " 35.62991361, 73.51669472, 1.86360496, 1.76032926, 1.46163696,\n", - " 1.21095891, 1.30339894, 1.28916847, 2.03998734, 8.24613277],\n", - " [ 1.96631409, 2.01244255, 3.90405151, 5.46446483, 2.77201716,\n", - " 2.93402139, 2.21036283, 2.44631334, 2.76950489, 2.78295256,\n", - " 1.98521336, 1.86360496, 0.5 , 0.32708299, 0.34827221,\n", - " 0.27065995, 0.40675411, 0.2526405 , 0.35061834, 0.20891178],\n", - " [ 1.82750382, 1.75250512, 2.92309598, 2.78086751, 5.44723614,\n", - " 3.84366551, 2.78323943, 3.05973211, 2.18868811, 2.3855148 ,\n", - " 1.74860265, 1.76032926, 0.32708299, 0.5 , 0.41861638,\n", - " 0.40052449, 0.32693452, 0.28492913, 0.33029352, 0.19940397],\n", - " [ 1.99407482, 1.78582378, 3.7675265 , 2.45151549, 3.1188525 ,\n", - " 8.26847099, 1.89875332, 1.86100017, 1.57433128, 1.6564577 ,\n", - " 1.43260739, 1.46163696, 0.34827221, 0.41861638, 0.5 ,\n", - " 0.29328752, 0.29344175, 0.19711214, 0.21484005, 0.1768528 ],\n", - " [ 1.21946086, 1.08803375, 1.78538165, 1.72273651, 2.81590187,\n", - " 3.2292684 , 5.47861436, 3.84748655, 1.38668559, 1.81220272,\n", - " 1.10435399, 1.21095891, 0.27065995, 0.40052449, 0.29328752,\n", - " 0.5 , 0.56168509, 0.42611927, 0.27688601, 0.1385769 ],\n", - " [ 1.30005602, 1.19130477, 2.02713525, 2.17168264, 2.7940154 ,\n", - " 3.09929752, 5.46281696, 3.82752327, 1.61896809, 2.12080646,\n", - " 1.22164529, 1.30339894, 0.40675411, 0.32693452, 0.29344175,\n", - " 0.56168509, 0.5 , 0.42661617, 0.32661903, 0.1475397 ],\n", - " [ 1.12207006, 1.00884235, 1.52267536, 1.54570821, 1.84782702,\n", - " 1.87435223, 3.05736788, 8.30167457, 1.50394444, 2.38559345,\n", - " 1.13368403, 1.28916847, 0.2526405 , 0.28492913, 0.19711214,\n", - " 0.42611927, 0.42661617, 0.5 , 0.42143213, 0.14214389],\n", - " [ 1.50704584, 1.45263715, 2.0671084 , 2.34482852, 2.09066185,\n", - " 1.89414876, 2.24947973, 4.5927381 , 3.17430715, 8.15648427,\n", - " 1.90524206, 2.03998734, 0.35061834, 0.33029352, 0.21484005,\n", - " 0.27688601, 0.32661903, 0.42143213, 0.5 , 0.2082513 ],\n", - " [ 3.31851231, 2.50917189, 2.15815604, 1.45295412, 1.14200165,\n", - " 1.31416734, 0.94219237, 1.29796361, 1.89729202, 2.0326496 ,\n", - " 3.21241232, 8.24613277, 0.20891178, 0.19940397, 0.1768528 ,\n", - " 0.1385769 , 0.1475397 , 0.14214389, 0.2082513 , 0.5 ]])" + "array([0.85818234, 2.72895384, 2.28464985, 1.94048599, 1.49415516,\n", + " 1.41355135, 5.47808531, 1.8502615 , 1.56989642, 1.76850553,\n", + " 2.81855982, 1.74241267, 1.37481274, 2.19828103, 1.16337321,\n", + " 1.37251889, 1.02152459, 0.97806403, 0.93490301, 0.80637255,\n", + " 0.70122531, 0.96510609, 0.95781823, 0.74293018, 0.62272041,\n", + " 0.65151111, 0.58960769, 0.75333139, 0.43145473, 0.34464524,\n", + " 0.22113563, 0.20943423, 0.20338041, 0.20095266, 0.5 ,\n", + " 0.56891735, 0.25107704, 0.26037466, 0.23372254, 0.28552189,\n", + " 0.4392965 , 0.38329927, 0.25620714, 0.23811073, 0.1967777 ,\n", + " 0.19824238, 0.37669829, 0.26758376, 0.45349592, 0.17681551,\n", + " 0.24790207, 0.249142 , 0.15659645, 0.15587907, 0.16701097,\n", + " 0.13330325, 0.12080549, 0.10975704, 0.18953193, 0.14254608,\n", + " 0.15285228, 0.18795454, 0.14208697, 0.15031591, 0.0951266 ,\n", + " 0.11222302, 0.10140643, 0.09122929, 0.09320497, 0.11511454,\n", + " 0.13536308, 0.11719581])" ] }, - "execution_count": 8, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data['target_CMs'][1]" + "print(len(data['target_CMs'][2]))\n", + "data['target_CMs'][2][34]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define a function that has two parameters (Target,Molecule) and finds a placement of the molecule that is optimal w.r.t. error^2. Later we will pick the moluecule that is best w.r.t. error^2 / length (molecule). " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 2 } diff --git a/gurobi.py b/gurobi.py new file mode 100644 index 0000000..c235c16 --- /dev/null +++ b/gurobi.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +""" +Spyder Editor + +This is a temporary script file. +""" + +# + +# Copyright 2021, Gurobi Optimization, LLC + +# This example formulates and solves the following simple MIP model: +# maximize +# x + y + 2 z +# subject to +# x + 2 y + 3 z <= 4 +# x + y >= 1 +# x, y, z binary + +import gurobipy as gp +from gurobipy import GRB + +try: + + # Create a new model + m = gp.Model("mip1") + + # Create variables + x = m.addVar(vtype=GRB.BINARY, name="x") + y = m.addVar(vtype=GRB.BINARY, name="y") + z = m.addVar(vtype=GRB.BINARY, name="z") + + # Set objective + m.setObjective(x + y + 2 * z, GRB.MAXIMIZE) + + # Add constraint: x + 2 y + 3 z <= 4 + m.addConstr(x + 2 * y + 3 * z <= 4, "c0") + + # Add constraint: x + y >= 1 + m.addConstr(x + y >= 1, "c1") + + # Optimize model + m.optimize() + + for v in m.getVars(): + print('%s %g' % (v.varName, v.x)) + + print('Obj: %g' % m.objVal) + +except gp.GurobiError as e: + print('Error code ' + str(e.errno) + ': ' + str(e)) + +except AttributeError: + print('Encountered an attribute error') \ No newline at end of file diff --git a/matrix.py b/matrix.py new file mode 100644 index 0000000..f95667a --- /dev/null +++ b/matrix.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Tue Jun 8 12:25:45 2021 + +@author: eisenbrand +""" + +import numpy as np +data = np.load("data.npz", allow_pickle=True) + +data.files + +print(len(data['target_CMs'][2])) +T = data['target_CMs'][2] +Z = [0,2,3] +S = [2,30,5] + +print(T[Z][:,S]) + +