├── .gitattributes ├── .gitignore ├── .vscode └── settings.json ├── Classical Spin Reservoir Demo.ipynb ├── Images └── QRC_overview.png ├── Project.toml ├── QRC Demo Aquila Submission.ipynb ├── QRC Demo MNIST.ipynb ├── QRC Demo Timeseries.ipynb ├── README.md ├── data └── Laser.csv └── requirements.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Julia 2 | .CondaPkg/ 3 | Manifest.toml 4 | 5 | # numpy binary 6 | *.npy 7 | 8 | # Jupyter Notebook 9 | .ipynb_checkpoints 10 | 11 | # Environments 12 | venv/ 13 | .venv 14 | 15 | .DS_Store -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /Classical Spin Reservoir Demo.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "23ce7bc6", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stderr", 11 | "output_type": "stream", 12 | "text": [ 13 | "\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m project at `c:\\Users\\mkornjaca\\Documents\\GitHub\\QRC-tutorials`\n" 14 | ] 15 | }, 16 | { 17 | "data": { 18 | "text/plain": [ 19 | "true" 20 | ] 21 | }, 22 | "metadata": {}, 23 | "output_type": "display_data" 24 | } 25 | ], 26 | "source": [ 27 | "# Initialize the environment\n", 28 | "using Pkg\n", 29 | "Pkg.activate(\".\")\n", 30 | "Pkg.instantiate()\n", 31 | "ENV[\"DATADEPS_ALWAYS_ACCEPT\"] = true # accept the download of the MNIST dataset\n", 32 | "SHOW_PROGRESS_BAR = true # turn off progress bars" 33 | ] 34 | }, 35 | { 36 | "cell_type": "markdown", 37 | "id": "d45256c4", 38 | "metadata": {}, 39 | "source": [ 40 | "In this demo, we process the MNIST dataset with classical spin reservior. The steps should be very familiar to the QRC expert, the only change is the simulation itself that integrates differential equations governing the spin reservoir evolution." 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 2, 46 | "id": "386c6cb1-6d57-47fe-b8eb-22c7d0a9b7a3", 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "# import required libraries\n", 51 | "using MLDatasets\n", 52 | "using MultivariateStats\n", 53 | "using OneHotArrays\n", 54 | "using Flux\n", 55 | "using Bloqade\n", 56 | "using Colors\n", 57 | "using ProgressBars\n", 58 | "using JLD2\n", 59 | "using LIBSVM\n", 60 | "using Statistics\n", 61 | "using CSV\n", 62 | "using DataFrames\n", 63 | "using PythonCall\n", 64 | "using PythonPlot" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 3, 70 | "id": "ff3d8f8c-5c2d-4be8-854f-550e4318446b", 71 | "metadata": {}, 72 | "outputs": [ 73 | { 74 | "data": { 75 | "text/plain": [ 76 | "dataset MNIST:\n", 77 | " metadata => Dict{String, Any} with 3 entries\n", 78 | " split => :test\n", 79 | " features => 28×28×10000 Array{Float32, 3}\n", 80 | " targets => 10000-element Vector{Int64}" 81 | ] 82 | }, 83 | "metadata": {}, 84 | "output_type": "display_data" 85 | } 86 | ], 87 | "source": [ 88 | "# Download the MNIST dataset\n", 89 | "\n", 90 | "# training data set (each image has 28x28 pixels and there are 60000 training samples)\n", 91 | "data_train = MNIST(:train)\n", 92 | "# test data set (10000 test samples)\n", 93 | "data_test = MNIST(:test) " 94 | ] 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": 4, 99 | "id": "31a01230", 100 | "metadata": {}, 101 | "outputs": [ 102 | { 103 | "data": { 104 | "text/plain": [ 105 | "ClassicalDetuningLayer" 106 | ] 107 | }, 108 | "metadata": {}, 109 | "output_type": "display_data" 110 | } 111 | ], 112 | "source": [ 113 | "# Define the struct for CRC layer\n", 114 | "Base.@kwdef struct ClassicalDetuningLayer\n", 115 | " atoms # atom positions\n", 116 | " Ω::Real # Rabi frequency\n", 117 | " t_start::Real # evolution starting time\n", 118 | " t_end::Real # evolution ending time\n", 119 | " step::Real # readout time step\n", 120 | " state::Vector{<:Real} # classical state\n", 121 | " readout::String #readout (\"s\" or \"ss\")\n", 122 | "end" 123 | ] 124 | }, 125 | { 126 | "cell_type": "markdown", 127 | "id": "2398271b", 128 | "metadata": {}, 129 | "source": [ 130 | " The CRC is derived by promoting all the qubits (spin $1/2$'s) to $S\\rightarrow\\infty$, thus making them classical unit vectors ($\\hat{S}$). The dequantized dynamics of the Rydberg Hamiltonian is described by:\n", 131 | "\\begin{equation}\n", 132 | " \\frac{\\mathrm{d} \\hat{S}_i}{\\mathrm{d} t}= \\frac{\\partial H[\\hat{S}]}{\\partial \\hat{S}_i} \\times \\hat{S},\n", 133 | "\\end{equation}\n", 134 | "where the effective instantaneous magnetic field acting on the $\\hat{S}_i$ is:\n", 135 | "\\begin{equation}\n", 136 | " \\frac{\\partial H[\\hat{S}]}{\\partial \\hat{S}_i}= \\frac{\\Omega(t)}{2} \\left[\\hat{x}\\cos{\\phi(t)}+\\hat{y}\\sin{\\phi(t)}\\right] + \\left[-\\frac{\\Delta_i(t)}{2} + \\frac{1}{4} \\sum_{j\\neq i}V_{ij}\\left(1 + \\hat{S}_j^{(z)} \\right)\\right] \\hat{z}.\n", 137 | "\\end{equation}\n", 138 | "Thus, the dynamics of $N_q$-classical spins is efficiently simulated by integrating a system of $3N_q$ equations." 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 5, 144 | "id": "51be6363", 145 | "metadata": {}, 146 | "outputs": [ 147 | { 148 | "data": { 149 | "text/plain": [ 150 | "train_svm (generic function with 1 method)" 151 | ] 152 | }, 153 | "metadata": {}, 154 | "output_type": "display_data" 155 | } 156 | ], 157 | "source": [ 158 | "function generate_Vmat(locs::Vector{Vector{Float64}}, C6=862690*2π)\n", 159 | " nsites=length(locs)\n", 160 | " Vmat=zeros(nsites,nsites)\n", 161 | " VDel=zeros(nsites)\n", 162 | " for i in 1:nsites\n", 163 | " for j in 1:nsites\n", 164 | " if i != j\n", 165 | " Vmat[i,j]=C6/(norm(locs[i,:]-locs[j,:]))^6\n", 166 | " VDel[i]+=Vmat[i,j]\n", 167 | " end\n", 168 | " end\n", 169 | " end\n", 170 | " return Vmat, VDel\n", 171 | "end\n", 172 | "\n", 173 | "function deriv!(du, u, p::Tuple{Int, Vector{<:Real}, <:Real, Matrix{<:Real}, Vector{<:Real}},t)\n", 174 | " #calculating du/dt\n", 175 | " nsites, Delta, Omega, Vmat, VDel =p\n", 176 | " Bv=Vmat*u[3:3:3*nsites]\n", 177 | " for i in 1:nsites\n", 178 | " Bi = [Omega, 0, -Delta[i]+Bv[i]/2+VDel[i]/2]/2\n", 179 | " s = u[3*i-2:3*i]\n", 180 | " du[3*(i-1)+1] = Bi[3]*s[2] - Bi[2]*s[3]\n", 181 | " du[3*(i-1)+2] = Bi[1]*s[3] - Bi[3]*s[1]\n", 182 | " du[3*(i-1)+3] = Bi[2]*s[1] - Bi[1]*s[2] \n", 183 | " end\n", 184 | " return du\n", 185 | "end\n", 186 | "\n", 187 | "function apply_classical_layer(layer::ClassicalDetuningLayer, x::Vector{<:Real})\n", 188 | " # define Rydberg hamiltonian, detunings parameterized in terms of pca values (x) \n", 189 | " locs=layer.atoms\n", 190 | " readout=layer.readout\n", 191 | " nsites=length(locs)\n", 192 | " Vmat, VDel =generate_Vmat(locs) \n", 193 | " # At the start of the simulation, all atoms of the system are in ground states\n", 194 | " u0 = layer.state\n", 195 | "\n", 196 | " t_start = layer.t_start\n", 197 | " t_end = layer.t_end\n", 198 | " t_step = layer.step\n", 199 | " \n", 200 | " # initialize output vector\n", 201 | " steps = floor(Int, (t_end - t_start) / t_step)\n", 202 | " out2=zeros(3*nsites, 3*nsites, steps)\n", 203 | " out3=zeros(nsites, nsites, steps)\n", 204 | " out31=zeros(div(nsites*(nsites-1),2), steps)\n", 205 | " # Numerically simulate the classical evolution with and store the results\n", 206 | " Omega=layer.Ω\n", 207 | " timespan=(t_start,t_end)\n", 208 | " prob = ODEProblem(deriv!,u0,timespan,(nsites,x,Omega,Vmat, VDel))\n", 209 | " sol = solve(prob, RK4(), saveat= t_step, adaptive=false, dt=1e-3, save_start=false)\n", 210 | " sol3=sol[3:3:3*nsites,:]\n", 211 | " if readout==\"s\"\n", 212 | " out=reduce(vcat, sol)\n", 213 | " elseif readout==\"ss\"\n", 214 | " for i in 1:steps\n", 215 | " out2[:,:,i]=sol[:,i] .* sol[:,i]'\n", 216 | " end\n", 217 | " out=reduce(vcat,(reduce(vcat,sol),reduce(vcat,out2)))\n", 218 | " elseif readout==\"zz\"\n", 219 | " for i in 1:steps\n", 220 | " ind=1\n", 221 | " for i1 in 1:nsites\n", 222 | " for i2 in (i1+1):nsites\n", 223 | " out31[ind, i]= sol3[i1,i]* sol3[i2,i]\n", 224 | " ind+=1\n", 225 | " end\n", 226 | " end\n", 227 | " #out3[:,:,i]=sol3[:,i] .* sol3[:,i]'\n", 228 | " end\n", 229 | " out=reduce(vcat,(reduce(vcat,sol3),reduce(vcat,out31)))\n", 230 | " elseif readout==\"szz\"\n", 231 | " ind=1\n", 232 | " for i in 1:steps\n", 233 | " for i1 in 1:nsites\n", 234 | " for i2 in (i1+1):nsites\n", 235 | " out31[ind, i]= sol3[i1,i]* sol3[i2,i]\n", 236 | " ind+=1\n", 237 | " end\n", 238 | " end\n", 239 | " #out3[:,:,i]=sol3[:,i] .* sol3[:,i]'\n", 240 | " end\n", 241 | " out=reduce(vcat,(reduce(vcat,sol),reduce(vcat,out3)))\n", 242 | " elseif readout==\"z\"\n", 243 | " out=reduce(vcat, sol3)\n", 244 | " end\n", 245 | " \n", 246 | " return out\n", 247 | "end\n", 248 | "\n", 249 | "# implement functions that apply a `DetuningLayer` to a matrix containing scaled detunings for each image\n", 250 | "function apply_classical_layer(layer::ClassicalDetuningLayer, x::Matrix{<:Real})\n", 251 | " iter = SHOW_PROGRESS_BAR ? ProgressBar(1:size(x, 2)) : 1:size(x, 2)\n", 252 | " outs = [apply_classical_layer(layer, x[:, i][:]) for i in iter]\n", 253 | " return hcat(outs...)\n", 254 | "end\n", 255 | "\n", 256 | "\n", 257 | "accuracy(model, xs, targets) = sum(onecold(model(xs), 0:9) .== targets)/length(targets)\n", 258 | "function train_linear_nn!(xs_train, ys_train, xs_test, ys_test; \n", 259 | " regularization::Float64 = 0.0, nepochs::Int = 100, batchsize::Int = 100, \n", 260 | " opt = Flux.Adam(0.01), verbose::Bool, nonlinear::Bool=false)\n", 261 | " \n", 262 | " model = Chain(\n", 263 | " Dense(length(xs_train[:, 1]), 10),\n", 264 | " softmax\n", 265 | " )\n", 266 | "\n", 267 | " if nonlinear\n", 268 | " model = Chain(\n", 269 | " Dense(length(xs_train[:, 1]), 100, relu),\n", 270 | " Dense(100, 100, relu),\n", 271 | " Dense(100, 10),\n", 272 | " softmax\n", 273 | " )\n", 274 | " end\n", 275 | "\n", 276 | " loader = Flux.DataLoader((data = xs_train, label = ys_train); batchsize, shuffle=true);\n", 277 | " ps = Flux.params(model)\n", 278 | "\n", 279 | " verbose && println(\"Training...\")\n", 280 | " losses = zeros(nepochs)\n", 281 | " accs_train = zeros(nepochs)\n", 282 | " accs_test = zeros(nepochs)\n", 283 | " for epoch in (verbose ? ProgressBar(1:nepochs) : 1:nepochs)\n", 284 | " l = 1.0\n", 285 | " for (x, y) in loader\n", 286 | " grads = Flux.gradient(ps) do\n", 287 | " ŷ = model(x)\n", 288 | " if iszero(regularization)\n", 289 | " l = Flux.crossentropy(ŷ, y)\n", 290 | " else\n", 291 | " l = Flux.crossentropy(ŷ, y) + regularization * sum(sum(abs, p) for p in ps)\n", 292 | " end\n", 293 | " end\n", 294 | " Flux.update!(opt, ps, grads)\n", 295 | " end\n", 296 | " losses[epoch] = Flux.crossentropy(model(xs_train), ys_train)\n", 297 | " accs_train[epoch] = accuracy(model, xs_train, onecold(ys_train, 0:9))\n", 298 | " accs_test[epoch] = accuracy(model, xs_test, ys_test)\n", 299 | " end\n", 300 | " return losses, accs_train, accs_test\n", 301 | "end\n", 302 | "\n", 303 | "function train_svm(xs, ys, test_features, test_targets)\n", 304 | " model = svmtrain(xs, onecold(ys, 0:9); svmtype = SVC, kernel = Kernel.Linear)\n", 305 | " train_ŷ, train_decision_values = svmpredict(model, xs);\n", 306 | " acc_train = mean(train_ŷ .== onecold(ys, 0:9))\n", 307 | " ŷ, decision_values = svmpredict(model, test_features);\n", 308 | " acc_test = mean(ŷ .== test_targets)\n", 309 | " return acc_train, acc_test\n", 310 | "end" 311 | ] 312 | }, 313 | { 314 | "cell_type": "markdown", 315 | "id": "e12c0795", 316 | "metadata": {}, 317 | "source": [ 318 | "Let's now implement CRC in a standard reservoir pipeline. Note that in contrast to QRC, simulations with large numbers of spin are possible." 319 | ] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "execution_count": 6, 324 | "id": "ba217106", 325 | "metadata": {}, 326 | "outputs": [], 327 | "source": [ 328 | "# We first use PCA to downsample the data into 10-dimensional vectors\n", 329 | "dim_pca = 8\n", 330 | "\n", 331 | "# Use the `fit` function from the `MultivariateStats` package to generate the projection operator for PCA\n", 332 | "model_pca = fit(PCA, reshape(data_train.features, (784, 60000)); maxoutdim=dim_pca);\n", 333 | "\n", 334 | "# Use the `predict` function from `MultivariateStats` package to compute the first 10 principal components\n", 335 | "x = MultivariateStats.predict(model_pca, reshape(data_train.features, (784, 60000)))\n", 336 | "\n", 337 | "# Let us see how it looks\n", 338 | "num_examples = 10000\n", 339 | "xs = x[:, 1:num_examples]\n", 340 | "\n", 341 | "#normalizing features\n", 342 | "Δ_max = 6\n", 343 | "spectral = max(abs(maximum(xs)), abs(minimum(xs)))\n", 344 | "xs = xs/spectral * Δ_max # to make sure values to be between [-6.0, 6.0]\n", 345 | "\n", 346 | "#one hot encoding of labels \n", 347 | "y = onehotbatch(data_train.targets, 0:9)\n", 348 | "# Let us see how labels look\n", 349 | "ys = y[:, 1:num_examples]\n", 350 | "\n", 351 | "d = 10.0\n", 352 | "nsites=dim_pca\n", 353 | "locs = [[i*d,0.0] for i in 1:nsites] # put atoms in a chain with 10 micron spacing\n", 354 | "u0 =zeros(3*nsites)\n", 355 | "for i in 1:nsites\n", 356 | " u0[3*i] = -1 \n", 357 | "end\n", 358 | "pre_layer = ClassicalDetuningLayer(;\n", 359 | " atoms=locs, \n", 360 | " Ω = 2π, \n", 361 | " t_start = 0.0, \n", 362 | " t_end = 4.0, \n", 363 | " step = 0.5, \n", 364 | " state=u0,\n", 365 | " readout=\"zz\"\n", 366 | ");" 367 | ] 368 | }, 369 | { 370 | "cell_type": "code", 371 | "execution_count": 7, 372 | "id": "3dc34f18", 373 | "metadata": {}, 374 | "outputs": [ 375 | { 376 | "data": { 377 | "text/plain": [ 378 | "288×10000 Matrix{Float64}:\n", 379 | " -0.0025347 -0.016056 -0.00667874 … -0.0200377 -0.0196264\n", 380 | " -0.0394597 -0.037505 -0.00609092 -0.00435202 -0.0030882\n", 381 | " -0.0190444 -0.0621152 -0.0124669 -0.00530816 -0.0586101\n", 382 | " -0.059114 -0.0499508 -0.00379331 -0.0359914 -0.0512428\n", 383 | " -0.021711 -0.0844998 -0.0394741 -0.00952299 -0.0428961\n", 384 | " -0.0341243 -0.0304166 -0.0206318 … -0.0250836 -0.0117516\n", 385 | " -0.0339379 -0.0181282 -0.00327114 -0.00976858 -0.041323\n", 386 | " -0.0019961 -0.00830646 -0.000632081 -0.0106883 -0.00456156\n", 387 | " 0.805169 0.996427 0.656976 0.434101 0.432186\n", 388 | " -0.209162 -0.141048 0.303297 0.368926 0.517966\n", 389 | " ⋮ ⋱ \n", 390 | " 0.180948 -0.146288 0.623413 -0.0312721 0.00124957\n", 391 | " -0.396762 -0.20815 -0.0549247 … -0.156231 -0.0291297\n", 392 | " 0.425304 -0.181323 -0.155715 0.0326403 0.0386768\n", 393 | " 0.00929519 -0.153269 -0.0059803 0.103712 0.0192941\n", 394 | " -0.0203814 -0.218083 0.000526884 0.518129 -0.449779\n", 395 | " 0.0218476 -0.189976 0.00149375 -0.108249 0.597191\n", 396 | " -0.19553 0.0484924 -0.0831955 … 0.119434 -0.0163808\n", 397 | " 0.209596 0.0422427 -0.235864 -0.0249526 0.0217495\n", 398 | " -0.459578 0.060106 0.0207804 -0.12466 -0.507019" 399 | ] 400 | }, 401 | "metadata": {}, 402 | "output_type": "display_data" 403 | } 404 | ], 405 | "source": [ 406 | "# uncomment the next line to see progress bar\n", 407 | "SHOW_PROGRESS_BAR = false \n", 408 | "embeddings = apply_classical_layer(pre_layer, xs)" 409 | ] 410 | }, 411 | { 412 | "cell_type": "code", 413 | "execution_count": 8, 414 | "id": "eb20f35d", 415 | "metadata": {}, 416 | "outputs": [ 417 | { 418 | "data": { 419 | "text/plain": [ 420 | "288×1000 Matrix{Float64}:\n", 421 | " -0.0176704 -0.00440874 -0.0600804 … -0.00608695 -0.0115501\n", 422 | " -0.00250291 -0.0982701 -0.0476215 -0.00277866 -0.00277022\n", 423 | " -0.0184618 -0.013301 -0.023997 -0.0308231 -0.00327755\n", 424 | " -0.0394076 -0.00606576 -0.00966865 -0.0327782 -0.00718883\n", 425 | " -0.0538571 -0.0231886 -0.0573744 -0.00343375 -0.0184842\n", 426 | " -0.0101416 -0.0516895 -0.0162518 … -0.020267 -0.0187568\n", 427 | " -0.0454267 -0.0368324 -0.0192229 -0.0704857 -0.0145644\n", 428 | " -0.00109283 -0.00116435 -0.00847021 -0.0066797 -0.000695645\n", 429 | " 0.45184 0.811446 0.0902105 0.974704 0.554119\n", 430 | " 0.577258 -0.595967 -0.210033 0.468598 0.445898\n", 431 | " ⋮ ⋱ \n", 432 | " -0.340072 -0.0216938 0.101647 0.160414 0.588281\n", 433 | " -0.0816118 0.014536 0.143924 … -0.0423724 0.394969\n", 434 | " -0.530955 0.0572977 0.0661621 0.155324 -0.0879907\n", 435 | " 0.422837 -0.0657711 -0.159792 0.0268686 0.0258371\n", 436 | " 0.101474 0.0440703 -0.226253 -0.00709715 0.0173469\n", 437 | " 0.660178 0.173715 -0.104009 0.0260159 -0.00386452\n", 438 | " 0.0983421 -0.061909 0.136308 … -0.170919 0.509216\n", 439 | " 0.6398 -0.244031 0.0626612 0.626534 -0.113443\n", 440 | " 0.153542 0.163514 0.0887232 -0.165495 -0.0761648" 441 | ] 442 | }, 443 | "metadata": {}, 444 | "output_type": "display_data" 445 | } 446 | ], 447 | "source": [ 448 | "num_test_examples = 1000\n", 449 | "\n", 450 | "# using the same PCA model we fit to the test set\n", 451 | "test_features = MultivariateStats.predict(model_pca, reshape(data_test.features, (784, 10000)))[:, 1:num_test_examples] \n", 452 | "\n", 453 | "# same rescaling we applied on train input get reasonable detuning values \n", 454 | "test_features_qrc = test_features/spectral * Δ_max \n", 455 | "\n", 456 | "# quantum embeddings for 100 test samples\n", 457 | "test_embeddings = apply_classical_layer(pre_layer, test_features_qrc)" 458 | ] 459 | }, 460 | { 461 | "cell_type": "markdown", 462 | "id": "abbe64c8", 463 | "metadata": {}, 464 | "source": [ 465 | "And finally, let's train the linear SVM on the CRC embeddings." 466 | ] 467 | }, 468 | { 469 | "cell_type": "code", 470 | "execution_count": 9, 471 | "id": "82058076", 472 | "metadata": {}, 473 | "outputs": [ 474 | { 475 | "data": { 476 | "text/plain": [ 477 | "(0.8241, 0.797)" 478 | ] 479 | }, 480 | "metadata": {}, 481 | "output_type": "display_data" 482 | } 483 | ], 484 | "source": [ 485 | "tr_svm, ts_svm=train_svm(xs, ys, test_features_qrc, data_test.targets[1:num_test_examples])" 486 | ] 487 | }, 488 | { 489 | "cell_type": "code", 490 | "execution_count": 10, 491 | "id": "738293fc", 492 | "metadata": {}, 493 | "outputs": [ 494 | { 495 | "data": { 496 | "text/plain": [ 497 | "(0.9192, 0.871)" 498 | ] 499 | }, 500 | "metadata": {}, 501 | "output_type": "display_data" 502 | } 503 | ], 504 | "source": [ 505 | "tr_svm, ts_svm=train_svm(embeddings, ys, test_embeddings, data_test.targets[1:num_test_examples])" 506 | ] 507 | }, 508 | { 509 | "cell_type": "markdown", 510 | "id": "bf254000", 511 | "metadata": {}, 512 | "source": [ 513 | "The results are similar to the QRC with the equivalent parameters on this data." 514 | ] 515 | } 516 | ], 517 | "metadata": { 518 | "kernelspec": { 519 | "display_name": "Julia 1.9.2", 520 | "language": "julia", 521 | "name": "julia-1.9" 522 | }, 523 | "language_info": { 524 | "file_extension": ".jl", 525 | "mimetype": "application/julia", 526 | "name": "julia", 527 | "version": "1.9.2" 528 | } 529 | }, 530 | "nbformat": 4, 531 | "nbformat_minor": 5 532 | } 533 | -------------------------------------------------------------------------------- /Images/QRC_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuEraComputing/QRC-tutorials/84c24780ac3963a1a2b5485f035325f3e4ced746/Images/QRC_overview.png -------------------------------------------------------------------------------- /Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | Bloqade = "bd27d05e-4ce1-5e79-84dd-c5d7d508bbe1" 3 | CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" 4 | Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" 5 | DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" 6 | Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" 7 | IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" 8 | JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" 9 | LIBSVM = "b1bec4e5-fd48-53fe-b0cb-9723c09d164b" 10 | MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458" 11 | MultivariateStats = "6f286f6a-111f-5878-ab1e-185364afe411" 12 | OneHotArrays = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" 13 | Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" 14 | ProgressBars = "49802e3a-d2f1-5c88-81d8-b72133a6f568" 15 | PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" 16 | PythonPlot = "274fc56d-3b97-40fa-a1cd-1b4a50311bf9" 17 | Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" 18 | StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" 19 | -------------------------------------------------------------------------------- /QRC Demo Aquila Submission.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "d892ba92", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import os\n", 11 | "import numpy as np\n", 12 | "import tensorflow as tf\n", 13 | "from keras.datasets import mnist\n", 14 | "import matplotlib.pyplot as plt\n", 15 | "from sklearn.decomposition import PCA\n", 16 | "from sklearn.svm import SVC, LinearSVC\n", 17 | "from sklearn.metrics import accuracy_score" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 2, 23 | "id": "5137b1fb", 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [ 27 | "import bloqade\n", 28 | "from bloqade.ir.location import Chain, start" 29 | ] 30 | }, 31 | { 32 | "attachments": {}, 33 | "cell_type": "markdown", 34 | "id": "a038e9ca-8a29-4b8d-993e-17fcb3470308", 35 | "metadata": {}, 36 | "source": [ 37 | "# Quantum Reservoir Computing Demo\n", 38 | "\n", 39 | "In this notebook we will show you how to train a model to classify MNIST images using quantum reservoir computing (QRC) with Bloqade. The general idea is that the chaotic, non-linear dynamics of quantum systems can be used to create a non-linear mapping from a low-dimensional space (which will be PCA embeddings extracted from the MNIST images) to a high dimensional space. In order to construct the mapping, we first ensure that information from the image will totally specify the dynamics of the quantum system. Then, we measure certain properties (in this case, spin expectations and correlations) over time. These measurements form the output of the mapping. \n", 40 | "\n", 41 | "Through the embedding in this high dimensional space classification on using standard ML techniques is expected to perform better. \n", 42 | "\n", 43 | "This demo provides a toy model that does not require access to a quantum computer. It uses classical, numerical simulations of a quantum system with 8 qubits. The classical simulation makes use of the package Bloqade, which is designed for numerical simulations of neutral-atom architectures. With only a minimal of changes, we can use the same code to submit our jobs to Aquila hardware and analyse results.\n", 44 | "\n", 45 | "Neutral atom architectures provide access to several variational parameters. In this demo, we map pixelated descriptions of the images to the local detuning terms in the Rydberg Hamiltonian. We then measure the quantum system and train the classical model which maps the quantum readout from the measurement to the desired prediction. As all training process is in the classical part (excuted on a classical computer), we expect the training is substantially shorter than other traditional quantum machine learning models. More details on numerical simulation of neutral-atom architectures, and the range of the parameters can be found from [Bloqade](https://github.com/QuEraComputing/bloqade-python) documentation. " 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 3, 51 | "id": "fea12b36-2f1c-4538-8cec-c365091a7d6d", 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "name": "stdout", 56 | "output_type": "stream", 57 | "text": [ 58 | "X_train: (60000, 28, 28)\n", 59 | "Y_train: (60000,)\n", 60 | "X_test: (10000, 28, 28)\n", 61 | "Y_test: (10000,)\n" 62 | ] 63 | } 64 | ], 65 | "source": [ 66 | "# Download the MNIST dataset and rescaling data\n", 67 | " \n", 68 | "(train_X, train_y), (test_X, test_y) = mnist.load_data()\n", 69 | "train_X, test_X = train_X / 255.0, test_X / 255.0\n", 70 | "\n", 71 | "## training data set (each image has 28x28 pixels and there are 60000 training samples)\n", 72 | "print('X_train: ' + str(train_X.shape))\n", 73 | "print('Y_train: ' + str(train_y.shape))\n", 74 | "\n", 75 | "## test data set (10000 test samples)\n", 76 | "print('X_test: ' + str(test_X.shape))\n", 77 | "print('Y_test: ' + str(test_y.shape))" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 4, 83 | "id": "122d68ab-68f0-4d82-a0a1-3217d480bbba", 84 | "metadata": { 85 | "tags": [] 86 | }, 87 | "outputs": [ 88 | { 89 | "data": { 90 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGFCAYAAAASI+9IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAJEElEQVR4nO3cOWhV6x7G4bWvwULRSBoFQUQLRUVsVDgIIiIiaBG1CVgpVgpWNnYWEcGhCFqkCtiIpUOjhVMhCOLQBOyVdBqNM5p9m8vLKS7c/Ne5GYzPU6+XtRCyf3yFX6fb7XYbAGia5l+z/QEAzB2iAECIAgAhCgCEKAAQogBAiAIAIQoARM9UH+x0OtP5HQBMs6n8X2UnBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAome2PwD+lwULFpQ3vb290/Al/x8nT55stVu0aFF5s27duvLmxIkT5c3FixfLm4GBgfKmaZrm27dv5c358+fLm7Nnz5Y384GTAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAEC4EG+eWbVqVXmzcOHC8uavv/4qb3bs2FHeNE3TLFu2rLw5dOhQq3fNN2/evClvhoaGypv+/v7yZmJiorxpmqZ59epVefPo0aNW7/oTOSkAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoARKfb7Xan9GCnM93fwt9s2bKl1e7+/fvlTW9vb6t3MbMmJyfLm6NHj5Y3nz59Km/aGBsba7V7//59efP69etW75pvpvJz76QAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQLgldY7q6+trtXv69Gl5s2bNmlbvmm/a/NuNj4+XN7t27SpvmqZpfvz4Ud64AZe/c0sqACWiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAETPbH8A/927d+9a7U6fPl3e7N+/v7x58eJFeTM0NFTetPXy5cvyZs+ePeXN58+fy5uNGzeWN03TNKdOnWq1gwonBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYDodLvd7pQe7HSm+1uYJUuXLi1vJiYmypvh4eHypmma5tixY+XNkSNHypvr16+XN/A7mcrPvZMCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQPTM9gcw+z5+/Dgj7/nw4cOMvKdpmub48ePlzY0bN8qbycnJ8gbmMicFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAKLT7Xa7U3qw05nub2GeW7x4cavd7du3y5udO3eWN/v27Stv7t27V97AbJnKz72TAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAEC4EI85b+3ateXN8+fPy5vx8fHy5sGDB+XNs2fPypumaZqrV6+WN1P88+YP4UI8AEpEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAgX4jEv9ff3lzcjIyPlzZIlS8qbts6cOVPeXLt2rbwZGxsrb/g9uBAPgBJRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAMKFePAfmzZtKm8uX75c3uzevbu8aWt4eLi8GRwcLG/evn1b3jDzXIgHQIkoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCAOFCPPgHli1bVt4cOHCg1btGRkbKmzZ/t/fv3y9v9uzZU94w81yIB0CJKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEW1LhN/H9+/fypqenp7z5+fNnebN3797y5uHDh+UN/4xbUgEoEQUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAg6rdlwTy1efPm8ubw4cPlzdatW8ubpml3uV0bo6Oj5c3jx4+n4UuYDU4KAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCAOFCPOa8devWlTcnT54sbw4ePFjerFixoryZSb9+/SpvxsbGypvJycnyhrnJSQGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgXIhHK20ughsYGGj1rjaX261evbrVu+ayZ8+elTeDg4Plza1bt8ob5g8nBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYBwId48s3z58vJmw4YN5c2VK1fKm/Xr15c3c93Tp0/LmwsXLrR6182bN8ubycnJVu/iz+WkAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAEC4JXUG9PX1lTfDw8Ot3rVly5byZs2aNa3eNZc9efKkvLl06VJ5c/fu3fLm69ev5Q3MFCcFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgPijL8Tbvn17eXP69OnyZtu2beXNypUry5u57suXL612Q0ND5c25c+fKm8+fP5c3MN84KQAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgDEH30hXn9//4xsZtLo6Gh5c+fOnfLm58+f5c2lS5fKm6ZpmvHx8VY7oM5JAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACA63W63O6UHO53p/hYAptFUfu6dFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGA6Jnqg91udzq/A4A5wEkBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGA+DdFFDZD3G7ZOwAAAABJRU5ErkJggg==", 91 | "text/plain": [ 92 | "
" 93 | ] 94 | }, 95 | "metadata": {}, 96 | "output_type": "display_data" 97 | } 98 | ], 99 | "source": [ 100 | "# example of an training dataset image for '5'\n", 101 | "plt.imshow(train_X[0], cmap=plt.get_cmap('gray'), interpolation='None')\n", 102 | "plt.axis('off')\n", 103 | "plt.show()\n" 104 | ] 105 | }, 106 | { 107 | "attachments": {}, 108 | "cell_type": "markdown", 109 | "id": "958cbc65-6686-42c5-9883-389e4498d14d", 110 | "metadata": {}, 111 | "source": [ 112 | "## PCA Reduction\n", 113 | "\n", 114 | "In this notebook, we first train a toy model using 1000 samples from the MNIST dataset.\n", 115 | "\n", 116 | "The images form the input into the quantum system. As we focus on numerical simulation where the number of atoms in the quantum system is limited, we first perform dimensionality reduction using the [principal component analysis (PCA)](https://en.wikipedia.org/wiki/Principal_component_analysis). " 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": 5, 122 | "id": "6cc2f07f-b04f-4e06-946f-1c7baef0a677", 123 | "metadata": { 124 | "scrolled": true 125 | }, 126 | "outputs": [ 127 | { 128 | "name": "stdout", 129 | "output_type": "stream", 130 | "text": [ 131 | "Training set PCA: \n", 132 | " [[ 0.48601015 1.22617358 0.09613354 2.17944297 -0.10704576 0.9116717\n", 133 | " 0.91763033 0.62666468]\n", 134 | " [ 3.96752304 1.15630211 -2.33858651 1.80692626 -3.24421656 0.71353148\n", 135 | " -0.17655089 -0.41164546]\n", 136 | " [-0.2033318 -1.53793393 0.73925392 -2.04318175 -1.20266952 0.00719743\n", 137 | " -3.36881255 1.44545833]\n", 138 | " [-3.13383152 2.38116556 -1.07314212 -0.41520877 -0.00726755 -2.74374391\n", 139 | " -1.85769884 -0.2640067 ]\n", 140 | " [-1.50099977 -2.86487399 -0.06413234 0.94783341 0.38494646 -0.16952834\n", 141 | " -0.35947686 -1.59041131]] \n", 142 | "\n", 143 | "Test set PCA: \n", 144 | " [[ 0.48601015 1.22617358 0.09613354 2.17944297 -0.10704576 0.9116717\n", 145 | " 0.91763033 0.62666468]\n", 146 | " [ 3.96752304 1.15630211 -2.33858651 1.80692626 -3.24421656 0.71353148\n", 147 | " -0.17655089 -0.41164546]\n", 148 | " [-0.2033318 -1.53793393 0.73925392 -2.04318175 -1.20266952 0.00719743\n", 149 | " -3.36881255 1.44545833]\n", 150 | " [-3.13383152 2.38116556 -1.07314212 -0.41520877 -0.00726755 -2.74374391\n", 151 | " -1.85769884 -0.2640067 ]\n", 152 | " [-1.50099977 -2.86487399 -0.06413234 0.94783341 0.38494646 -0.16952834\n", 153 | " -0.35947686 -1.59041131]] \n" 154 | ] 155 | } 156 | ], 157 | "source": [ 158 | "# We first use PCA to downsample the data into 10-dimensional vectors\n", 159 | "dim_pca = 8\n", 160 | "\n", 161 | "# Use the `fit` function from the `sklearn` package to define the PCA model and apply to training set\n", 162 | "pca=PCA(n_components=dim_pca).fit(np.reshape(train_X, (60000,28*28)))\n", 163 | "x=pca.transform(np.reshape(train_X, (60000,28*28)))\n", 164 | "\n", 165 | "# Let us see how it looks\n", 166 | "num_examples = 1000\n", 167 | "xs = x[:num_examples,:]\n", 168 | "print(\"Training set PCA: \\n \", xs[0:5,:], \"\\n\")\n", 169 | "\n", 170 | "#processing the test set\n", 171 | "xt=pca.transform(np.reshape(test_X, (10000,28*28)))\n", 172 | "\n", 173 | "# Let us see how it looks\n", 174 | "num_test_examples = 200\n", 175 | "xs_test = xt[:num_test_examples,:]\n", 176 | "print(\"Test set PCA: \\n \", xs[0:5,:], \"\")" 177 | ] 178 | }, 179 | { 180 | "attachments": {}, 181 | "cell_type": "markdown", 182 | "id": "4b8dd2d9", 183 | "metadata": {}, 184 | "source": [ 185 | "Here, we scale the range of principal components to a feasible range for local detuning implementation, [0, 1]. And later, for each image, we will encode each of the 8 scaled principal components into each single local detuning for 8 atoms. For more details of the neutral atom quantum system, please refer to the documentation of [Bloqade](https://queracomputing.github.io/Bloqade.jl/dev/#What-does-Bloqade-Do?)." 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": 6, 191 | "id": "ed5a7bc3-9d38-4a86-bb7e-ad8be8eb481e", 192 | "metadata": { 193 | "scrolled": true 194 | }, 195 | "outputs": [], 196 | "source": [ 197 | "spectral =(np.amax(xs) - np.amin(xs))\n", 198 | "m1=np.amin(xs)\n", 199 | "xs = (xs - m1)/spectral # to make sure values to be between [0, 1]\n", 200 | "xs_test = (xs_test - m1)/spectral # the same transformation on the test set" 201 | ] 202 | }, 203 | { 204 | "attachments": {}, 205 | "cell_type": "markdown", 206 | "id": "bb7e3094-94c8-4dce-b631-660a094c7475", 207 | "metadata": {}, 208 | "source": [ 209 | "## Build quantum tasks and simulate dynamics\n", 210 | "\n", 211 | "We can now set up the quantum simulation. \n", 212 | "\n", 213 | "- Define a `dictionary`, which captures all physical parameters and readouts of the quantum system.\n", 214 | "- Define functions that simulate quantum dynamics or build tasks that can me submitted to hardware with the input `x` from scaled detunings \n", 215 | "- The simulation of the quantum dynamics has been implemented in [Bloqade](https://github.com/QuEraComputing/bloqade-python)" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": 7, 221 | "id": "e67796a3", 222 | "metadata": {}, 223 | "outputs": [], 224 | "source": [ 225 | "QRC_parameters={\n", 226 | " \"atom_number\":dim_pca, #number of atoms, equal to the dimension of PCA feature vector\n", 227 | " \"geometry_spec\":Chain(dim_pca, lattice_spacing=10), #atom geometry - we will use a linear chain with 10 micron distance between atoms\n", 228 | " \"encoding_scale\":9.0, #scaling factor for local detuning encoding\n", 229 | " \"rabi_frequency\":6.283,#value of Rabi frequency used\n", 230 | " \"total_time\":4, #total maximum evolution time - 4 microseconds\n", 231 | " \"time_steps\":8, #number of probe times for quantum embedding collection - 8 in the 4 microsecond window\n", 232 | " \"readouts\":\"ZZ\", #includes both ZZ correlators together with default Rydberg density as generated embeddings\n", 233 | "}" 234 | ] 235 | }, 236 | { 237 | "cell_type": "markdown", 238 | "id": "49e1e17c", 239 | "metadata": {}, 240 | "source": [ 241 | "Here, we define the function that will proccess the QRC parameters define above and return a task that can be either simulated or ran on hardware. In addition, we define the processing pipeline that will turn the samples collected on hardware or in simulation into QRC embeddings." 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "execution_count": 8, 247 | "id": "3ffae4d8", 248 | "metadata": {}, 249 | "outputs": [], 250 | "source": [ 251 | "#Main function for building quantum tasks.\n", 252 | "def build_task(QRC_parameters, xs1):\n", 253 | " natoms=QRC_parameters[\"atom_number\"]\n", 254 | " encoding_scale=QRC_parameters[\"encoding_scale\"]\n", 255 | " dt=QRC_parameters[\"total_time\"]/QRC_parameters[\"time_steps\"]\n", 256 | " #builds global Rabi and detuning pulses\n", 257 | " rabi_oscillations_program = (QRC_parameters[\"geometry_spec\"]\n", 258 | " .rydberg.rabi.amplitude.uniform.constant(\n", 259 | " duration=\"run_time\", value=QRC_parameters[\"rabi_frequency\"]\n", 260 | " )\n", 261 | " .detuning.uniform.constant(duration=\"run_time\", value=encoding_scale/2)\n", 262 | " #adds local detuning according to the feature vector\n", 263 | " .scale(list(xs1)).constant(duration=\"run_time\", value=-encoding_scale)\n", 264 | " ) \n", 265 | " rabi_oscillation_job = rabi_oscillations_program.batch_assign(run_time=np.arange(1, QRC_parameters[\"time_steps\"]+1, 1)*dt)\n", 266 | " #`batch_assign` used to probe the quantum reservoir at set number of timesteps\n", 267 | " return rabi_oscillation_job\n", 268 | "\n", 269 | "#To obtain the embeddings, we process the report containing the collected samples into embeddins made of Z and ZZ observables.\n", 270 | "def process_results(QRC_parameters, report): \n", 271 | " embedding=[]\n", 272 | " natoms=QRC_parameters[\"atom_number\"]\n", 273 | " try:\n", 274 | " for t in range(QRC_parameters[\"time_steps\"]):\n", 275 | " ar1=-1.0+2*((report.bitstrings())[t])\n", 276 | " nsh1=ar1.shape[0]\n", 277 | " for i in range(natoms):\n", 278 | " embedding.append(np.sum(ar1[:,i])/nsh1) #Z expectation values\n", 279 | " if QRC_parameters[\"readouts\"]==\"ZZ\":\n", 280 | " for i in range(natoms):\n", 281 | " for j in range(i+1,natoms):\n", 282 | " embedding.append(np.sum(ar1[:,i]*ar1[:,j])/nsh1) #ZZ expectation values\n", 283 | " except: #In case no experimental results were obtained.\n", 284 | " print(\"No results exist.\")\n", 285 | " for t in range(QRC_parameters[\"time_steps\"]):\n", 286 | " for i in range(natoms):\n", 287 | " embedding.append(0.0)\n", 288 | " if QRC_parameters[\"readouts\"]==\"ZZ\":\n", 289 | " for i in range(natoms):\n", 290 | " for j in range(i+1,natoms):\n", 291 | " embedding.append(0.0)\n", 292 | " return embedding\n", 293 | "\n", 294 | "#Processing if only samples are needed.\n", 295 | "def process_results_samples(QRC_parameters, report): \n", 296 | " embedding=[]\n", 297 | " natoms=QRC_parameters[\"atom_number\"]\n", 298 | " try:\n", 299 | " embedding=report.bitstrings()\n", 300 | " # for t in range(QRC_parameters[\"time_steps\"]):\n", 301 | " # ar1=-1.0+2*((report.bitstrings())[t])\n", 302 | " # nsh1=ar1.shape[0]\n", 303 | " # for i in range(natoms):\n", 304 | " # embedding.append(np.sum(ar1[:,i])/nsh1) #Z expectation values\n", 305 | " # if QRC_parameters[\"readouts\"]==\"ZZ\":\n", 306 | " # for i in range(natoms):\n", 307 | " # for j in range(i+1,natoms):\n", 308 | " # embedding.append(np.sum(ar1[:,i]*ar1[:,j])/nsh1) #ZZ expectation values\n", 309 | " except: #In case no experimental results were obtained.\n", 310 | " print(\"No results exist.\")\n", 311 | " for t in range(QRC_parameters[\"time_steps\"]):\n", 312 | " for i in range(natoms):\n", 313 | " embedding.append(0.0)\n", 314 | " if QRC_parameters[\"readouts\"]==\"ZZ\":\n", 315 | " for i in range(natoms):\n", 316 | " for j in range(i+1,natoms):\n", 317 | " embedding.append(0.0)\n", 318 | " return embedding" 319 | ] 320 | }, 321 | { 322 | "cell_type": "markdown", 323 | "id": "51321f29", 324 | "metadata": {}, 325 | "source": [ 326 | "In order to generate QRC embeddings, we will call emulation routines for the tasks we build and process the resulting data. We will collect 1000 samples per datapoint in emulation" 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "execution_count": 9, 332 | "id": "ea54345e", 333 | "metadata": {}, 334 | "outputs": [], 335 | "source": [ 336 | "##Simulating and gathering samples only\n", 337 | "# samples_train=np.array([process_results_samples(QRC_parameters, \n", 338 | "# build_task(QRC_parameters, xs[data,:]).bloqade.python().run(shots=100, rtol=1e-8, atol=1e-8).report())\n", 339 | "# for data in range(num_examples)])\n", 340 | "# np.save(\"samples_train.npy\", samples_train)\n", 341 | "# samples_test=np.array([process_results_samples(QRC_parameters, \n", 342 | "# build_task(QRC_parameters, xs_test[data,:]).bloqade.python().run(shots=100, rtol=1e-8, atol=1e-8).report())\n", 343 | "# for data in range(num_test_examples)])\n", 344 | "# np.save(\"samples_test.npy\", samples_test)" 345 | ] 346 | }, 347 | { 348 | "cell_type": "code", 349 | "execution_count": 10, 350 | "id": "43caeabb", 351 | "metadata": {}, 352 | "outputs": [], 353 | "source": [ 354 | "def get_embeddings_emulation(xs, num_examples, nshots=1000):\n", 355 | " return np.array([process_results(QRC_parameters, \n", 356 | " build_task(QRC_parameters, xs[data,:]).bloqade.python().run(shots=nshots, rtol=1e-8, atol=1e-8).report())\n", 357 | " for data in range(num_examples)])" 358 | ] 359 | }, 360 | { 361 | "cell_type": "markdown", 362 | "id": "0a553c9b", 363 | "metadata": {}, 364 | "source": [ 365 | "Now, we are ready to run the simulation by apply the defined emulation pipeline to the scaled feature vectors! For each image, the readouts from the quantum dynamics is a 288-dimensional vector which has much higher dimension than the PCA dimension. The full results will be stored in a $1000\\times 288$ matrix `embeddings`.\n", 366 | "\n", 367 | "(It might take a few minutes)" 368 | ] 369 | }, 370 | { 371 | "cell_type": "code", 372 | "execution_count": 11, 373 | "id": "ac5935be", 374 | "metadata": {}, 375 | "outputs": [], 376 | "source": [ 377 | "embeddings=get_embeddings_emulation(xs, num_examples, nshots=1000)\n", 378 | "test_embeddings=get_embeddings_emulation(xs_test, num_test_examples, nshots=1000)" 379 | ] 380 | }, 381 | { 382 | "cell_type": "code", 383 | "execution_count": 12, 384 | "id": "067eac2e", 385 | "metadata": {}, 386 | "outputs": [ 387 | { 388 | "name": "stdout", 389 | "output_type": "stream", 390 | "text": [ 391 | "(1000, 288)\n", 392 | "(200, 288)\n" 393 | ] 394 | } 395 | ], 396 | "source": [ 397 | "print(embeddings.shape)\n", 398 | "print(test_embeddings.shape)" 399 | ] 400 | }, 401 | { 402 | "attachments": {}, 403 | "cell_type": "markdown", 404 | "id": "b4fc61b5-2e5e-4954-8cc9-eccacc34c1f1", 405 | "metadata": {}, 406 | "source": [ 407 | "## Training Neural Network and Evaluating Performance\n", 408 | "\n", 409 | "Now we are going to train a classical neural network without hidden layers (a linear classifier with `softmax` output function), using quantum measurements stored in `embeddings` as the input. In comparision, we also trained a neural network without hidden layers directly using PCA feature vectors without the quantum reservoir processing, as well as a simple neural network with two hidden layers for comparison.\n", 410 | "\n", 411 | "Here, we used the machine learning framework of [tensorflow](https://www.tensorflow.org/) for the neural network training." 412 | ] 413 | }, 414 | { 415 | "cell_type": "markdown", 416 | "id": "c63a971b", 417 | "metadata": {}, 418 | "source": [ 419 | "First, let's see the results of a linear classifier applied on PCA features directly." 420 | ] 421 | }, 422 | { 423 | "cell_type": "code", 424 | "execution_count": 13, 425 | "id": "fe750ec5", 426 | "metadata": {}, 427 | "outputs": [ 428 | { 429 | "name": "stdout", 430 | "output_type": "stream", 431 | "text": [ 432 | "PCA test accuracy: 69.0 %\n" 433 | ] 434 | } 435 | ], 436 | "source": [ 437 | "#building a linear model\n", 438 | "model = tf.keras.Sequential([\n", 439 | " tf.keras.layers.Dense(10)\n", 440 | " ])\n", 441 | "model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.1),\n", 442 | " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", 443 | " metrics=['accuracy'])\n", 444 | "\n", 445 | "#fitting to train data\n", 446 | "model.fit(xs, train_y[:num_examples], epochs=1000, batch_size=100, verbose=0)\n", 447 | "\n", 448 | "#evaluating on test data\n", 449 | "test_loss, test_acc = model.evaluate(xs_test, test_y[:num_test_examples], verbose=0)\n", 450 | "print('PCA test accuracy:', 100*round(test_acc, 2), \"%\")\n" 451 | ] 452 | }, 453 | { 454 | "cell_type": "markdown", 455 | "id": "a0d3e316", 456 | "metadata": {}, 457 | "source": [ 458 | "And now, let's apply the same linear classifier on our QRC embeddings." 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "execution_count": 14, 464 | "id": "74ffd5d9", 465 | "metadata": {}, 466 | "outputs": [ 467 | { 468 | "name": "stdout", 469 | "output_type": "stream", 470 | "text": [ 471 | "QRC test accuracy: 83.0 %\n" 472 | ] 473 | } 474 | ], 475 | "source": [ 476 | "#building a linear model\n", 477 | "#we include regularization and tune epsilon parameter of the optimizer to better control training from QRC embeddings generated on finite number of samples\n", 478 | "model = tf.keras.Sequential([\n", 479 | " tf.keras.layers.Dense(10, kernel_regularizer=tf.keras.regularizers.L1(l1=0.0001))\n", 480 | " ])\n", 481 | "model.compile(optimizer=tf.keras.optimizers.Adam(epsilon=0.0002),\n", 482 | " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", 483 | " metrics=['accuracy'])\n", 484 | "\n", 485 | "#fitting to train data\n", 486 | "model.fit(embeddings, train_y[:num_examples], epochs=2000, batch_size=100, verbose=0)\n", 487 | "\n", 488 | "#evaluating on test data\n", 489 | "test_loss, test_acc = model.evaluate(test_embeddings, test_y[:num_test_examples], verbose=0)\n", 490 | "print('QRC test accuracy:', 100*round(test_acc, 2), \"%\")\n" 491 | ] 492 | }, 493 | { 494 | "cell_type": "markdown", 495 | "id": "0cc8b956", 496 | "metadata": {}, 497 | "source": [ 498 | "QRC embeddings significantly outperform linear classifier on PCA embeddings only!\n", 499 | "\n", 500 | "Finally, let's compare with a sizable classical neural network with two hidden layers." 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "execution_count": 16, 506 | "id": "266a1d4f", 507 | "metadata": {}, 508 | "outputs": [ 509 | { 510 | "name": "stdout", 511 | "output_type": "stream", 512 | "text": [ 513 | "4-layer NN test accuracy: 81.0 %\n" 514 | ] 515 | } 516 | ], 517 | "source": [ 518 | "model = tf.keras.Sequential([\n", 519 | " tf.keras.layers.Dense(50, activation='relu'),\n", 520 | " tf.keras.layers.Dense(50, activation='relu'),\n", 521 | " tf.keras.layers.Dense(10),\n", 522 | "\n", 523 | " ])\n", 524 | "model.compile(optimizer=tf.keras.optimizers.Adam(),\n", 525 | " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", 526 | " metrics=['accuracy'])\n", 527 | "model.fit(xs, train_y[:num_examples], epochs=1000, batch_size=100, verbose=0)\n", 528 | "test_loss, test_acc = model.evaluate(xs_test, test_y[:num_test_examples], verbose=0)\n", 529 | "print('4-layer NN test accuracy:', 100*round(test_acc, 2), \"%\")" 530 | ] 531 | }, 532 | { 533 | "cell_type": "markdown", 534 | "id": "ebe25659", 535 | "metadata": {}, 536 | "source": [ 537 | "While in this case classical neural network outperforms QRC, this is a consequence of limited dataset size. With more data, QRC will match the 4-layer neural network performance." 538 | ] 539 | }, 540 | { 541 | "cell_type": "code", 542 | "execution_count": 15, 543 | "id": "5333d324", 544 | "metadata": {}, 545 | "outputs": [ 546 | { 547 | "name": "stderr", 548 | "output_type": "stream", 549 | "text": [ 550 | "c:\\Users\\mkornjaca\\anaconda3\\envs\\blpy_June\\Lib\\site-packages\\sklearn\\svm\\_base.py:1235: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n", 551 | " warnings.warn(\n" 552 | ] 553 | }, 554 | { 555 | "name": "stdout", 556 | "output_type": "stream", 557 | "text": [ 558 | "Linear SVM test accuracy: 70.0 %\n", 559 | "SVC test accuracy (rbf kernel): 89.0 %\n", 560 | "QRC test accuracy: 84.0 %\n" 561 | ] 562 | } 563 | ], 564 | "source": [ 565 | "#The same implemented with LinearSVC and SVC from sklearn.\n", 566 | "\n", 567 | "svm = LinearSVC(C=1.0, multi_class='crammer_singer', dual=False)\n", 568 | "svm.fit(xs, train_y[:num_examples])\n", 569 | "y_pred = svm.predict(xs_test)\n", 570 | "accuracy=svm.score(xs_test, test_y[:num_test_examples])\n", 571 | "print('Linear SVM test accuracy:', 100*round(accuracy, 2), \"%\")\n", 572 | "\n", 573 | "svm = SVC(C=8.)\n", 574 | "svm.fit(xs, train_y[:num_examples])\n", 575 | "y_pred = svm.predict(xs_test)\n", 576 | "accuracy=svm.score(xs_test, test_y[:num_test_examples])\n", 577 | "print('SVC test accuracy (rbf kernel):', 100*round(accuracy, 2), \"%\")\n", 578 | "\n", 579 | "\n", 580 | "svm = LinearSVC(C=1.0, multi_class='crammer_singer', dual=False)\n", 581 | "svm.fit(embeddings, train_y[:num_examples])\n", 582 | "y_pred = svm.predict(embeddings)\n", 583 | "accuracy=svm.score(test_embeddings, test_y[:num_test_examples])\n", 584 | "print('QRC test accuracy:', 100*round(accuracy, 2), \"%\")\n" 585 | ] 586 | }, 587 | { 588 | "cell_type": "markdown", 589 | "id": "5456543f", 590 | "metadata": {}, 591 | "source": [ 592 | "## Implementation on Aquila" 593 | ] 594 | }, 595 | { 596 | "cell_type": "markdown", 597 | "id": "a98194b5", 598 | "metadata": {}, 599 | "source": [ 600 | "The convenience of [Bloqade](https://github.com/QuEraComputing/bloqade-python) allows us to submit the same tasks to Aquila with only minimal changes and test our algorithm! Let's start by gathering AWS braket credentials." 601 | ] 602 | }, 603 | { 604 | "cell_type": "code", 605 | "execution_count": 19, 606 | "id": "ad2cec48", 607 | "metadata": {}, 608 | "outputs": [], 609 | "source": [ 610 | "#AWS braket credentials\n", 611 | "os.environ[\"AWS_ACCESS_KEY_ID\"] = \"key1\"\n", 612 | "os.environ[\"AWS_SECRET_ACCESS_KEY\"] = \"key2\"\n", 613 | "os.environ[\"AWS_SESSION_TOKEN\"] = \"key3\"" 614 | ] 615 | }, 616 | { 617 | "cell_type": "markdown", 618 | "id": "f1b1d222", 619 | "metadata": {}, 620 | "source": [ 621 | "We are now ready to submit the tasks that we emulated. The only difference from emulation is that we're going to save are tasks as we'll have to wait for their turn in the Aquila queue. \n", 622 | "\n", 623 | "In addition, for basic tests, we will lower the number of shots that we gather for each image. While the performance will neccesarily be lower than in emulation, this will allow us to obtain results faster for the proof of principle showcase. Furthermore, we will use the built-in `parallelize` Bloqade capability, that we'll allow us to paralelize our sampling by running several instances of our atom chain in parallel on Aquila." 624 | ] 625 | }, 626 | { 627 | "cell_type": "code", 628 | "execution_count": 21, 629 | "id": "583b9878", 630 | "metadata": {}, 631 | "outputs": [], 632 | "source": [ 633 | "path_to_tasks=\"./qrc_tasks\"\n", 634 | "if not os.path.exists(path_to_tasks):\n", 635 | " os.mkdir(path_to_tasks)\n", 636 | " \n", 637 | "\n", 638 | "#Train task submissions\n", 639 | "nshots=10 #The actual number of shots collected per image will be 60, as we parallelize our sampling with 6 chains that are 15 micrometers appart.\n", 640 | "for data in range(num_examples):\n", 641 | " try:\n", 642 | " #task=build_task(QRC_parameters, xs[data,:]).parallelize(15).braket.aquila().run_async(shots=nshots, name = \"QRC_train_\"+str(data))\n", 643 | " task=build_task(QRC_parameters, xs[data,:]).parallelize(15).quera.mock().run_async(shots=nshots, name = \"QRC_train_\"+str(data))\n", 644 | " bloqade.save(\n", 645 | " task,\n", 646 | " path_to_tasks + \"/\" + \"qrc_train_\" + str(data) + \".json\", \n", 647 | " )\n", 648 | " except:\n", 649 | " print(\"Training task \" + str(data) + \" was not submitted.\")\n", 650 | "\n", 651 | "\n", 652 | "\n", 653 | "#Test task submissions\n", 654 | "for data in range(num_test_examples):\n", 655 | " try:\n", 656 | " #task=build_task(QRC_parameters, xs[data,:]).parallelize(15).braket.aquila().run_async(shots=nshots, name = \"QRC_test_\"+str(data))\n", 657 | " task=build_task(QRC_parameters, xs_test[data,:]).parallelize(15).quera.mock().run_async(shots=nshots, name = \"QRC_test_\"+str(data))\n", 658 | " bloqade.save(\n", 659 | " task,\n", 660 | " path_to_tasks + \"/\" + \"qrc_test_\" + str(data) + \".json\", \n", 661 | " )\n", 662 | " except:\n", 663 | " print(\"Test task \" + str(data) + \" was not submitted.\")\n", 664 | "\n" 665 | ] 666 | }, 667 | { 668 | "cell_type": "markdown", 669 | "id": "d282e822", 670 | "metadata": {}, 671 | "source": [ 672 | "Once the tasks have been completed, we gather Aquila results and save them." 673 | ] 674 | }, 675 | { 676 | "cell_type": "code", 677 | "execution_count": null, 678 | "id": "5e99994b", 679 | "metadata": {}, 680 | "outputs": [], 681 | "source": [ 682 | "path_to_results=\"./qrc_results\"\n", 683 | "if not os.path.exists(path_to_results):\n", 684 | " os.mkdir(path_to_results)\n", 685 | "\n", 686 | "\n", 687 | "#Train task fetching\n", 688 | "for data in range(num_examples):\n", 689 | " try:\n", 690 | " task = bloqade.load(path_to_tasks + \"/\" + \"qrc_train_\" + str(data) + \".json\")\n", 691 | " bloqade.save(\n", 692 | " task.fetch(),\n", 693 | " path_to_results + \"/\" + \"qrc_train_\" + str(data) + \".json\", \n", 694 | " )\n", 695 | " except:\n", 696 | " print(\"Training task \" + str(data) + \" was not saved.\")\n", 697 | "\n", 698 | "#Test task fetching\n", 699 | "for data in range(num_test_examples):\n", 700 | " try:\n", 701 | " task = bloqade.load(path_to_tasks + \"/\" + \"qrc_test_\" + str(data) + \".json\")\n", 702 | " bloqade.save(\n", 703 | " task.fetch(),\n", 704 | " path_to_results + \"/\" + \"qrc_test_\" + str(data) + \".json\", \n", 705 | " )\n", 706 | " except:\n", 707 | " print(\"Test task \" + str(data) + \" was not saved.\")" 708 | ] 709 | }, 710 | { 711 | "cell_type": "markdown", 712 | "id": "9916cf7a", 713 | "metadata": {}, 714 | "source": [ 715 | "Just like that, everything is in place for generating QRC embeddings from hardware. We can even use the same processing pipeline as for emulator results." 716 | ] 717 | }, 718 | { 719 | "cell_type": "code", 720 | "execution_count": null, 721 | "id": "bf14461e", 722 | "metadata": {}, 723 | "outputs": [], 724 | "source": [ 725 | "embeddings_Aquila=[]\n", 726 | "for data in range(num_examples):\n", 727 | " task_report = bloqade.load(path_to_results + \"/\" + \"qrc_train_\" + str(data) + \".json\").report()\n", 728 | " embeddings.append(process_results(QRC_parameters,task_report))\n", 729 | "embeddings_Aquila=np.array(embeddings_Aquila)\n", 730 | "\n", 731 | "test_embeddings_Aquila=[]\n", 732 | "for data in range(num_test_examples):\n", 733 | " task_report = bloqade.load(path_to_results + \"/\" + \"qrc_test_\" + str(data) + \".json\").report()\n", 734 | " test_embeddings_Aquila.append(process_results(QRC_parameters,task_report))\n", 735 | "test_embeddings_Aquila=np.array(test_embeddings_Aquila)\n" 736 | ] 737 | }, 738 | { 739 | "cell_type": "markdown", 740 | "id": "c0936b3f", 741 | "metadata": {}, 742 | "source": [ 743 | "Finally, let's train our linear classification layer on Aquila embeddings!" 744 | ] 745 | }, 746 | { 747 | "cell_type": "code", 748 | "execution_count": null, 749 | "id": "315ee78f", 750 | "metadata": {}, 751 | "outputs": [], 752 | "source": [ 753 | "#building a linear model\n", 754 | "#we include regularization and tune epsilon parameter of the optimizer to better control training from QRC embeddings generated on finite number of samples\n", 755 | "model = tf.keras.Sequential([\n", 756 | " tf.keras.layers.Dense(10, kernel_regularizer=tf.keras.regularizers.L1(l1=0.02))\n", 757 | " ])\n", 758 | "model.compile(optimizer=tf.keras.optimizers.Adam(epsilon=0.0002),\n", 759 | " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", 760 | " metrics=['accuracy'])\n", 761 | "\n", 762 | "#fitting to train data\n", 763 | "model.fit(embeddings_Aquila, train_y[:num_examples], epochs=1500, batch_size=100, verbose=0)\n", 764 | "\n", 765 | "#evaluating on test data\n", 766 | "test_loss, test_acc = model.evaluate(test_embeddings_Aquila, test_y[:num_test_examples], verbose=0)\n", 767 | "print('QRC test accuracy on Aquila:', 100*round(test_acc, 2), \"%\")" 768 | ] 769 | }, 770 | { 771 | "cell_type": "markdown", 772 | "id": "04939493", 773 | "metadata": {}, 774 | "source": [ 775 | "Aquila has succesfully performed MNIST classification! Note, due to the limited sampling for this proof of principle experiment, the performance is significantly below the emulated performance." 776 | ] 777 | }, 778 | { 779 | "cell_type": "code", 780 | "execution_count": null, 781 | "id": "54507233", 782 | "metadata": {}, 783 | "outputs": [], 784 | "source": [] 785 | } 786 | ], 787 | "metadata": { 788 | "kernelspec": { 789 | "display_name": "Python 3 (ipykernel)", 790 | "language": "python", 791 | "name": "python3" 792 | }, 793 | "language_info": { 794 | "codemirror_mode": { 795 | "name": "ipython", 796 | "version": 3 797 | }, 798 | "file_extension": ".py", 799 | "mimetype": "text/x-python", 800 | "name": "python", 801 | "nbconvert_exporter": "python", 802 | "pygments_lexer": "ipython3", 803 | "version": "3.12.4" 804 | } 805 | }, 806 | "nbformat": 4, 807 | "nbformat_minor": 5 808 | } 809 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QRC tutorials 2 | A set of tutorials for quantum reservoir learning. The tutorials reproduce proof-of-concept simulations and experiments from QuEra's [Large-scale quantum reservoir learning with an analog quantum computer paper](https://arxiv.org/abs/2407.02553). The tutorials are built on [Bloqade.jl](https://github.com/QuEraComputing/Bloqade.jl) and [Bloqade](https://github.com/QuEraComputing/bloqade-python) neutral atom quantum computing SDKs. 3 | 4 | [](https://account.qbraid.com?gitHubUrl=https://github.com/QuEraComputing/QRC-tutorials.git) 5 | 6 | 7 | ## Overview 8 | ![Overview of the quantum reservoir computing algorithm with QuEra's Aquila.](Images/QRC_overview.png) 9 | 10 | The QRC algorithm pipeline contains three steps -- classical preprocessing (left), quantum reservoir (center), and classical postprocessing and prediction (right). In the preprocessing step, data features are brought into a form readily encoded to the neutral-atom analog quantum computer. They may require optional dimensional reduction for high-dimensional data (such as images, top) or feature engineering and selection (such as data windowing for timeseries, bottom). The encoding of the data features proceeds by three methods, i.e, encoding into the time profile of the global detuning pulse, the interaction strengths by atom position modulation, and the local pattern of the detuning pulse. The quantum system serving as the reservoir is then evolved over varying time periods and probed through repeated projective measurements. In the third step, the measurement outputs are processed classically to provide expectation values of local observables that form a set of QRC embeddings. The embeddings are subsequently used as inputs to a simple and fast classical training step, for which we typically employ linear support vector machines or regression. The trained models are tested and used for inference by processing additional data through the QRC pipeline and evaluating classical outputs based on obtained embeddings. 11 | 12 | ## Contents 13 | 14 | The starting point of the tutorial is a proof-of-concept simulations based on [Bloqade.jl](https://github.com/QuEraComputing/Bloqade.jl), `QRC Demo MNIST.ipynb`. The notebook covers the basic quantum reservoir learning pipeline on an MNIST dataset example. The starting notebook introduces local detuning encoding, the choice of Hamiltonian parameter regime, and comparison with classical neural nets. 15 | 16 | The tutorial on the simulation side is supplemented by two additional julia notebooks. `Classical Spin Reservoir Demo.ipynb` implements the classical spin reservoir on the MNIST data dervied from the quantum reservoir in the infinite (classical) spin limit and used extensively for comparisons in the paper. `QRC Demo Timeseries.ipynb` applies the quantum reservoir learning pipeline on the Santa Fe laser timeseries prediction task and introduces global pulse encoding along the way. 17 | 18 | The second major part of the tutorial, `QRC Demo Aquila Submission.ipynb`, covers the simulations and experimental task submission to QuEra's Aquila based on [Bloqade](https://github.com/QuEraComputing/bloqade-python). The notebook follows the same quantum reservoir learning pipeline for MNIST dataset as in `QRC Demo MNIST.ipynb`, but adds the changes needed for efficient job submission through our python SDK, as well as direct data analysis with standard python machine learning SDKs. 19 | 20 | You will also find a `requirements.txt` file which lets you install the necessary Python dependencies required to run the `QRC Demo Aquila Submission.ipynb` notebook as well as a `Project.toml` that has the Julia dependencies for all other notebooks. 21 | 22 | -------------------------------------------------------------------------------- /data/Laser.csv: -------------------------------------------------------------------------------- 1 | laser 2 | 86 3 | 141 4 | 95 5 | 41 6 | 22 7 | 21 8 | 32 9 | 72 10 | 138 11 | 111 12 | 48 13 | 23 14 | 19 15 | 27 16 | 59 17 | 129 18 | 129 19 | 58 20 | 27 21 | 19 22 | 24 23 | 46 24 | 112 25 | 144 26 | 73 27 | 30 28 | 20 29 | 19 30 | 37 31 | 92 32 | 152 33 | 93 34 | 36 35 | 20 36 | 18 37 | 29 38 | 71 39 | 146 40 | 117 41 | 46 42 | 23 43 | 18 44 | 22 45 | 52 46 | 128 47 | 142 48 | 62 49 | 26 50 | 17 51 | 19 52 | 37 53 | 100 54 | 158 55 | 86 56 | 32 57 | 17 58 | 17 59 | 27 60 | 72 61 | 154 62 | 118 63 | 43 64 | 20 65 | 15 66 | 21 67 | 47 68 | 128 69 | 150 70 | 63 71 | 24 72 | 16 73 | 17 74 | 33 75 | 92 76 | 166 77 | 95 78 | 33 79 | 16 80 | 14 81 | 22 82 | 58 83 | 149 84 | 137 85 | 50 86 | 20 87 | 15 88 | 16 89 | 35 90 | 106 91 | 169 92 | 82 93 | 28 94 | 15 95 | 14 96 | 23 97 | 65 98 | 160 99 | 133 100 | 45 101 | 18 102 | 14 103 | 16 104 | 36 105 | 111 106 | 176 107 | 80 108 | 26 109 | 14 110 | 13 111 | 20 112 | 60 113 | 163 114 | 140 115 | 45 116 | 18 117 | 12 118 | 14 119 | 30 120 | 98 121 | 185 122 | 93 123 | 28 124 | 14 125 | 12 126 | 17 127 | 46 128 | 145 129 | 167 130 | 58 131 | 19 132 | 11 133 | 12 134 | 21 135 | 68 136 | 183 137 | 132 138 | 38 139 | 15 140 | 11 141 | 13 142 | 26 143 | 93 144 | 202 145 | 100 146 | 27 147 | 12 148 | 10 149 | 13 150 | 30 151 | 114 152 | 206 153 | 82 154 | 21 155 | 11 156 | 9 157 | 10 158 | 30 159 | 120 160 | 215 161 | 77 162 | 20 163 | 10 164 | 8 165 | 9 166 | 21 167 | 95 168 | 234 169 | 99 170 | 22 171 | 9 172 | 8 173 | 7 174 | 9 175 | 35 176 | 176 177 | 215 178 | 46 179 | 11 180 | 7 181 | 5 182 | 4 183 | 3 184 | 4 185 | 19 186 | 105 187 | 125 188 | 55 189 | 30 190 | 28 191 | 41 192 | 71 193 | 98 194 | 79 195 | 49 196 | 34 197 | 33 198 | 47 199 | 75 200 | 95 201 | 76 202 | 48 203 | 34 204 | 35 205 | 49 206 | 78 207 | 96 208 | 75 209 | 47 210 | 34 211 | 34 212 | 49 213 | 81 214 | 99 215 | 76 216 | 46 217 | 32 218 | 33 219 | 49 220 | 83 221 | 101 222 | 74 223 | 44 224 | 32 225 | 33 226 | 50 227 | 85 228 | 103 229 | 73 230 | 43 231 | 30 232 | 31 233 | 49 234 | 85 235 | 106 236 | 74 237 | 43 238 | 31 239 | 31 240 | 49 241 | 87 242 | 109 243 | 76 244 | 41 245 | 29 246 | 30 247 | 47 248 | 87 249 | 110 250 | 76 251 | 41 252 | 28 253 | 30 254 | 47 255 | 88 256 | 114 257 | 79 258 | 41 259 | 28 260 | 28 261 | 45 262 | 86 263 | 117 264 | 82 265 | 42 266 | 26 267 | 26 268 | 43 269 | 84 270 | 119 271 | 85 272 | 42 273 | 26 274 | 25 275 | 39 276 | 80 277 | 121 278 | 90 279 | 43 280 | 26 281 | 24 282 | 36 283 | 76 284 | 123 285 | 96 286 | 46 287 | 26 288 | 23 289 | 35 290 | 72 291 | 123 292 | 102 293 | 50 294 | 27 295 | 22 296 | 31 297 | 64 298 | 121 299 | 110 300 | 53 301 | 27 302 | 21 303 | 28 304 | 57 305 | 117 306 | 120 307 | 59 308 | 28 309 | 20 310 | 25 311 | 49 312 | 109 313 | 128 314 | 68 315 | 31 316 | 20 317 | 23 318 | 43 319 | 98 320 | 135 321 | 77 322 | 34 323 | 22 324 | 22 325 | 36 326 | 86 327 | 139 328 | 91 329 | 38 330 | 21 331 | 19 332 | 30 333 | 73 334 | 137 335 | 107 336 | 44 337 | 23 338 | 19 339 | 26 340 | 59 341 | 129 342 | 125 343 | 55 344 | 24 345 | 18 346 | 22 347 | 47 348 | 114 349 | 140 350 | 68 351 | 28 352 | 18 353 | 19 354 | 36 355 | 93 356 | 150 357 | 88 358 | 34 359 | 19 360 | 18 361 | 28 362 | 72 363 | 147 364 | 112 365 | 43 366 | 20 367 | 16 368 | 23 369 | 53 370 | 131 371 | 137 372 | 58 373 | 24 374 | 16 375 | 19 376 | 38 377 | 104 378 | 156 379 | 80 380 | 30 381 | 17 382 | 16 383 | 28 384 | 75 385 | 156 386 | 112 387 | 40 388 | 18 389 | 15 390 | 21 391 | 51 392 | 132 393 | 145 394 | 59 395 | 22 396 | 15 397 | 17 398 | 32 399 | 96 400 | 164 401 | 89 402 | 30 403 | 16 404 | 14 405 | 24 406 | 62 407 | 153 408 | 130 409 | 46 410 | 19 411 | 13 412 | 17 413 | 37 414 | 113 415 | 165 416 | 75 417 | 25 418 | 14 419 | 13 420 | 24 421 | 68 422 | 164 423 | 123 424 | 40 425 | 17 426 | 13 427 | 16 428 | 38 429 | 118 430 | 170 431 | 71 432 | 24 433 | 13 434 | 12 435 | 22 436 | 65 437 | 167 438 | 129 439 | 40 440 | 16 441 | 12 442 | 14 443 | 33 444 | 107 445 | 182 446 | 81 447 | 24 448 | 12 449 | 11 450 | 17 451 | 51 452 | 156 453 | 155 454 | 49 455 | 17 456 | 11 457 | 11 458 | 23 459 | 77 460 | 189 461 | 115 462 | 32 463 | 13 464 | 9 465 | 12 466 | 30 467 | 107 468 | 197 469 | 82 470 | 23 471 | 10 472 | 9 473 | 12 474 | 36 475 | 134 476 | 192 477 | 64 478 | 18 479 | 10 480 | 8 481 | 13 482 | 37 483 | 148 484 | 195 485 | 58 486 | 16 487 | 9 488 | 8 489 | 10 490 | 29 491 | 132 492 | 220 493 | 67 494 | 15 495 | 8 496 | 6 497 | 7 498 | 14 499 | 66 500 | 237 501 | 137 502 | 25 503 | 9 504 | 6 505 | 5 506 | 4 507 | 5 508 | 25 509 | 165 510 | 233 511 | 51 512 | 12 513 | 7 514 | 7 515 | 7 516 | 18 517 | 80 518 | 201 519 | 109 520 | 29 521 | 12 522 | 10 523 | 14 524 | 38 525 | 128 526 | 169 527 | 63 528 | 20 529 | 11 530 | 11 531 | 23 532 | 74 533 | 173 534 | 114 535 | 34 536 | 14 537 | 11 538 | 14 539 | 37 540 | 122 541 | 172 542 | 67 543 | 21 544 | 11 545 | 11 546 | 20 547 | 64 548 | 169 549 | 131 550 | 39 551 | 13 552 | 9 553 | 12 554 | 28 555 | 100 556 | 188 557 | 88 558 | 25 559 | 11 560 | 10 561 | 14 562 | 41 563 | 141 564 | 176 565 | 57 566 | 17 567 | 10 568 | 10 569 | 16 570 | 56 571 | 175 572 | 149 573 | 41 574 | 14 575 | 8 576 | 9 577 | 18 578 | 67 579 | 196 580 | 130 581 | 32 582 | 11 583 | 8 584 | 7 585 | 17 586 | 66 587 | 207 588 | 131 589 | 30 590 | 10 591 | 7 592 | 6 593 | 12 594 | 48 595 | 193 596 | 172 597 | 39 598 | 11 599 | 7 600 | 6 601 | 6 602 | 16 603 | 86 604 | 255 605 | 107 606 | 19 607 | 8 608 | 5 609 | 4 610 | 3 611 | 2 612 | 2 613 | 7 614 | 23 615 | 8 616 | 6 617 | 8 618 | 16 619 | 33 620 | 57 621 | 65 622 | 56 623 | 46 624 | 46 625 | 54 626 | 64 627 | 66 628 | 59 629 | 49 630 | 46 631 | 48 632 | 58 633 | 67 634 | 67 635 | 60 636 | 50 637 | 47 638 | 51 639 | 60 640 | 69 641 | 68 642 | 58 643 | 50 644 | 46 645 | 52 646 | 61 647 | 71 648 | 68 649 | 58 650 | 48 651 | 46 652 | 53 653 | 64 654 | 72 655 | 68 656 | 56 657 | 47 658 | 45 659 | 53 660 | 65 661 | 73 662 | 67 663 | 54 664 | 46 665 | 46 666 | 55 667 | 67 668 | 74 669 | 66 670 | 54 671 | 44 672 | 46 673 | 55 674 | 70 675 | 76 676 | 66 677 | 51 678 | 45 679 | 46 680 | 58 681 | 73 682 | 77 683 | 65 684 | 52 685 | 44 686 | 46 687 | 59 688 | 75 689 | 78 690 | 64 691 | 49 692 | 43 693 | 47 694 | 61 695 | 78 696 | 79 697 | 63 698 | 47 699 | 43 700 | 47 701 | 63 702 | 80 703 | 79 704 | 61 705 | 46 706 | 42 707 | 48 708 | 66 709 | 84 710 | 80 711 | 60 712 | 46 713 | 42 714 | 50 715 | 68 716 | 86 717 | 80 718 | 59 719 | 43 720 | 41 721 | 50 722 | 71 723 | 88 724 | 79 725 | 56 726 | 41 727 | 41 728 | 51 729 | 73 730 | 91 731 | 78 732 | 55 733 | 41 734 | 40 735 | 52 736 | 75 737 | 94 738 | 78 739 | 54 740 | 39 741 | 40 742 | 52 743 | 79 744 | 95 745 | 76 746 | 50 747 | 37 748 | 38 749 | 52 750 | 80 751 | 97 752 | 76 753 | 50 754 | 36 755 | 37 756 | 54 757 | 83 758 | 98 759 | 74 760 | 47 761 | 34 762 | 37 763 | 53 764 | 85 765 | 100 766 | 74 767 | 45 768 | 34 769 | 35 770 | 54 771 | 87 772 | 103 773 | 72 774 | 43 775 | 33 776 | 35 777 | 53 778 | 88 779 | 103 780 | 73 781 | 43 782 | 32 783 | 33 784 | 53 785 | 91 786 | 105 787 | 72 788 | 41 789 | 31 790 | 33 791 | 54 792 | 91 793 | 108 794 | 72 795 | 41 796 | 30 797 | 32 798 | 51 799 | 93 800 | 111 801 | 74 802 | 41 803 | 29 804 | 31 805 | 51 806 | 93 807 | 113 808 | 75 809 | 40 810 | 29 811 | 30 812 | 49 813 | 92 814 | 118 815 | 78 816 | 41 817 | 28 818 | 29 819 | 46 820 | 90 821 | 120 822 | 82 823 | 42 824 | 29 825 | 28 826 | 45 827 | 88 828 | 124 829 | 86 830 | 43 831 | 27 832 | 27 833 | 41 834 | 83 835 | 126 836 | 91 837 | 45 838 | 27 839 | 26 840 | 38 841 | 78 842 | 127 843 | 99 844 | 47 845 | 27 846 | 24 847 | 35 848 | 72 849 | 126 850 | 106 851 | 52 852 | 28 853 | 23 854 | 32 855 | 65 856 | 123 857 | 116 858 | 56 859 | 29 860 | 22 861 | 28 862 | 56 863 | 117 864 | 126 865 | 64 866 | 30 867 | 22 868 | 27 869 | 49 870 | 107 871 | 133 872 | 74 873 | 32 874 | 21 875 | 23 876 | 41 877 | 95 878 | 140 879 | 84 880 | 36 881 | 21 882 | 21 883 | 35 884 | 80 885 | 141 886 | 99 887 | 42 888 | 22 889 | 20 890 | 29 891 | 67 892 | 135 893 | 117 894 | 49 895 | 24 896 | 18 897 | 25 898 | 52 899 | 122 900 | 134 901 | 62 902 | 26 903 | 18 904 | 20 905 | 41 906 | 104 907 | 148 908 | 79 909 | 32 910 | 18 911 | 19 912 | 32 913 | 82 914 | 151 915 | 100 916 | 39 917 | 19 918 | 17 919 | 25 920 | 62 921 | 140 922 | 128 923 | 52 924 | 22 925 | 17 926 | 21 927 | 44 928 | 116 929 | 150 930 | 71 931 | 27 932 | 18 933 | 18 934 | 32 935 | 88 936 | 159 937 | 98 938 | 36 939 | 19 940 | 16 941 | 25 942 | 61 943 | 146 944 | 132 945 | 52 946 | 21 947 | 17 948 | 19 949 | 41 950 | 113 951 | 161 952 | 76 953 | 28 954 | 16 955 | 16 956 | 28 957 | 77 958 | 163 959 | 114 960 | 39 961 | 19 962 | 15 963 | 20 964 | 47 965 | 132 966 | 156 967 | 62 968 | 24 969 | 15 970 | 16 971 | 30 972 | 86 973 | 173 974 | 102 975 | 34 976 | 16 977 | 13 978 | 19 979 | 50 980 | 141 981 | 154 982 | 57 983 | 21 984 | 13 985 | 14 986 | 27 987 | 87 988 | 179 989 | 103 990 | 33 991 | 15 992 | 12 993 | 18 994 | 45 995 | 136 996 | 166 997 | 61 998 | 20 999 | 12 1000 | 13 1001 | 23 1002 | 72 1003 | 178 1004 | 122 1005 | 36 1006 | 14 1007 | 11 1008 | 14 1009 | 32 1010 | 110 1011 | 188 1012 | 80 1013 | 23 1014 | 12 1015 | 10 1016 | 15 1017 | 45 1018 | 151 1019 | 169 1020 | 53 1021 | 18 1022 | 12 1023 | 9 1024 | 17 1025 | 60 1026 | 182 1027 | 143 1028 | 38 1029 | 13 1030 | 9 1031 | 9 1032 | 19 1033 | 71 1034 | 201 1035 | 126 1036 | 30 1037 | 12 1038 | 9 1039 | 8 1040 | 18 1041 | 70 1042 | 211 1043 | 131 1044 | 30 1045 | 11 1046 | 8 1047 | 8 1048 | 13 1049 | 47 1050 | 192 1051 | 179 1052 | 40 1053 | 13 1054 | 9 1055 | 7 1056 | 7 1057 | 14 1058 | 71 1059 | 255 1060 | 131 1061 | 24 1062 | 9 1063 | 7 1064 | 7 1065 | 5 1066 | 4 1067 | 3 1068 | 8 1069 | 20 1070 | 13 1071 | 10 1072 | 13 1073 | 20 1074 | 31 1075 | 42 1076 | 57 1077 | 68 1078 | 70 1079 | 59 1080 | 48 1081 | 46 1082 | 51 1083 | 61 1084 | 70 1085 | 67 1086 | 57 1087 | 48 1088 | 47 1089 | 53 1090 | 65 1091 | 72 1092 | 67 1093 | 57 1094 | 47 1095 | 47 1096 | 54 1097 | 67 1098 | 73 1099 | 66 1100 | 54 1101 | 48 1102 | 47 1103 | 55 1104 | 68 1105 | 74 1106 | 65 1107 | 54 1108 | 46 1109 | 48 1110 | 57 1111 | 70 1112 | 75 1113 | 65 1114 | 52 1115 | 45 1116 | 47 1117 | 58 1118 | 72 1119 | 74 1120 | 64 1121 | 50 1122 | 44 1123 | 47 1124 | 60 1125 | 74 1126 | 76 1127 | 63 1128 | 48 1129 | 44 1130 | 48 1131 | 61 1132 | 77 1133 | 77 1134 | 61 1135 | 48 1136 | 43 1137 | 48 1138 | 64 1139 | 79 1140 | 77 1141 | 60 1142 | 47 1143 | 42 1144 | 49 1145 | 67 1146 | 82 1147 | 77 1148 | 58 1149 | 45 1150 | 42 1151 | 51 1152 | 69 1153 | 84 1154 | 77 1155 | 56 1156 | 43 1157 | 42 1158 | 52 1159 | 72 1160 | 86 1161 | 77 1162 | 56 1163 | 42 1164 | 42 1165 | 54 1166 | 74 1167 | 88 1168 | 76 1169 | 54 1170 | 41 1171 | 42 1172 | 55 1173 | 78 1174 | 90 1175 | 75 1176 | 52 1177 | 41 1178 | 41 1179 | 56 1180 | 81 1181 | 92 1182 | 74 1183 | 51 1184 | 39 1185 | 42 1186 | 57 1187 | 83 1188 | 94 1189 | 72 1190 | 49 1191 | 38 1192 | 42 1193 | 58 1194 | 86 1195 | 95 1196 | 70 1197 | 47 1198 | 36 1199 | 40 1200 | 59 1201 | 89 1202 | 97 1203 | 70 1204 | 44 1205 | 36 1206 | 40 1207 | 59 1208 | 90 1209 | 97 1210 | 68 1211 | 43 1212 | 35 1213 | 38 1214 | 59 1215 | 92 1216 | 99 1217 | 68 1218 | 42 1219 | 33 1220 | 38 1221 | 59 1222 | 95 1223 | 100 1224 | 67 1225 | 41 1226 | 31 1227 | 36 1228 | 59 1229 | 97 1230 | 101 1231 | 65 1232 | 39 1233 | 31 1234 | 36 1235 | 58 1236 | 98 1237 | 103 1238 | 65 1239 | 38 1240 | 29 1241 | 35 1242 | 59 1243 | 100 1244 | 106 1245 | 65 1246 | 36 1247 | 29 1248 | 33 1249 | 57 1250 | 100 1251 | 109 1252 | 66 1253 | 36 1254 | 28 1255 | 32 1256 | 56 1257 | 100 1258 | 112 1259 | 68 1260 | 37 1261 | 27 1262 | 30 1263 | 54 1264 | 100 1265 | 116 1266 | 71 1267 | 37 1268 | 27 1269 | 30 1270 | 51 1271 | 98 1272 | 120 1273 | 74 1274 | 37 1275 | 26 1276 | 28 1277 | 48 1278 | 95 1279 | 124 1280 | 79 1281 | 39 1282 | 27 1283 | 27 1284 | 44 1285 | 91 1286 | 128 1287 | 85 1288 | 41 1289 | 26 1290 | 26 1291 | 41 1292 | 85 1293 | 130 1294 | 91 1295 | 44 1296 | 26 1297 | 25 1298 | 37 1299 | 77 1300 | 131 1301 | 101 1302 | 47 1303 | 27 1304 | 24 1305 | 34 1306 | 68 1307 | 129 1308 | 112 1309 | 53 1310 | 28 1311 | 23 1312 | 30 1313 | 61 1314 | 123 1315 | 123 1316 | 60 1317 | 30 1318 | 22 1319 | 26 1320 | 52 1321 | 113 1322 | 133 1323 | 68 1324 | 31 1325 | 21 1326 | 24 1327 | 44 1328 | 101 1329 | 140 1330 | 81 1331 | 34 1332 | 21 1333 | 21 1334 | 36 1335 | 86 1336 | 144 1337 | 95 1338 | 39 1339 | 22 1340 | 19 1341 | 30 1342 | 71 1343 | 140 1344 | 114 1345 | 48 1346 | 23 1347 | 19 1348 | 25 1349 | 55 1350 | 127 1351 | 133 1352 | 60 1353 | 26 1354 | 18 1355 | 21 1356 | 42 1357 | 107 1358 | 147 1359 | 76 1360 | 31 1361 | 18 1362 | 19 1363 | 32 1364 | 84 1365 | 152 1366 | 99 1367 | 39 1368 | 19 1369 | 17 1370 | 26 1371 | 62 1372 | 143 1373 | 127 1374 | 51 1375 | 23 1376 | 17 1377 | 21 1378 | 44 1379 | 118 1380 | 152 1381 | 71 1382 | 27 1383 | 16 1384 | 18 1385 | 33 1386 | 88 1387 | 160 1388 | 99 1389 | 37 1390 | 19 1391 | 17 1392 | 24 1393 | 61 1394 | 146 1395 | 135 1396 | 52 1397 | 23 1398 | 15 1399 | 19 1400 | 40 1401 | 111 1402 | 162 1403 | 77 1404 | 29 1405 | 17 1406 | 16 1407 | 27 1408 | 75 1409 | 163 1410 | 118 1411 | 42 1412 | 20 1413 | 16 1414 | 20 1415 | 46 1416 | 130 1417 | 160 1418 | 65 1419 | 24 1420 | 15 1421 | 16 1422 | 29 1423 | 83 1424 | 172 1425 | 108 1426 | 36 1427 | 18 1428 | 14 1429 | 20 1430 | 47 1431 | 136 1432 | 161 1433 | 62 1434 | 23 1435 | 15 1436 | 14 1437 | 27 1438 | 81 1439 | 178 1440 | 112 1441 | 36 1442 | 17 1443 | 13 1444 | 16 1445 | 40 1446 | 128 1447 | 173 1448 | 67 1449 | 22 1450 | 13 1451 | 12 1452 | 21 1453 | 64 1454 | 173 1455 | 134 1456 | 39 1457 | 15 1458 | 11 1459 | 13 1460 | 29 1461 | 98 1462 | 192 1463 | 92 1464 | 27 1465 | 12 1466 | 11 1467 | 15 1468 | 39 1469 | 137 1470 | 184 1471 | 63 1472 | 20 1473 | 11 1474 | 10 1475 | 15 1476 | 50 1477 | 167 1478 | 163 1479 | 46 1480 | 16 1481 | 9 1482 | 9 1483 | 16 1484 | 56 1485 | 187 1486 | 152 1487 | 39 1488 | 13 1489 | 8 1490 | 9 1491 | 15 1492 | 52 1493 | 189 1494 | 165 1495 | 40 1496 | 14 1497 | 8 1498 | 8 1499 | 11 1500 | 31 1501 | 145 1502 | 225 1503 | 61 1504 | 15 1505 | 9 1506 | 7 1507 | 7 1508 | 8 1509 | 31 1510 | 176 1511 | 231 1512 | 48 1513 | 12 1514 | 8 1515 | 6 1516 | 5 1517 | 4 1518 | 6 1519 | 26 1520 | 118 1521 | 131 1522 | 67 1523 | 35 1524 | 28 1525 | 38 1526 | 62 1527 | 96 1528 | 93 1529 | 59 1530 | 37 1531 | 31 1532 | 41 1533 | 65 1534 | 98 1535 | 92 1536 | 58 1537 | 36 1538 | 31 1539 | 41 1540 | 66 1541 | 99 1542 | 92 1543 | 56 1544 | 35 1545 | 32 1546 | 40 1547 | 68 1548 | 102 1549 | 93 1550 | 57 1551 | 35 1552 | 30 1553 | 39 1554 | 67 1555 | 104 1556 | 94 1557 | 55 1558 | 33 1559 | 29 1560 | 38 1561 | 67 1562 | 105 1563 | 95 1564 | 55 1565 | 32 1566 | 28 1567 | 37 1568 | 66 1569 | 108 1570 | 97 1571 | 55 1572 | 32 1573 | 27 1574 | 36 1575 | 65 1576 | 108 1577 | 100 1578 | 55 1579 | 31 1580 | 26 1581 | 33 1582 | 64 1583 | 109 1584 | 103 1585 | 56 1586 | 31 1587 | 24 1588 | 31 1589 | 60 1590 | 108 1591 | 108 1592 | 59 1593 | 31 1594 | 24 1595 | 30 1596 | 57 1597 | 108 1598 | 113 1599 | 62 1600 | 31 1601 | 22 1602 | 28 1603 | 54 1604 | 105 1605 | 119 1606 | 65 1607 | 33 1608 | 23 1609 | 27 1610 | 49 1611 | 100 1612 | 124 1613 | 71 1614 | 35 1615 | 23 1616 | 25 1617 | 44 1618 | 95 1619 | 129 1620 | 80 1621 | 36 1622 | 24 1623 | 24 1624 | 40 1625 | 88 1626 | 133 1627 | 89 1628 | 39 1629 | 23 1630 | 22 1631 | 35 1632 | 78 1633 | 133 1634 | 99 1635 | 44 1636 | 24 1637 | 22 1638 | 30 1639 | 68 1640 | 130 1641 | 112 1642 | 50 1643 | 24 1644 | 21 1645 | 26 1646 | 58 1647 | 123 1648 | 125 1649 | 59 1650 | 27 1651 | 19 1652 | 23 1653 | 47 1654 | 110 1655 | 137 1656 | 69 1657 | 30 1658 | 19 1659 | 21 1660 | 39 1661 | 94 1662 | 145 1663 | 84 1664 | 34 1665 | 19 1666 | 18 1667 | 32 1668 | 76 1669 | 144 1670 | 105 1671 | 41 1672 | 21 1673 | 17 1674 | 25 1675 | 59 1676 | 133 1677 | 125 1678 | 52 1679 | 23 1680 | 16 1681 | 20 1682 | 44 1683 | 115 1684 | 144 1685 | 67 1686 | 26 1687 | 16 1688 | 18 1689 | 34 1690 | 90 1691 | 154 1692 | 91 1693 | 33 1694 | 17 1695 | 15 1696 | 26 1697 | 66 1698 | 146 1699 | 120 1700 | 45 1701 | 19 1702 | 14 1703 | 19 1704 | 45 1705 | 122 1706 | 146 1707 | 64 1708 | 24 1709 | 15 1710 | 16 1711 | 31 1712 | 89 1713 | 160 1714 | 92 1715 | 32 1716 | 16 1717 | 14 1718 | 23 1719 | 61 1720 | 147 1721 | 129 1722 | 47 1723 | 20 1724 | 14 1725 | 17 1726 | 39 1727 | 113 1728 | 162 1729 | 74 1730 | 27 1731 | 14 1732 | 15 1733 | 26 1734 | 74 1735 | 164 1736 | 115 1737 | 39 1738 | 18 1739 | 14 1740 | 19 1741 | 44 1742 | 128 1743 | 158 1744 | 64 1745 | 23 1746 | 14 1747 | 15 1748 | 27 1749 | 81 1750 | 171 1751 | 109 1752 | 36 1753 | 16 1754 | 13 1755 | 18 1756 | 44 1757 | 133 1758 | 164 1759 | 63 1760 | 22 1761 | 13 1762 | 13 1763 | 24 1764 | 75 1765 | 175 1766 | 118 1767 | 35 1768 | 15 1769 | 11 1770 | 15 1771 | 36 1772 | 121 1773 | 179 1774 | 72 1775 | 23 1776 | 12 1777 | 11 1778 | 18 1779 | 57 1780 | 166 1781 | 145 1782 | 44 1783 | 15 1784 | 10 1785 | 12 1786 | 24 1787 | 86 1788 | 194 1789 | 105 1790 | 28 1791 | 13 1792 | 10 1793 | 12 1794 | 32 1795 | 117 1796 | 195 1797 | 76 1798 | 21 1799 | 11 1800 | 9 1801 | 13 1802 | 37 1803 | 142 1804 | 188 1805 | 59 1806 | 17 1807 | 9 1808 | 7 1809 | 12 1810 | 38 1811 | 154 1812 | 190 1813 | 53 1814 | 14 1815 | 8 1816 | 7 1817 | 10 1818 | 29 1819 | 135 1820 | 218 1821 | 64 1822 | 16 1823 | 8 1824 | 6 1825 | 7 1826 | 14 1827 | 65 1828 | 237 1829 | 139 1830 | 25 1831 | 8 1832 | 6 1833 | 4 1834 | 4 1835 | 5 1836 | 19 1837 | 126 1838 | 252 1839 | 70 1840 | 16 1841 | 9 1842 | 7 1843 | 10 1844 | 29 1845 | 114 1846 | 191 1847 | 78 1848 | 23 1849 | 13 1850 | 12 1851 | 20 1852 | 58 1853 | 156 1854 | 138 1855 | 46 1856 | 17 1857 | 12 1858 | 16 1859 | 36 1860 | 110 1861 | 173 1862 | 78 1863 | 25 1864 | 13 1865 | 13 1866 | 22 1867 | 62 1868 | 161 1869 | 133 1870 | 44 1871 | 16 1872 | 12 1873 | 15 1874 | 33 1875 | 107 1876 | 178 1877 | 81 1878 | 25 1879 | 13 1880 | 11 1881 | 18 1882 | 55 1883 | 157 1884 | 147 1885 | 47 1886 | 16 1887 | 11 1888 | 12 1889 | 26 1890 | 89 1891 | 187 1892 | 101 1893 | 28 1894 | 13 1895 | 9 1896 | 14 1897 | 37 1898 | 129 1899 | 180 1900 | 65 1901 | 20 1902 | 11 1903 | 10 1904 | 16 1905 | 53 1906 | 167 1907 | 155 1908 | 43 1909 | 14 1910 | 9 1911 | 9 1912 | 19 1913 | 68 1914 | 193 1915 | 128 1916 | 32 1917 | 13 1918 | 8 1919 | 9 1920 | 20 1921 | 77 1922 | 208 1923 | 116 1924 | 28 1925 | 10 1926 | 8 1927 | 8 1928 | 16 1929 | 68 1930 | 214 1931 | 130 1932 | 28 1933 | 9 1934 | 6 1935 | 6 1936 | 9 1937 | 37 1938 | 176 1939 | 199 1940 | 45 1941 | 11 1942 | 7 1943 | 5 1944 | 4 1945 | 7 1946 | 33 1947 | 188 1948 | 221 1949 | 42 1950 | 9 1951 | 6 1952 | 5 1953 | 3 1954 | 3 1955 | 6 1956 | 39 1957 | 145 1958 | 129 1959 | 54 1960 | 27 1961 | 23 1962 | 32 1963 | 64 1964 | 107 1965 | 97 1966 | 53 1967 | 30 1968 | 26 1969 | 36 1970 | 66 1971 | 107 1972 | 96 1973 | 53 1974 | 31 1975 | 26 1976 | 35 1977 | 66 1978 | 108 1979 | 98 1980 | 54 1981 | 30 1982 | 25 1983 | 33 1984 | 64 1985 | 110 1986 | 101 1987 | 54 1988 | 30 1989 | 24 1990 | 32 1991 | 62 1992 | 109 1993 | 104 1994 | 57 1995 | 30 1996 | 24 1997 | 30 1998 | 59 1999 | 108 2000 | 109 2001 | 59 2002 | 30 2003 | 23 2004 | 29 2005 | 55 2006 | 106 2007 | 115 2008 | 62 2009 | 31 2010 | 22 2011 | 26 2012 | 51 2013 | 103 2014 | 120 2015 | 68 2016 | 32 2017 | 22 2018 | 24 2019 | 46 2020 | 97 2021 | 126 2022 | 74 2023 | 35 2024 | 22 2025 | 22 2026 | 40 2027 | 89 2028 | 129 2029 | 82 2030 | 36 2031 | 21 2032 | 21 2033 | 35 2034 | 81 2035 | 132 2036 | 92 2037 | 40 2038 | 22 2039 | 20 2040 | 31 2041 | 71 2042 | 130 2043 | 103 2044 | 45 2045 | 22 2046 | 19 2047 | 27 2048 | 60 2049 | 125 2050 | 116 2051 | 52 2052 | 24 2053 | 18 2054 | 24 2055 | 51 2056 | 115 2057 | 131 2058 | 63 2059 | 27 2060 | 17 2061 | 21 2062 | 41 2063 | 101 2064 | 140 2065 | 77 2066 | 31 2067 | 18 2068 | 19 2069 | 34 2070 | 84 2071 | 145 2072 | 94 2073 | 37 2074 | 20 2075 | 17 2076 | 28 2077 | 67 2078 | 140 2079 | 116 2080 | 47 2081 | 22 2082 | 17 2083 | 22 2084 | 53 2085 | 123 2086 | 137 2087 | 60 2088 | 24 2089 | 16 2090 | 19 2091 | 38 2092 | 101 2093 | 151 2094 | 80 2095 | 31 2096 | 17 2097 | 16 2098 | 28 2099 | 77 2100 | 152 2101 | 107 2102 | 39 2103 | 19 2104 | 15 2105 | 22 2106 | 54 2107 | 136 2108 | 136 2109 | 55 2110 | 22 2111 | 16 2112 | 17 2113 | 37 2114 | 104 2115 | 157 2116 | 78 2117 | 29 2118 | 16 2119 | 15 2120 | 26 2121 | 73 2122 | 157 2123 | 113 2124 | 40 2125 | 18 2126 | 14 2127 | 20 2128 | 47 2129 | 130 2130 | 149 2131 | 60 2132 | 22 2133 | 13 2134 | 15 2135 | 29 2136 | 91 2137 | 167 2138 | 94 2139 | 31 2140 | 14 2141 | 12 2142 | 20 2143 | 54 2144 | 147 2145 | 139 2146 | 50 2147 | 19 2148 | 13 2149 | 15 2150 | 32 2151 | 100 2152 | 172 2153 | 85 2154 | 27 2155 | 14 2156 | 11 2157 | 20 2158 | 57 2159 | 155 2160 | 139 2161 | 46 2162 | 17 2163 | 12 2164 | 14 2165 | 31 2166 | 99 2167 | 179 2168 | 88 2169 | 27 2170 | 13 2171 | 11 2172 | 18 2173 | 51 2174 | 151 2175 | 152 2176 | 50 2177 | 18 2178 | 11 2179 | 12 2180 | 25 2181 | 83 2182 | 185 2183 | 107 2184 | 32 2185 | 14 2186 | 12 2187 | 14 2188 | 37 2189 | 125 2190 | 182 2191 | 70 2192 | 21 2193 | 12 2194 | 11 2195 | 17 2196 | 51 2197 | 164 2198 | 157 2199 | 48 2200 | 15 2201 | 10 2202 | 10 2203 | 19 2204 | 68 2205 | 192 2206 | 130 2207 | 35 2208 | 12 2209 | 9 2210 | 10 2211 | 21 2212 | 80 2213 | 206 2214 | 114 2215 | 27 2216 | 12 2217 | 9 2218 | 9 2219 | 19 2220 | 77 2221 | 216 2222 | 119 2223 | 27 2224 | 11 2225 | 7 2226 | 7 2227 | 12 2228 | 51 2229 | 200 2230 | 168 2231 | 35 2232 | 11 2233 | 7 2234 | 5 2235 | 5 2236 | 14 2237 | 73 2238 | 255 2239 | 123 2240 | 21 2241 | 8 2242 | 6 2243 | 4 2244 | 4 2245 | 2 2246 | 3 2247 | 18 2248 | 71 2249 | 64 2250 | 43 2251 | 35 2252 | 37 2253 | 48 2254 | 64 2255 | 76 2256 | 69 2257 | 53 2258 | 42 2259 | 41 2260 | 51 2261 | 68 2262 | 77 2263 | 69 2264 | 53 2265 | 43 2266 | 44 2267 | 54 2268 | 71 2269 | 79 2270 | 68 2271 | 51 2272 | 42 2273 | 43 2274 | 56 2275 | 73 2276 | 80 2277 | 67 2278 | 51 2279 | 42 2280 | 44 2281 | 56 2282 | 76 2283 | 80 2284 | 67 2285 | 48 2286 | 41 2287 | 43 2288 | 58 2289 | 78 2290 | 82 2291 | 64 2292 | 46 2293 | 39 2294 | 44 2295 | 59 2296 | 81 2297 | 83 2298 | 63 2299 | 45 2300 | 38 2301 | 44 2302 | 62 2303 | 84 2304 | 83 2305 | 62 2306 | 43 2307 | 38 2308 | 44 2309 | 64 2310 | 86 2311 | 83 2312 | 59 2313 | 41 2314 | 37 2315 | 44 2316 | 65 2317 | 89 2318 | 83 2319 | 57 2320 | 40 2321 | 35 2322 | 44 2323 | 67 2324 | 92 2325 | 83 2326 | 56 2327 | 38 2328 | 35 2329 | 45 2330 | 70 2331 | 94 2332 | 84 2333 | 55 2334 | 37 2335 | 34 2336 | 45 2337 | 72 2338 | 97 2339 | 83 2340 | 53 2341 | 36 2342 | 34 2343 | 44 2344 | 73 2345 | 99 2346 | 83 2347 | 51 2348 | 34 2349 | 33 2350 | 46 2351 | 75 2352 | 101 2353 | 83 2354 | 50 2355 | 34 2356 | 31 2357 | 45 2358 | 76 2359 | 104 2360 | 84 2361 | 50 2362 | 33 2363 | 30 2364 | 43 2365 | 77 2366 | 107 2367 | 85 2368 | 48 2369 | 31 2370 | 30 2371 | 43 2372 | 77 2373 | 108 2374 | 86 2375 | 48 2376 | 30 2377 | 29 2378 | 42 2379 | 76 2380 | 111 2381 | 87 2382 | 48 2383 | 30 2384 | 27 2385 | 40 2386 | 76 2387 | 113 2388 | 90 2389 | 48 2390 | 29 2391 | 28 2392 | 39 2393 | 73 2394 | 115 2395 | 93 2396 | 49 2397 | 28 2398 | 25 2399 | 36 2400 | 71 2401 | 116 2402 | 97 2403 | 50 2404 | 28 2405 | 25 2406 | 35 2407 | 68 2408 | 116 2409 | 102 2410 | 52 2411 | 30 2412 | 24 2413 | 32 2414 | 64 2415 | 116 2416 | 108 2417 | 56 2418 | 29 2419 | 23 2420 | 30 2421 | 59 2422 | 114 2423 | 115 2424 | 61 2425 | 30 2426 | 22 2427 | 27 2428 | 53 2429 | 108 2430 | 121 2431 | 64 2432 | 32 2433 | 22 2434 | 26 2435 | 47 2436 | 102 2437 | 129 2438 | 73 2439 | 33 2440 | 22 2441 | 24 2442 | 42 2443 | 93 2444 | 134 2445 | 82 2446 | 37 2447 | 22 2448 | 22 2449 | 37 2450 | 84 2451 | 136 2452 | 94 2453 | 41 2454 | 23 2455 | 22 2456 | 32 2457 | 73 2458 | 134 2459 | 108 2460 | 47 2461 | 24 2462 | 20 2463 | 27 2464 | 60 2465 | 127 2466 | 123 2467 | 56 2468 | 27 2469 | 19 2470 | 24 2471 | 49 2472 | 114 2473 | 136 2474 | 68 2475 | 29 2476 | 20 2477 | 21 2478 | 39 2479 | 97 2480 | 147 2481 | 84 2482 | 34 2483 | 19 2484 | 19 2485 | 32 2486 | 79 2487 | 146 2488 | 103 2489 | 40 2490 | 21 2491 | 17 2492 | 25 2493 | 60 2494 | 135 2495 | 125 2496 | 53 2497 | 23 2498 | 16 2499 | 21 2500 | 44 2501 | 115 2502 | 147 2503 | 69 2504 | 27 2505 | 18 2506 | 19 2507 | 33 2508 | 89 2509 | 156 2510 | 93 2511 | 36 2512 | 19 2513 | 16 2514 | 25 2515 | 65 2516 | 145 2517 | 124 2518 | 48 2519 | 21 2520 | 15 2521 | 20 2522 | 45 2523 | 120 2524 | 152 2525 | 68 2526 | 26 2527 | 16 2528 | 17 2529 | 31 2530 | 87 2531 | 163 2532 | 99 2533 | 35 2534 | 17 2535 | 15 2536 | 23 2537 | 58 2538 | 144 2539 | 138 2540 | 53 2541 | 21 2542 | 15 2543 | 17 2544 | 36 2545 | 106 2546 | 166 2547 | 81 2548 | 28 2549 | 16 2550 | 15 2551 | 24 2552 | 67 2553 | 160 2554 | 125 2555 | 43 2556 | 19 2557 | 14 2558 | 18 2559 | 40 2560 | 118 2561 | 167 2562 | 72 2563 | 25 2564 | 14 2565 | 14 2566 | 24 2567 | 70 2568 | 167 2569 | 123 2570 | 40 2571 | 17 2572 | 14 2573 | 16 2574 | 38 2575 | 119 2576 | 174 2577 | 73 2578 | 25 2579 | 14 2580 | 13 2581 | 21 2582 | 64 2583 | 167 2584 | 134 2585 | 41 2586 | 17 2587 | 12 2588 | 14 2589 | 30 2590 | 103 2591 | 185 2592 | 88 2593 | 26 2594 | 15 2595 | 10 2596 | 15 2597 | 46 2598 | 148 2599 | 166 2600 | 55 2601 | 18 2602 | 11 2603 | 11 2604 | 20 2605 | 67 2606 | 184 2607 | 131 2608 | 36 2609 | 13 2610 | 10 2611 | 11 2612 | 24 2613 | 90 2614 | 200 2615 | 101 2616 | 26 2617 | 12 2618 | 9 2619 | 11 2620 | 27 2621 | 110 2622 | 207 2623 | 84 2624 | 21 2625 | 10 2626 | 8 2627 | 10 2628 | 27 2629 | 114 2630 | 216 2631 | 80 2632 | 20 2633 | 10 2634 | 8 2635 | 9 2636 | 20 2637 | 88 2638 | 232 2639 | 106 2640 | 23 2641 | 10 2642 | 5 2643 | 5 2644 | 9 2645 | 32 2646 | 165 2647 | 224 2648 | 51 2649 | 12 2650 | 7 2651 | 6 2652 | 4 2653 | 4 2654 | 4 2655 | 16 2656 | 104 2657 | 159 2658 | 65 2659 | 28 2660 | 22 2661 | 31 2662 | 61 2663 | 106 2664 | 98 2665 | 57 2666 | 31 2667 | 27 2668 | 36 2669 | 65 2670 | 103 2671 | 96 2672 | 54 2673 | 32 2674 | 27 2675 | 36 2676 | 64 2677 | 104 2678 | 97 2679 | 55 2680 | 33 2681 | 27 2682 | 36 2683 | 64 2684 | 106 2685 | 100 2686 | 57 2687 | 32 2688 | 26 2689 | 35 2690 | 63 2691 | 107 2692 | 102 2693 | 57 2694 | 32 2695 | 25 2696 | 33 2697 | 60 2698 | 108 2699 | 106 2700 | 59 2701 | 32 2702 | 25 2703 | 31 2704 | 58 2705 | 107 2706 | 111 2707 | 61 2708 | 32 2709 | 24 2710 | 30 2711 | 55 2712 | 105 2713 | 115 2714 | 64 2715 | 32 2716 | 23 2717 | 27 2718 | 49 2719 | 101 2720 | 121 2721 | 69 2722 | 33 2723 | 23 2724 | 25 2725 | 46 2726 | 96 2727 | 125 2728 | 75 2729 | 35 2730 | 22 2731 | 24 2732 | 41 2733 | 89 2734 | 129 2735 | 83 2736 | 38 2737 | 23 2738 | 22 2739 | 36 2740 | 81 2741 | 132 2742 | 93 2743 | 41 2744 | 23 2745 | 21 2746 | 32 2747 | 72 2748 | 131 2749 | 104 2750 | 46 2751 | 24 2752 | 20 2753 | 28 2754 | 62 2755 | 126 2756 | 117 2757 | 53 2758 | 25 2759 | 19 2760 | 25 2761 | 53 2762 | 117 2763 | 129 2764 | 64 2765 | 28 2766 | 19 2767 | 22 2768 | 43 2769 | 102 2770 | 140 2771 | 77 2772 | 32 2773 | 19 2774 | 20 2775 | 35 2776 | 87 2777 | 145 2778 | 94 2779 | 38 2780 | 20 2781 | 19 2782 | 29 2783 | 69 2784 | 141 2785 | 114 2786 | 46 2787 | 22 2788 | 17 2789 | 24 2790 | 54 2791 | 126 2792 | 133 2793 | 59 2794 | 25 2795 | 17 2796 | 21 2797 | 41 2798 | 106 2799 | 150 2800 | 77 2801 | 31 2802 | 18 2803 | 18 2804 | 31 2805 | 80 2806 | 152 2807 | 102 2808 | 38 2809 | 19 2810 | 16 2811 | 24 2812 | 59 2813 | 139 2814 | 130 2815 | 52 2816 | 22 2817 | 15 2818 | 19 2819 | 42 2820 | 112 2821 | 154 2822 | 73 2823 | 28 2824 | 15 2825 | 16 2826 | 28 2827 | 80 2828 | 158 2829 | 105 2830 | 36 2831 | 18 2832 | 15 2833 | 22 2834 | 54 2835 | 138 2836 | 142 2837 | 54 2838 | 22 2839 | 14 2840 | 16 2841 | 34 2842 | 101 2843 | 164 2844 | 85 2845 | 29 2846 | 16 2847 | 14 2848 | 23 2849 | 64 2850 | 157 2851 | 127 2852 | 45 2853 | 18 2854 | 14 2855 | 17 2856 | 39 2857 | 116 2858 | 166 2859 | 73 2860 | 25 2861 | 15 2862 | 14 2863 | 24 2864 | 70 2865 | 165 2866 | 121 2867 | 39 2868 | 17 2869 | 13 2870 | 16 2871 | 39 2872 | 120 2873 | 170 2874 | 71 2875 | 24 2876 | 14 2877 | 13 2878 | 22 2879 | 67 2880 | 168 2881 | 129 2882 | 41 2883 | 16 2884 | 12 2885 | 16 2886 | 35 2887 | 110 2888 | 183 2889 | 81 2890 | 25 2891 | 13 2892 | 12 2893 | 18 2894 | 53 2895 | 157 2896 | 153 2897 | 49 2898 | 17 2899 | 11 2900 | 12 2901 | 23 2902 | 80 2903 | 190 2904 | 113 2905 | 32 2906 | 14 2907 | 10 2908 | 13 2909 | 31 2910 | 111 2911 | 195 2912 | 80 2913 | 22 2914 | 11 2915 | 9 2916 | 13 2917 | 39 2918 | 142 2919 | 185 2920 | 60 2921 | 18 2922 | 9 2923 | 9 2924 | 13 2925 | 43 2926 | 160 2927 | 180 2928 | 51 2929 | 15 2930 | 8 2931 | 9 2932 | 12 2933 | 38 2934 | 158 2935 | 195 2936 | 55 2937 | 15 2938 | 8 2939 | 6 2940 | 9 2941 | 23 2942 | 110 2943 | 239 2944 | 83 2945 | 17 2946 | 8 2947 | 6 2948 | 5 2949 | 7 2950 | 24 2951 | 142 2952 | 253 2953 | 62 2954 | 13 2955 | 6 2956 | 5 2957 | 4 2958 | 3 2959 | 4 2960 | 21 2961 | 116 2962 | 165 2963 | 74 2964 | 29 2965 | 19 2966 | 24 2967 | 45 2968 | 97 2969 | 122 2970 | 71 2971 | 34 2972 | 22 2973 | 26 2974 | 46 2975 | 95 2976 | 121 2977 | 74 2978 | 36 2979 | 23 2980 | 25 2981 | 44 2982 | 91 2983 | 124 2984 | 80 2985 | 37 2986 | 24 2987 | 24 2988 | 40 2989 | 87 2990 | 127 2991 | 86 2992 | 38 2993 | 23 2994 | 23 2995 | 36 2996 | 78 2997 | 129 2998 | 94 2999 | 43 3000 | 24 3001 | 21 3002 | 32 3003 | 71 3004 | 127 3005 | 103 3006 | 47 3007 | 24 3008 | 20 3009 | 29 3010 | 63 3011 | 124 3012 | 115 3013 | 53 3014 | 26 3015 | 20 3016 | 25 3017 | 54 3018 | 117 3019 | 125 3020 | 61 3021 | 28 3022 | 19 3023 | 22 3024 | 45 3025 | 104 3026 | 136 3027 | 73 3028 | 30 3029 | 19 3030 | 20 3031 | 37 3032 | 89 3033 | 142 3034 | 87 3035 | 36 3036 | 21 3037 | 19 3038 | 31 3039 | 75 3040 | 141 3041 | 104 3042 | 42 3043 | 21 3044 | 18 3045 | 25 3046 | 60 3047 | 131 3048 | 124 3049 | 53 3050 | 23 3051 | 17 3052 | 21 3053 | 47 3054 | 115 3055 | 140 3056 | 68 3057 | 27 3058 | 17 3059 | 18 3060 | 35 3061 | 93 3062 | 152 3063 | 88 3064 | 33 3065 | 18 3066 | 17 3067 | 27 3068 | 70 3069 | 146 3070 | 114 3071 | 43 3072 | 19 3073 | 15 3074 | 22 3075 | 50 3076 | 127 3077 | 140 3078 | 59 3079 | 24 3080 | 16 3081 | 18 3082 | 36 3083 | 98 3084 | 157 3085 | 84 3086 | 30 3087 | 16 3088 | 15 3089 | 26 3090 | 69 3091 | 153 3092 | 117 3093 | 43 3094 | 19 3095 | 14 3096 | 19 3097 | 45 3098 | 125 3099 | 149 3100 | 63 3101 | 23 3102 | 14 3103 | 16 3104 | 31 3105 | 89 3106 | 164 3107 | 95 3108 | 33 3109 | 16 3110 | 13 3111 | 21 3112 | 56 3113 | 145 3114 | 139 3115 | 51 3116 | 20 3117 | 13 3118 | 16 3119 | 33 3120 | 101 3121 | 169 3122 | 83 3123 | 28 3124 | 14 3125 | 13 3126 | 21 3127 | 60 3128 | 156 3129 | 133 3130 | 45 3131 | 18 3132 | 12 3133 | 14 3134 | 33 3135 | 107 3136 | 173 3137 | 82 3138 | 25 3139 | 13 3140 | 12 3141 | 19 3142 | 58 3143 | 158 3144 | 140 3145 | 44 3146 | 17 3147 | 11 3148 | 13 3149 | 30 3150 | 96 3151 | 182 3152 | 91 3153 | 28 3154 | 13 3155 | 11 3156 | 17 3157 | 45 3158 | 144 3159 | 163 3160 | 56 3161 | 18 3162 | 11 3163 | 11 3164 | 21 3165 | 70 3166 | 182 3167 | 124 3168 | 35 3169 | 14 3170 | 10 3171 | 11 3172 | 27 3173 | 100 3174 | 195 3175 | 89 3176 | 24 3177 | 11 3178 | 10 3179 | 12 3180 | 35 3181 | 131 3182 | 190 3183 | 66 3184 | 19 3185 | 9 3186 | 8 3187 | 12 3188 | 40 3189 | 151 3190 | 184 3191 | 54 3192 | 15 3193 | 9 3194 | 9 3195 | 11 3196 | 37 3197 | 153 3198 | 195 3199 | 55 3200 | 15 3201 | 9 3202 | 6 3203 | 8 3204 | 24 3205 | 116 3206 | 233 3207 | 78 3208 | 17 3209 | 8 3210 | 6 3211 | 6 3212 | 8 3213 | 34 3214 | 179 3215 | 220 3216 | 46 3217 | 11 3218 | 8 3219 | 6 3220 | 4 3221 | 4 3222 | 3 3223 | 7 3224 | 39 3225 | 72 3226 | 46 3227 | 34 3228 | 31 3229 | 38 3230 | 53 3231 | 74 3232 | 80 3233 | 65 3234 | 46 3235 | 38 3236 | 41 3237 | 56 3238 | 76 3239 | 80 3240 | 63 3241 | 46 3242 | 39 3243 | 44 3244 | 60 3245 | 79 3246 | 82 3247 | 62 3248 | 45 3249 | 38 3250 | 44 3251 | 62 3252 | 82 3253 | 81 3254 | 61 3255 | 43 3256 | 38 3257 | 45 3258 | 63 3259 | 85 3260 | 81 3261 | 59 3262 | 41 3263 | 37 3264 | 45 3265 | 66 3266 | 88 3267 | 82 3268 | 57 3269 | 40 3270 | 37 3271 | 46 3272 | 68 3273 | 90 3274 | 81 3275 | 55 3276 | 39 3277 | 36 3278 | 45 3279 | 70 3280 | 93 3281 | 81 3282 | 53 3283 | 38 3284 | 35 3285 | 46 3286 | 72 3287 | 95 3288 | 81 3289 | 52 3290 | 36 3291 | 35 3292 | 46 3293 | 74 3294 | 98 3295 | 81 3296 | 50 3297 | 34 3298 | 34 3299 | 46 3300 | 76 3301 | 100 3302 | 81 3303 | 50 3304 | 34 3305 | 34 3306 | 46 3307 | 77 3308 | 102 3309 | 82 3310 | 48 3311 | 33 3312 | 32 3313 | 46 3314 | 79 3315 | 105 3316 | 82 3317 | 47 3318 | 32 3319 | 31 3320 | 45 3321 | 79 3322 | 107 3323 | 83 3324 | 47 3325 | 31 3326 | 30 3327 | 44 3328 | 80 3329 | 111 3330 | 86 3331 | 47 3332 | 31 3333 | 30 3334 | 44 3335 | 80 3336 | 113 3337 | 87 3338 | 47 3339 | 29 3340 | 29 3341 | 43 3342 | 79 3343 | 115 3344 | 89 3345 | 47 3346 | 29 3347 | 27 3348 | 40 3349 | 78 3350 | 117 3351 | 91 3352 | 48 3353 | 28 3354 | 26 3355 | 39 3356 | 75 3357 | 118 3358 | 97 3359 | 49 3360 | 28 3361 | 25 3362 | 35 3363 | 70 3364 | 119 3365 | 101 3366 | 51 3367 | 29 3368 | 24 3369 | 33 3370 | 65 3371 | 118 3372 | 107 3373 | 55 3374 | 28 3375 | 23 3376 | 30 3377 | 61 3378 | 114 3379 | 114 3380 | 59 3381 | 29 3382 | 22 3383 | 28 3384 | 54 3385 | 110 3386 | 122 3387 | 64 3388 | 32 3389 | 22 3390 | 26 3391 | 48 3392 | 104 3393 | 128 3394 | 72 3395 | 33 3396 | 22 3397 | 23 3398 | 41 3399 | 94 3400 | 134 3401 | 81 3402 | 35 3403 | 21 3404 | 22 3405 | 36 3406 | 83 3407 | 136 3408 | 93 3409 | 40 3410 | 22 3411 | 20 3412 | 32 3413 | 71 3414 | 135 3415 | 107 3416 | 46 3417 | 23 3418 | 20 3419 | 27 3420 | 59 3421 | 127 3422 | 122 3423 | 56 3424 | 25 3425 | 19 3426 | 24 3427 | 49 3428 | 115 3429 | 137 3430 | 68 3431 | 28 3432 | 18 3433 | 21 3434 | 39 3435 | 96 3436 | 146 3437 | 84 3438 | 34 3439 | 19 3440 | 19 3441 | 32 3442 | 77 3443 | 146 3444 | 106 3445 | 41 3446 | 21 3447 | 17 3448 | 25 3449 | 59 3450 | 135 3451 | 128 3452 | 54 3453 | 24 3454 | 17 3455 | 21 3456 | 44 3457 | 113 3458 | 148 3459 | 72 3460 | 28 3461 | 18 3462 | 19 3463 | 33 3464 | 88 3465 | 156 3466 | 97 3467 | 36 3468 | 19 3469 | 16 3470 | 25 3471 | 63 3472 | 144 3473 | 127 3474 | 50 3475 | 22 3476 | 16 3477 | 20 3478 | 43 3479 | 117 3480 | 153 3481 | 71 3482 | 27 3483 | 16 3484 | 16 3485 | 29 3486 | 83 3487 | 160 3488 | 102 3489 | 36 3490 | 17 3491 | 15 3492 | 22 3493 | 55 3494 | 140 3495 | 140 3496 | 54 3497 | 22 3498 | 14 3499 | 16 3500 | 34 3501 | 101 3502 | 166 3503 | 85 3504 | 29 3505 | 15 3506 | 14 3507 | 23 3508 | 63 3509 | 155 3510 | 129 3511 | 45 3512 | 18 3513 | 14 3514 | 17 3515 | 37 3516 | 112 3517 | 169 3518 | 76 3519 | 26 3520 | 13 3521 | 14 3522 | 23 3523 | 67 3524 | 163 3525 | 127 3526 | 41 3527 | 17 3528 | 13 3529 | 16 3530 | 35 3531 | 113 3532 | 175 3533 | 77 3534 | 25 3535 | 13 3536 | 12 3537 | 20 3538 | 60 3539 | 163 3540 | 140 3541 | 46 3542 | 18 3543 | 12 3544 | 14 3545 | 29 3546 | 98 3547 | 185 3548 | 93 3549 | 27 3550 | 14 3551 | 12 3552 | 17 3553 | 43 3554 | 142 3555 | 171 3556 | 59 3557 | 19 3558 | 12 3559 | 12 3560 | 20 3561 | 63 3562 | 179 3563 | 136 3564 | 38 3565 | 15 3566 | 11 3567 | 11 3568 | 24 3569 | 87 3570 | 200 3571 | 106 3572 | 27 3573 | 13 3574 | 9 3575 | 11 3576 | 27 3577 | 105 3578 | 207 3579 | 86 3580 | 23 3581 | 11 3582 | 8 3583 | 11 3584 | 27 3585 | 111 3586 | 215 3587 | 82 3588 | 21 3589 | 10 3590 | 9 3591 | 9 3592 | 20 3593 | 90 3594 | 230 3595 | 103 3596 | 24 3597 | 10 3598 | 8 3599 | 7 3600 | 10 3601 | 38 3602 | 182 3603 | 206 3604 | 45 3605 | 12 3606 | 7 3607 | 5 3608 | 5 3609 | 4 3610 | 10 3611 | 58 3612 | 246 3613 | 138 3614 | 27 3615 | 10 3616 | 8 3617 | 9 3618 | 22 3619 | 84 3620 | 189 3621 | 105 3622 | 29 3623 | 14 3624 | 10 3625 | 17 3626 | 43 3627 | 132 3628 | 157 3629 | 60 3630 | 22 3631 | 13 3632 | 14 3633 | 28 3634 | 87 3635 | 171 3636 | 99 3637 | 32 3638 | 15 3639 | 13 3640 | 19 3641 | 50 3642 | 142 3643 | 150 3644 | 54 3645 | 19 3646 | 12 3647 | 13 3648 | 29 3649 | 89 3650 | 177 3651 | 97 3652 | 30 3653 | 14 3654 | 12 3655 | 17 3656 | 48 3657 | 142 3658 | 158 3659 | 56 3660 | 19 3661 | 12 3662 | 12 3663 | 25 3664 | 78 3665 | 180 3666 | 112 3667 | 34 3668 | 15 3669 | 11 3670 | 15 3671 | 37 3672 | 122 3673 | 181 3674 | 71 3675 | 22 3676 | 12 3677 | 11 3678 | 18 3679 | 55 3680 | 166 3681 | 151 3682 | 46 3683 | 16 3684 | 11 3685 | 11 3686 | 22 3687 | 77 3688 | 193 3689 | 116 3690 | 31 3691 | 12 3692 | 9 3693 | 11 3694 | 26 3695 | 100 3696 | 203 3697 | 91 3698 | 24 3699 | 10 3700 | 9 3701 | 11 3702 | 28 3703 | 114 3704 | 210 3705 | 80 3706 | 21 3707 | 10 3708 | 8 3709 | 9 3710 | 25 3711 | 106 3712 | 223 3713 | 86 3714 | 20 3715 | 9 3716 | 7 3717 | 6 3718 | 14 3719 | 65 3720 | 226 3721 | 139 3722 | 26 3723 | 10 3724 | 6 3725 | 6 3726 | 5 3727 | 13 3728 | 74 3729 | 255 3730 | 123 3731 | 20 3732 | 8 3733 | 5 3734 | 4 3735 | 3 3736 | 3 3737 | 13 3738 | 85 3739 | 191 3740 | 99 3741 | 32 3742 | 16 3743 | 16 3744 | 30 3745 | 75 3746 | 137 3747 | 98 3748 | 41 3749 | 21 3750 | 19 3751 | 29 3752 | 68 3753 | 131 3754 | 108 3755 | 48 3756 | 23 3757 | 19 3758 | 27 3759 | 59 3760 | 123 3761 | 120 3762 | 55 3763 | 25 3764 | 18 3765 | 23 3766 | 50 3767 | 113 3768 | 132 3769 | 66 3770 | 28 3771 | 19 3772 | 21 3773 | 41 3774 | 97 3775 | 141 3776 | 79 3777 | 32 3778 | 19 3779 | 19 3780 | 33 3781 | 83 3782 | 144 3783 | 97 3784 | 38 3785 | 20 3786 | 17 3787 | 27 3788 | 64 3789 | 137 3790 | 117 3791 | 48 3792 | 22 3793 | 16 3794 | 22 3795 | 50 3796 | 122 3797 | 137 3798 | 62 3799 | 25 3800 | 17 3801 | 19 3802 | 37 3803 | 98 3804 | 151 3805 | 82 3806 | 31 3807 | 18 3808 | 17 3809 | 28 3810 | 75 3811 | 151 3812 | 109 3813 | 41 3814 | 19 3815 | 16 3816 | 23 3817 | 54 3818 | 132 3819 | 137 3820 | 56 3821 | 23 3822 | 16 3823 | 19 3824 | 37 3825 | 104 3826 | 157 3827 | 80 3828 | 29 3829 | 16 3830 | 16 3831 | 27 3832 | 72 3833 | 155 3834 | 113 3835 | 40 3836 | 18 3837 | 14 3838 | 20 3839 | 47 3840 | 129 3841 | 149 3842 | 61 3843 | 23 3844 | 14 3845 | 15 3846 | 31 3847 | 91 3848 | 166 3849 | 94 3850 | 32 3851 | 15 3852 | 14 3853 | 21 3854 | 57 3855 | 147 3856 | 138 3857 | 50 3858 | 20 3859 | 12 3860 | 15 3861 | 33 3862 | 103 3863 | 170 3864 | 84 3865 | 28 3866 | 15 3867 | 13 3868 | 21 3869 | 59 3870 | 156 3871 | 136 3872 | 45 3873 | 18 3874 | 13 3875 | 15 3876 | 33 3877 | 104 3878 | 177 3879 | 84 3880 | 26 3881 | 14 3882 | 12 3883 | 19 3884 | 55 3885 | 155 3886 | 146 3887 | 48 3888 | 18 3889 | 11 3890 | 14 3891 | 28 3892 | 91 3893 | 184 3894 | 98 3895 | 29 3896 | 13 3897 | 10 3898 | 15 3899 | 40 3900 | 136 3901 | 172 3902 | 61 3903 | 19 3904 | 11 3905 | 11 3906 | 19 3907 | 62 3908 | 176 3909 | 138 3910 | 39 3911 | 15 3912 | 11 3913 | 12 3914 | 23 3915 | 86 3916 | 197 3917 | 105 3918 | 28 3919 | 12 3920 | 10 3921 | 13 3922 | 29 3923 | 109 3924 | 203 3925 | 84 3926 | 22 3927 | 11 3928 | 9 3929 | 12 3930 | 29 3931 | 120 3932 | 209 3933 | 76 3934 | 19 3935 | 10 3936 | 8 3937 | 9 3938 | 25 3939 | 107 3940 | 225 3941 | 86 3942 | 20 3943 | 9 3944 | 7 3945 | 7 3946 | 14 3947 | 58 3948 | 222 3949 | 153 3950 | 31 3951 | 10 3952 | 7 3953 | 5 3954 | 5 3955 | 8 3956 | 41 3957 | 219 3958 | 193 3959 | 34 3960 | 10 3961 | 6 3962 | 5 3963 | 4 3964 | 4 3965 | 11 3966 | 70 3967 | 184 3968 | 111 3969 | 36 3970 | 18 3971 | 18 3972 | 30 3973 | 69 3974 | 131 3975 | 104 3976 | 44 3977 | 22 3978 | 20 3979 | 29 3980 | 65 3981 | 126 3982 | 111 3983 | 51 3984 | 25 3985 | 20 3986 | 26 3987 | 57 3988 | 120 3989 | 122 3990 | 59 3991 | 26 3992 | 19 3993 | 23 3994 | 48 3995 | 109 3996 | 132 3997 | 68 3998 | 30 3999 | 19 4000 | 22 4001 | 40 4002 | 96 4003 | 139 4004 | 82 4005 | 33 4006 | 20 4007 | 19 4008 | 34 4009 | 81 4010 | 142 4011 | 96 4012 | 39 4013 | 21 4014 | 18 4015 | 27 4016 | 66 4017 | 137 4018 | 116 4019 | 49 4020 | 23 4021 | 18 4022 | 23 4023 | 52 4024 | 123 4025 | 134 4026 | 61 4027 | 26 4028 | 17 4029 | 19 4030 | 40 4031 | 103 4032 | 148 4033 | 80 4034 | 31 4035 | 18 4036 | 18 4037 | 31 4038 | 80 4039 | 150 4040 | 102 4041 | 39 4042 | 20 4043 | 15 4044 | 24 4045 | 59 4046 | 138 4047 | 129 4048 | 51 4049 | 22 4050 | 16 4051 | 19 4052 | 42 4053 | 112 4054 | 152 4055 | 72 4056 | 27 4057 | 16 4058 | 17 4059 | 29 4060 | 82 4061 | 158 4062 | 102 4063 | 36 4064 | 17 4065 | 15 4066 | 22 4067 | 55 4068 | 140 4069 | 137 4070 | 53 4071 | 22 4072 | 15 4073 | 17 4074 | 37 4075 | 106 4076 | 162 4077 | 80 4078 | 28 4079 | 15 4080 | 14 4081 | 25 4082 | 69 4083 | 158 4084 | 119 4085 | 41 4086 | 17 4087 | 13 4088 | 18 4089 | 42 4090 | 123 4091 | 159 4092 | 66 4093 | 23 4094 | 14 4095 | 14 4096 | 26 4097 | 78 4098 | 168 4099 | 110 4100 | 36 4101 | 15 4102 | 12 4103 | 18 4104 | 44 4105 | 132 4106 | 159 4107 | 61 4108 | 22 4109 | 14 4110 | 13 4111 | 25 4112 | 78 4113 | 174 4114 | 112 4115 | 35 4116 | 15 4117 | 12 4118 | 15 4119 | 40 4120 | 128 4121 | 170 4122 | 65 4123 | 21 4124 | 12 4125 | 12 4126 | 21 4127 | 65 4128 | 172 4129 | 129 4130 | 39 4131 | 15 4132 | 11 4133 | 13 4134 | 30 4135 | 104 4136 | 187 4137 | 85 4138 | 25 4139 | 12 4140 | 10 4141 | 15 4142 | 43 4143 | 145 4144 | 170 4145 | 56 4146 | 18 4147 | 11 4148 | 10 4149 | 18 4150 | 60 4151 | 180 4152 | 142 4153 | 39 4154 | 14 4155 | 9 4156 | 10 4157 | 21 4158 | 75 4159 | 200 4160 | 119 4161 | 30 4162 | 12 4163 | 9 4164 | 9 4165 | 21 4166 | 82 4167 | 212 4168 | 111 4169 | 26 4170 | 11 4171 | 8 4172 | 7 4173 | 17 4174 | 70 4175 | 217 4176 | 130 4177 | 28 4178 | 10 4179 | 8 4180 | 6 4181 | 10 4182 | 35 4183 | 165 4184 | 214 4185 | 51 4186 | 12 4187 | 7 4188 | 5 4189 | 5 4190 | 6 4191 | 20 4192 | 126 4193 | 255 4194 | 71 4195 | 15 4196 | 7 4197 | 5 4198 | 4 4199 | 4 4200 | 8 4201 | 46 4202 | 170 4203 | 145 4204 | 46 4205 | 18 4206 | 14 4207 | 21 4208 | 48 4209 | 120 4210 | 136 4211 | 60 4212 | 26 4213 | 17 4214 | 20 4215 | 41 4216 | 106 4217 | 143 4218 | 72 4219 | 29 4220 | 18 4221 | 18 4222 | 34 4223 | 87 4224 | 146 4225 | 92 4226 | 35 4227 | 18 4228 | 17 4229 | 27 4230 | 68 4231 | 141 4232 | 114 4233 | 45 4234 | 21 4235 | 17 4236 | 22 4237 | 51 4238 | 125 4239 | 135 4240 | 59 4241 | 24 4242 | 16 4243 | 19 4244 | 39 4245 | 102 4246 | 152 4247 | 80 4248 | 30 4249 | 17 4250 | 16 4251 | 28 4252 | 76 4253 | 152 4254 | 107 4255 | 40 4256 | 19 4257 | 15 4258 | 22 4259 | 53 4260 | 134 4261 | 138 4262 | 56 4263 | 22 4264 | 14 4265 | 19 4266 | 36 4267 | 103 4268 | 160 4269 | 80 4270 | 29 4271 | 16 4272 | 15 4273 | 26 4274 | 71 4275 | 156 4276 | 117 4277 | 41 4278 | 18 4279 | 14 4280 | 19 4281 | 44 4282 | 126 4283 | 153 4284 | 63 4285 | 24 4286 | 14 4287 | 15 4288 | 29 4289 | 86 4290 | 167 4291 | 100 4292 | 34 4293 | 15 4294 | 14 4295 | 20 4296 | 52 4297 | 141 4298 | 148 4299 | 55 4300 | 21 4301 | 14 4302 | 15 4303 | 30 4304 | 92 4305 | 173 4306 | 94 4307 | 30 4308 | 15 4309 | 12 4310 | 19 4311 | 51 4312 | 147 4313 | 150 4314 | 53 4315 | 19 4316 | 12 4317 | 14 4318 | 28 4319 | 89 4320 | 180 4321 | 99 4322 | 30 4323 | 14 4324 | 11 4325 | 16 4326 | 44 4327 | 139 4328 | 165 4329 | 59 4330 | 21 4331 | 11 4332 | 12 4333 | 22 4334 | 71 4335 | 179 4336 | 123 4337 | 36 4338 | 14 4339 | 10 4340 | 12 4341 | 31 4342 | 106 4343 | 191 4344 | 84 4345 | 24 4346 | 12 4347 | 9 4348 | 14 4349 | 41 4350 | 145 4351 | 177 4352 | 57 4353 | 17 4354 | 10 4355 | 10 4356 | 16 4357 | 54 4358 | 174 4359 | 155 4360 | 42 4361 | 14 4362 | 9 4363 | 9 4364 | 16 4365 | 60 4366 | 191 4367 | 145 4368 | 36 4369 | 13 4370 | 9 4371 | 8 4372 | 14 4373 | 55 4374 | 194 4375 | 157 4376 | 37 4377 | 12 4378 | 8 4379 | 7 4380 | 9 4381 | 33 4382 | 152 4383 | 217 4384 | 55 4385 | 14 4386 | 7 4387 | 5 4388 | 5 4389 | 8 4390 | 36 4391 | 193 4392 | 212 4393 | 41 4394 | 11 4395 | 7 4396 | 5 4397 | 4 4398 | 3 4399 | 6 4400 | 34 4401 | 154 4402 | 151 4403 | 55 4404 | 22 4405 | 17 4406 | 24 4407 | 52 4408 | 112 4409 | 121 4410 | 61 4411 | 28 4412 | 21 4413 | 25 4414 | 51 4415 | 107 4416 | 124 4417 | 66 4418 | 31 4419 | 21 4420 | 24 4421 | 44 4422 | 100 4423 | 130 4424 | 74 4425 | 34 4426 | 21 4427 | 22 4428 | 39 4429 | 91 4430 | 133 4431 | 84 4432 | 36 4433 | 21 4434 | 21 4435 | 34 4436 | 79 4437 | 136 4438 | 95 4439 | 42 4440 | 22 4441 | 19 4442 | 29 4443 | 67 4444 | 132 4445 | 111 4446 | 47 4447 | 23 4448 | 18 4449 | 25 4450 | 56 4451 | 122 4452 | 125 4453 | 57 4454 | 25 4455 | 18 4456 | 22 4457 | 45 4458 | 109 4459 | 138 4460 | 70 4461 | 29 4462 | 18 4463 | 18 4464 | 35 4465 | 91 4466 | 146 4467 | 88 4468 | 35 4469 | 19 4470 | 18 4471 | 29 4472 | 72 4473 | 143 4474 | 109 4475 | 43 4476 | 20 4477 | 16 4478 | 23 4479 | 55 4480 | 130 4481 | 132 4482 | 56 4483 | 24 4484 | 16 4485 | 19 4486 | 40 4487 | 107 4488 | 150 4489 | 75 4490 | 28 4491 | 16 4492 | 17 4493 | 30 4494 | 81 4495 | 155 4496 | 101 4497 | 37 4498 | 18 4499 | 15 4500 | 24 4501 | 57 4502 | 138 4503 | 132 4504 | 53 4505 | 22 4506 | 15 4507 | 18 4508 | 38 4509 | 109 4510 | 157 4511 | 75 4512 | 28 4513 | 16 4514 | 15 4515 | 27 4516 | 76 4517 | 159 4518 | 111 4519 | 38 4520 | 18 4521 | 14 4522 | 20 4523 | 49 4524 | 132 4525 | 149 4526 | 59 4527 | 22 4528 | 14 4529 | 15 4530 | 31 4531 | 92 4532 | 168 4533 | 93 4534 | 31 4535 | 15 4536 | 13 4537 | 21 4538 | 57 4539 | 149 4540 | 140 4541 | 51 4542 | 20 4543 | 13 4544 | 15 4545 | 33 4546 | 101 4547 | 172 4548 | 86 4549 | 27 4550 | 15 4551 | 13 4552 | 20 4553 | 57 4554 | 155 4555 | 140 4556 | 47 4557 | 18 4558 | 12 4559 | 14 4560 | 30 4561 | 98 4562 | 179 4563 | 89 4564 | 27 4565 | 14 4566 | 11 4567 | 17 4568 | 49 4569 | 148 4570 | 155 4571 | 52 4572 | 17 4573 | 11 4574 | 11 4575 | 24 4576 | 80 4577 | 184 4578 | 111 4579 | 33 4580 | 14 4581 | 11 4582 | 14 4583 | 34 4584 | 120 4585 | 186 4586 | 73 4587 | 22 4588 | 12 4589 | 10 4590 | 16 4591 | 48 4592 | 159 4593 | 162 4594 | 49 4595 | 16 4596 | 10 4597 | 10 4598 | 18 4599 | 64 4600 | 187 4601 | 137 4602 | 36 4603 | 14 4604 | 9 4605 | 10 4606 | 20 4607 | 74 4608 | 204 4609 | 122 4610 | 29 4611 | 11 4612 | 9 4613 | 8 4614 | 17 4615 | 70 4616 | 212 4617 | 130 4618 | 29 4619 | 12 4620 | 8 4621 | 7 4622 | 12 4623 | 45 4624 | 189 4625 | 182 4626 | 40 4627 | 12 4628 | 8 4629 | 6 4630 | 5 4631 | 13 4632 | 64 4633 | 250 4634 | 141 4635 | 24 4636 | 9 4637 | 7 4638 | 5 4639 | 4 4640 | 4 4641 | 4 4642 | 26 4643 | 103 4644 | 106 4645 | 59 4646 | 35 4647 | 31 4648 | 42 4649 | 67 4650 | 91 4651 | 80 4652 | 53 4653 | 37 4654 | 35 4655 | 46 4656 | 72 4657 | 93 4658 | 79 4659 | 52 4660 | 37 4661 | 36 4662 | 48 4663 | 74 4664 | 95 4665 | 78 4666 | 50 4667 | 36 4668 | 36 4669 | 49 4670 | 77 4671 | 96 4672 | 78 4673 | 49 4674 | 34 4675 | 35 4676 | 48 4677 | 78 4678 | 98 4679 | 77 4680 | 47 4681 | 33 4682 | 34 4683 | 49 4684 | 80 4685 | 101 4686 | 76 4687 | 44 4688 | 32 4689 | 33 4690 | 49 4691 | 83 4692 | 103 4693 | 76 4694 | 45 4695 | 32 4696 | 32 4697 | 49 4698 | 85 4699 | 104 4700 | 78 4701 | 43 4702 | 30 4703 | 31 4704 | 47 4705 | 85 4706 | 108 4707 | 77 4708 | 43 4709 | 30 4710 | 31 4711 | 47 4712 | 85 4713 | 110 4714 | 79 4715 | 42 4716 | 28 4717 | 29 4718 | 46 4719 | 85 4720 | 113 4721 | 80 4722 | 42 4723 | 29 4724 | 28 4725 | 44 4726 | 84 4727 | 116 4728 | 83 4729 | 42 4730 | 28 4731 | 27 4732 | 42 4733 | 83 4734 | 119 4735 | 87 4736 | 44 4737 | 28 4738 | 27 4739 | 40 4740 | 79 4741 | 121 4742 | 91 4743 | 46 4744 | 28 4745 | 26 4746 | 37 4747 | 75 4748 | 122 4749 | 97 4750 | 48 4751 | 27 4752 | 24 4753 | 35 4754 | 71 4755 | 121 4756 | 103 4757 | 51 4758 | 28 4759 | 24 4760 | 32 4761 | 64 4762 | 119 4763 | 111 4764 | 55 4765 | 28 4766 | 22 4767 | 29 4768 | 58 4769 | 115 4770 | 120 4771 | 60 4772 | 31 4773 | 22 4774 | 25 4775 | 50 4776 | 108 4777 | 127 4778 | 68 4779 | 31 4780 | 21 4781 | 24 4782 | 45 4783 | 100 4784 | 133 4785 | 78 4786 | 34 4787 | 21 4788 | 22 4789 | 37 4790 | 87 4791 | 138 4792 | 89 4793 | 38 4794 | 22 4795 | 20 4796 | 32 4797 | 75 4798 | 137 4799 | 104 4800 | 45 4801 | 23 4802 | 19 4803 | 26 4804 | 61 4805 | 129 4806 | 120 4807 | 53 4808 | 24 4809 | 17 4810 | 23 4811 | 49 4812 | 116 4813 | 135 4814 | 64 4815 | 27 4816 | 18 4817 | 20 4818 | 39 4819 | 98 4820 | 147 4821 | 82 4822 | 33 4823 | 18 4824 | 17 4825 | 31 4826 | 78 4827 | 147 4828 | 104 4829 | 41 4830 | 20 4831 | 17 4832 | 25 4833 | 59 4834 | 135 4835 | 128 4836 | 52 4837 | 23 4838 | 16 4839 | 20 4840 | 43 4841 | 113 4842 | 149 4843 | 70 4844 | 28 4845 | 17 4846 | 18 4847 | 32 4848 | 86 4849 | 156 4850 | 98 4851 | 36 4852 | 19 4853 | 16 4854 | 24 4855 | 60 4856 | 143 4857 | 130 4858 | 50 4859 | 21 4860 | 17 4861 | 19 4862 | 42 4863 | 115 4864 | 156 4865 | 73 4866 | 26 4867 | 16 4868 | 16 4869 | 28 4870 | 80 4871 | 160 4872 | 108 4873 | 38 4874 | 18 4875 | 15 4876 | 21 4877 | 52 4878 | 137 4879 | 147 4880 | 58 4881 | 22 4882 | 13 4883 | 16 4884 | 32 4885 | 95 4886 | 169 4887 | 91 4888 | 30 4889 | 16 4890 | 14 4891 | 21 4892 | 57 4893 | 151 4894 | 139 4895 | 49 4896 | 19 4897 | 13 4898 | 15 4899 | 32 4900 | 102 4901 | 174 4902 | 86 4903 | 29 4904 | 15 4905 | 12 4906 | 21 4907 | 57 4908 | 156 4909 | 141 4910 | 49 4911 | 18 4912 | 13 4913 | 15 4914 | 30 4915 | 97 4916 | 181 4917 | 91 4918 | 28 4919 | 14 4920 | 12 4921 | 17 4922 | 48 4923 | 146 4924 | 159 4925 | 54 4926 | 18 4927 | 12 4928 | 12 4929 | 23 4930 | 76 4931 | 184 4932 | 116 4933 | 34 4934 | 14 4935 | 10 4936 | 13 4937 | 33 4938 | 114 4939 | 190 4940 | 79 4941 | 24 4942 | 12 4943 | 10 4944 | 15 4945 | 44 4946 | 150 4947 | 174 4948 | 55 4949 | 17 4950 | 11 4951 | 10 4952 | 17 4953 | 56 4954 | 179 4955 | 153 4956 | 41 4957 | 14 4958 | 10 4959 | 9 4960 | 17 4961 | 60 4962 | 194 4963 | 146 4964 | 37 4965 | 14 4966 | 9 4967 | 8 4968 | 14 4969 | 52 4970 | 192 4971 | 165 4972 | 39 4973 | 13 4974 | 8 4975 | 7 4976 | 10 4977 | 28 4978 | 135 4979 | 235 4980 | 67 4981 | 16 4982 | 9 4983 | 8 4984 | 6 4985 | 7 4986 | 20 4987 | 125 4988 | 255 4989 | 73 4990 | 14 4991 | 7 4992 | 5 4993 | 3 4994 | 4 4995 | 6 4996 | 30 4997 | 141 4998 | 161 4999 | 62 5000 | 24 5001 | 18 5002 | 24 5003 | 49 5004 | 107 5005 | 126 5006 | 67 5007 | 31 5008 | 22 5009 | 24 5010 | 46 5011 | 101 5012 | 127 5013 | 72 5014 | 33 5015 | 21 5016 | 23 5017 | 43 5018 | 93 5019 | 131 5020 | 81 5021 | 35 5022 | 22 5023 | 22 5024 | 37 5025 | 84 5026 | 134 5027 | 90 5028 | 40 5029 | 23 5030 | 20 5031 | 33 5032 | 74 5033 | 134 5034 | 103 5035 | 45 5036 | 23 5037 | 20 5038 | 28 5039 | 64 5040 | 128 5041 | 116 5042 | 52 5043 | 24 5044 | 19 5045 | 25 5046 | 52 5047 | 118 5048 | 131 5049 | 62 5050 | 28 5051 | 18 5052 | 22 5053 | 42 5054 | 103 5055 | 140 5056 | 75 5057 | 31 5058 | 19 5059 | 19 5060 | 34 5061 | 86 5062 | 145 5063 | 94 5064 | 38 5065 | 20 5066 | 18 5067 | 27 5068 | 67 5069 | 140 5070 | 115 5071 | 46 5072 | 22 5073 | 16 5074 | 22 5075 | 51 5076 | 125 5077 | 136 5078 | 61 5079 | 25 5080 | 17 5081 | 20 5082 | 39 5083 | 102 5084 | 152 5085 | 81 5086 | 31 5087 | 18 5088 | 17 5089 | 29 5090 | 76 5091 | 152 5092 | 108 5093 | 39 5094 | 20 5095 | 17 5096 | 23 5097 | 56 5098 | 134 5099 | 137 5100 | 56 5101 | 24 5102 | 16 5103 | 19 5104 | 37 5105 | 104 5106 | 159 5107 | 80 5108 | 29 5109 | 16 5110 | 15 5111 | 26 5112 | 72 5113 | 156 5114 | 115 5115 | 40 5116 | 18 5117 | 14 5118 | 19 5119 | 47 5120 | 129 5121 | 150 5122 | 62 5123 | 23 5124 | 14 5125 | 15 5126 | 30 5127 | 88 5128 | 167 5129 | 96 5130 | 32 5131 | 16 5132 | 14 5133 | 21 5134 | 54 5135 | 145 5136 | 143 5137 | 52 5138 | 19 5139 | 12 5140 | 13 5141 | 30 5142 | 97 5143 | 171 5144 | 88 5145 | 28 5146 | 14 5147 | 12 5148 | 19 5149 | 55 5150 | 151 5151 | 144 5152 | 49 5153 | 17 5154 | 12 5155 | 14 5156 | 29 5157 | 94 5158 | 178 5159 | 91 5160 | 28 5161 | 13 5162 | 11 5163 | 17 5164 | 49 5165 | 146 5166 | 157 5167 | 54 5168 | 18 5169 | 11 5170 | 12 5171 | 23 5172 | 78 5173 | 182 5174 | 112 5175 | 32 5176 | 14 5177 | 10 5178 | 14 5179 | 33 5180 | 117 5181 | 185 5182 | 74 5183 | 22 5184 | 12 5185 | 10 5186 | 15 5187 | 47 5188 | 156 5189 | 164 5190 | 50 5191 | 16 5192 | 10 5193 | 11 5194 | 19 5195 | 63 5196 | 186 5197 | 138 5198 | 36 5199 | 13 5200 | 9 5201 | 9 5202 | 20 5203 | 74 5204 | 203 5205 | 123 5206 | 30 5207 | 11 5208 | 9 5209 | 9 5210 | 18 5211 | 71 5212 | 213 5213 | 128 5214 | 30 5215 | 10 5216 | 8 5217 | 8 5218 | 13 5219 | 47 5220 | 193 5221 | 176 5222 | 40 5223 | 12 5224 | 7 5225 | 6 5226 | 6 5227 | 14 5228 | 72 5229 | 255 5230 | 128 5231 | 23 5232 | 9 5233 | 6 5234 | 5 5235 | 4 5236 | 3 5237 | 3 5238 | 13 5239 | 57 5240 | 53 5241 | 34 5242 | 29 5243 | 33 5244 | 42 5245 | 61 5246 | 78 5247 | 75 5248 | 56 5249 | 41 5250 | 38 5251 | 46 5252 | 64 5253 | 80 5254 | 75 5255 | 56 5256 | 42 5257 | 39 5258 | 48 5259 | 66 5260 | 83 5261 | 74 5262 | 55 5263 | 41 5264 | 40 5265 | 49 5266 | 70 5267 | 84 5268 | 73 5269 | 53 5270 | 40 5271 | 39 5272 | 51 5273 | 72 5274 | 86 5275 | 72 5276 | 51 5277 | 39 5278 | 38 5279 | 51 5280 | 74 5281 | 89 5282 | 72 5283 | 49 5284 | 38 5285 | 38 5286 | 53 5287 | 78 5288 | 89 5289 | 71 5290 | 47 5291 | 35 5292 | 38 5293 | 54 5294 | 80 5295 | 92 5296 | 70 5297 | 46 5298 | 35 5299 | 38 5300 | 56 5301 | 84 5302 | 94 5303 | 69 5304 | 43 5305 | 34 5306 | 37 5307 | 56 5308 | 87 5309 | 95 5310 | 68 5311 | 43 5312 | 33 5313 | 36 5314 | 57 5315 | 89 5316 | 97 5317 | 67 5318 | 42 5319 | 33 5320 | 37 5321 | 57 5322 | 92 5323 | 99 5324 | 67 5325 | 41 5326 | 32 5327 | 36 5328 | 57 5329 | 93 5330 | 100 5331 | 67 5332 | 39 5333 | 31 5334 | 36 5335 | 58 5336 | 96 5337 | 103 5338 | 66 5339 | 39 5340 | 31 5341 | 35 5342 | 58 5343 | 97 5344 | 105 5345 | 67 5346 | 38 5347 | 29 5348 | 33 5349 | 57 5350 | 98 5351 | 107 5352 | 67 5353 | 37 5354 | 28 5355 | 34 5356 | 56 5357 | 99 5358 | 112 5359 | 69 5360 | 38 5361 | 27 5362 | 32 5363 | 53 5364 | 98 5365 | 114 5366 | 71 5367 | 37 5368 | 27 5369 | 29 5370 | 51 5371 | 97 5372 | 118 5373 | 73 5374 | 37 5375 | 27 5376 | 28 5377 | 48 5378 | 94 5379 | 123 5380 | 78 5381 | 39 5382 | 25 5383 | 27 5384 | 45 5385 | 91 5386 | 125 5387 | 83 5388 | 40 5389 | 25 5390 | 25 5391 | 40 5392 | 86 5393 | 128 5394 | 89 5395 | 42 5396 | 25 5397 | 24 5398 | 36 5399 | 78 5400 | 128 5401 | 97 5402 | 46 5403 | 25 5404 | 23 5405 | 33 5406 | 71 5407 | 127 5408 | 106 5409 | 49 5410 | 27 5411 | 22 5412 | 31 5413 | 63 5414 | 124 5415 | 117 5416 | 56 5417 | 27 5418 | 22 5419 | 27 5420 | 55 5421 | 116 5422 | 128 5423 | 64 5424 | 30 5425 | 21 5426 | 25 5427 | 46 5428 | 105 5429 | 137 5430 | 75 5431 | 33 5432 | 21 5433 | 22 5434 | 39 5435 | 91 5436 | 142 5437 | 89 5438 | 37 5439 | 21 5440 | 21 5441 | 32 5442 | 76 5443 | 142 5444 | 107 5445 | 45 5446 | 23 5447 | 19 5448 | 27 5449 | 61 5450 | 132 5451 | 125 5452 | 55 5453 | 25 5454 | 18 5455 | 23 5456 | 48 5457 | 116 5458 | 143 5459 | 69 5460 | 29 5461 | 19 5462 | 21 5463 | 38 5464 | 95 5465 | 151 5466 | 89 5467 | 36 5468 | 20 5469 | 19 5470 | 29 5471 | 73 5472 | 148 5473 | 115 5474 | 44 5475 | 21 5476 | 17 5477 | 24 5478 | 54 5479 | 130 5480 | 139 5481 | 60 5482 | 25 5483 | 17 5484 | 19 5485 | 38 5486 | 102 5487 | 158 5488 | 84 5489 | 32 5490 | 17 5491 | 17 5492 | 27 5493 | 73 5494 | 154 5495 | 115 5496 | 41 5497 | 19 5498 | 16 5499 | 20 5500 | 48 5501 | 129 5502 | 150 5503 | 62 5504 | 24 5505 | 15 5506 | 18 5507 | 32 5508 | 92 5509 | 165 5510 | 94 5511 | 32 5512 | 18 5513 | 14 5514 | 23 5515 | 59 5516 | 148 5517 | 136 5518 | 50 5519 | 20 5520 | 14 5521 | 16 5522 | 36 5523 | 106 5524 | 168 5525 | 81 5526 | 27 5527 | 15 5528 | 14 5529 | 22 5530 | 64 5531 | 160 5532 | 130 5533 | 43 5534 | 18 5535 | 14 5536 | 16 5537 | 36 5538 | 112 5539 | 174 5540 | 78 5541 | 25 5542 | 15 5543 | 13 5544 | 21 5545 | 61 5546 | 162 5547 | 137 5548 | 45 5549 | 18 5550 | 12 5551 | 14 5552 | 31 5553 | 102 5554 | 182 5555 | 87 5556 | 27 5557 | 14 5558 | 12 5559 | 18 5560 | 49 5561 | 150 5562 | 160 5563 | 54 5564 | 19 5565 | 12 5566 | 12 5567 | 23 5568 | 74 5569 | 185 5570 | 120 5571 | 34 5572 | 14 5573 | 11 5574 | 13 5575 | 30 5576 | 106 5577 | 196 5578 | 85 5579 | 25 5580 | 12 5581 | 11 5582 | 14 5583 | 38 5584 | 137 5585 | 190 5586 | 64 5587 | 19 5588 | 10 5589 | 10 5590 | 14 5591 | 41 5592 | 156 5593 | 183 5594 | 53 5595 | 16 5596 | 9 5597 | 9 5598 | 11 5599 | 38 5600 | 157 5601 | 194 5602 | 54 5603 | 15 5604 | 9 5605 | 7 5606 | 10 5607 | 24 5608 | 116 5609 | 235 5610 | 79 5611 | 17 5612 | 9 5613 | 6 5614 | 5 5615 | 8 5616 | 30 5617 | 165 5618 | 233 5619 | 49 5620 | 12 5621 | 7 5622 | 5 5623 | 4 5624 | 3 5625 | 2 5626 | 10 5627 | 59 5628 | 102 5629 | 68 5630 | 42 5631 | 34 5632 | 39 5633 | 58 5634 | 79 5635 | 81 5636 | 61 5637 | 44 5638 | 38 5639 | 43 5640 | 61 5641 | 81 5642 | 81 5643 | 61 5644 | 43 5645 | 38 5646 | 46 5647 | 64 5648 | 84 5649 | 81 5650 | 58 5651 | 42 5652 | 38 5653 | 46 5654 | 66 5655 | 86 5656 | 81 5657 | 57 5658 | 43 5659 | 38 5660 | 47 5661 | 69 5662 | 89 5663 | 80 5664 | 56 5665 | 38 5666 | 36 5667 | 47 5668 | 71 5669 | 91 5670 | 80 5671 | 54 5672 | 39 5673 | 35 5674 | 47 5675 | 73 5676 | 94 5677 | 80 5678 | 52 5679 | 37 5680 | 36 5681 | 49 5682 | 75 5683 | 97 5684 | 79 5685 | 51 5686 | 36 5687 | 36 5688 | 48 5689 | 78 5690 | 99 5691 | 78 5692 | 49 5693 | 35 5694 | 35 5695 | 49 5696 | 79 5697 | 101 5698 | 78 5699 | 48 5700 | 33 5701 | 35 5702 | 48 5703 | 81 5704 | 104 5705 | 78 5706 | 46 5707 | 33 5708 | 32 5709 | 48 5710 | 83 5711 | 106 5712 | 78 5713 | 45 5714 | 32 5715 | 32 5716 | 47 5717 | 83 5718 | 109 5719 | 80 5720 | 45 5721 | 30 5722 | 31 5723 | 46 5724 | 84 5725 | 111 5726 | 81 5727 | 44 5728 | 30 5729 | 30 5730 | 45 5731 | 84 5732 | 113 5733 | 83 5734 | 44 5735 | 29 5736 | 29 5737 | 44 5738 | 82 5739 | 116 5740 | 85 5741 | 44 5742 | 28 5743 | 27 5744 | 42 5745 | 80 5746 | 119 5747 | 89 5748 | 45 5749 | 28 5750 | 26 5751 | 39 5752 | 77 5753 | 121 5754 | 93 5755 | 47 5756 | 28 5757 | 25 5758 | 37 5759 | 73 5760 | 121 5761 | 99 5762 | 49 5763 | 27 5764 | 25 5765 | 34 5766 | 69 5767 | 121 5768 | 106 5769 | 52 5770 | 29 5771 | 23 5772 | 30 5773 | 62 5774 | 118 5775 | 113 5776 | 57 5777 | 29 5778 | 22 5779 | 29 5780 | 56 5781 | 114 5782 | 121 5783 | 63 5784 | 31 5785 | 23 5786 | 26 5787 | 50 5788 | 107 5789 | 129 5790 | 70 5791 | 32 5792 | 22 5793 | 24 5794 | 43 5795 | 97 5796 | 135 5797 | 80 5798 | 35 5799 | 21 5800 | 21 5801 | 37 5802 | 86 5803 | 139 5804 | 92 5805 | 40 5806 | 22 5807 | 21 5808 | 31 5809 | 73 5810 | 137 5811 | 107 5812 | 45 5813 | 23 5814 | 19 5815 | 26 5816 | 60 5817 | 128 5818 | 125 5819 | 55 5820 | 25 5821 | 18 5822 | 23 5823 | 48 5824 | 114 5825 | 139 5826 | 70 5827 | 29 5828 | 19 5829 | 20 5830 | 37 5831 | 95 5832 | 148 5833 | 86 5834 | 34 5835 | 19 5836 | 18 5837 | 30 5838 | 75 5839 | 147 5840 | 109 5841 | 43 5842 | 20 5843 | 17 5844 | 23 5845 | 56 5846 | 132 5847 | 133 5848 | 55 5849 | 24 5850 | 16 5851 | 20 5852 | 41 5853 | 107 5854 | 152 5855 | 76 5856 | 29 5857 | 17 5858 | 17 5859 | 30 5860 | 80 5861 | 155 5862 | 104 5863 | 37 5864 | 18 5865 | 15 5866 | 22 5867 | 56 5868 | 138 5869 | 136 5870 | 54 5871 | 22 5872 | 16 5873 | 18 5874 | 38 5875 | 106 5876 | 160 5877 | 80 5878 | 29 5879 | 15 5880 | 15 5881 | 26 5882 | 72 5883 | 158 5884 | 117 5885 | 41 5886 | 18 5887 | 14 5888 | 19 5889 | 46 5890 | 128 5891 | 155 5892 | 64 5893 | 24 5894 | 15 5895 | 15 5896 | 29 5897 | 85 5898 | 169 5899 | 104 5900 | 33 5901 | 16 5902 | 14 5903 | 20 5904 | 49 5905 | 139 5906 | 152 5907 | 58 5908 | 21 5909 | 13 5910 | 14 5911 | 28 5912 | 88 5913 | 175 5914 | 100 5915 | 31 5916 | 15 5917 | 12 5918 | 18 5919 | 46 5920 | 140 5921 | 160 5922 | 57 5923 | 20 5924 | 13 5925 | 13 5926 | 25 5927 | 78 5928 | 179 5929 | 112 5930 | 32 5931 | 14 5932 | 11 5933 | 14 5934 | 36 5935 | 122 5936 | 179 5937 | 70 5938 | 22 5939 | 12 5940 | 11 5941 | 18 5942 | 56 5943 | 165 5944 | 148 5945 | 44 5946 | 16 5947 | 10 5948 | 11 5949 | 22 5950 | 78 5951 | 193 5952 | 113 5953 | 30 5954 | 13 5955 | 10 5956 | 11 5957 | 27 5958 | 104 5959 | 203 5960 | 88 5961 | 23 5962 | 10 5963 | 8 5964 | 11 5965 | 30 5966 | 119 5967 | 207 5968 | 75 5969 | 20 5970 | 10 5971 | 8 5972 | 10 5973 | 26 5974 | 116 5975 | 220 5976 | 80 5977 | 19 5978 | 9 5979 | 8 5980 | 8 5981 | 17 5982 | 74 5983 | 234 5984 | 124 5985 | 25 5986 | 9 5987 | 6 5988 | 5 5989 | 6 5990 | 16 5991 | 95 5992 | 255 5993 | 96 5994 | 18 5995 | 8 5996 | 5 5997 | 5 5998 | 3 5999 | 3 6000 | 9 6001 | 59 6002 | 137 6003 | 94 6004 | 45 6005 | 29 6006 | 31 6007 | 47 6008 | 79 6009 | 97 6010 | 73 6011 | 44 6012 | 32 6013 | 35 6014 | 52 6015 | 83 6016 | 97 6017 | 72 6018 | 44 6019 | 33 6020 | 35 6021 | 53 6022 | 86 6023 | 99 6024 | 71 6025 | 43 6026 | 32 6027 | 34 6028 | 54 6029 | 87 6030 | 100 6031 | 69 6032 | 42 6033 | 31 6034 | 34 6035 | 54 6036 | 89 6037 | 101 6038 | 70 6039 | 41 6040 | 30 6041 | 33 6042 | 53 6043 | 90 6044 | 104 6045 | 69 6046 | 39 6047 | 28 6048 | 32 6049 | 52 6050 | 91 6051 | 106 6052 | 70 6053 | 39 6054 | 29 6055 | 32 6056 | 52 6057 | 92 6058 | 110 6059 | 71 6060 | 38 6061 | 27 6062 | 30 6063 | 50 6064 | 93 6065 | 112 6066 | 73 6067 | 38 6068 | 26 6069 | 28 6070 | 47 6071 | 91 6072 | 116 6073 | 74 6074 | 38 6075 | 26 6076 | 28 6077 | 45 6078 | 89 6079 | 119 6080 | 79 6081 | 40 6082 | 26 6083 | 26 6084 | 43 6085 | 86 6086 | 122 6087 | 83 6088 | 41 6089 | 25 6090 | 25 6091 | 39 6092 | 81 6093 | 124 6094 | 89 6095 | 43 6096 | 25 6097 | 24 6098 | 36 6099 | 77 6100 | 125 6101 | 97 6102 | 47 6103 | 25 6104 | 23 6105 | 33 6106 | 70 6107 | 125 6108 | 104 6109 | 50 6110 | 25 6111 | 22 6112 | 30 6113 | 62 6114 | 122 6115 | 115 6116 | 56 6117 | 28 6118 | 21 6119 | 27 6120 | 55 6121 | 117 6122 | 125 6123 | 62 6124 | 29 6125 | 20 6126 | 24 6127 | 47 6128 | 105 6129 | 134 6130 | 73 6131 | 32 6132 | 21 6133 | 22 6134 | 39 6135 | 93 6136 | 140 6137 | 85 6138 | 36 6139 | 21 6140 | 20 6141 | 34 6142 | 79 6143 | 140 6144 | 101 6145 | 42 6146 | 22 6147 | 19 6148 | 27 6149 | 64 6150 | 134 6151 | 119 6152 | 50 6153 | 23 6154 | 18 6155 | 23 6156 | 50 6157 | 119 6158 | 136 6159 | 64 6160 | 26 6161 | 17 6162 | 20 6163 | 39 6164 | 100 6165 | 148 6166 | 81 6167 | 31 6168 | 18 6169 | 18 6170 | 30 6171 | 78 6172 | 150 6173 | 105 6174 | 40 6175 | 20 6176 | 16 6177 | 23 6178 | 57 6179 | 135 6180 | 130 6181 | 53 6182 | 22 6183 | 16 6184 | 19 6185 | 41 6186 | 110 6187 | 153 6188 | 75 6189 | 29 6190 | 16 6191 | 17 6192 | 29 6193 | 80 6194 | 157 6195 | 103 6196 | 37 6197 | 18 6198 | 14 6199 | 21 6200 | 54 6201 | 138 6202 | 138 6203 | 55 6204 | 22 6205 | 15 6206 | 17 6207 | 36 6208 | 103 6209 | 163 6210 | 81 6211 | 29 6212 | 15 6213 | 14 6214 | 24 6215 | 67 6216 | 158 6217 | 123 6218 | 43 6219 | 17 6220 | 13 6221 | 18 6222 | 42 6223 | 121 6224 | 161 6225 | 69 6226 | 24 6227 | 14 6228 | 14 6229 | 25 6230 | 75 6231 | 167 6232 | 114 6233 | 36 6234 | 16 6235 | 12 6236 | 17 6237 | 43 6238 | 128 6239 | 164 6240 | 65 6241 | 23 6242 | 12 6243 | 13 6244 | 24 6245 | 73 6246 | 173 6247 | 118 6248 | 36 6249 | 15 6250 | 11 6251 | 15 6252 | 37 6253 | 120 6254 | 176 6255 | 71 6256 | 24 6257 | 13 6258 | 11 6259 | 20 6260 | 59 6261 | 166 6262 | 141 6263 | 43 6264 | 15 6265 | 10 6266 | 11 6267 | 25 6268 | 91 6269 | 191 6270 | 98 6271 | 27 6272 | 13 6273 | 10 6274 | 13 6275 | 36 6276 | 128 6277 | 187 6278 | 67 6279 | 21 6280 | 10 6281 | 9 6282 | 15 6283 | 45 6284 | 159 6285 | 169 6286 | 50 6287 | 15 6288 | 9 6289 | 9 6290 | 16 6291 | 53 6292 | 179 6293 | 160 6294 | 41 6295 | 13 6296 | 8 6297 | 8 6298 | 14 6299 | 48 6300 | 181 6301 | 171 6302 | 42 6303 | 13 6304 | 8 6305 | 7 6306 | 10 6307 | 29 6308 | 138 6309 | 225 6310 | 63 6311 | 14 6312 | 7 6313 | 5 6314 | 5 6315 | 8 6316 | 33 6317 | 183 6318 | 221 6319 | 44 6320 | 10 6321 | 7 6322 | 5 6323 | 4 6324 | 3 6325 | 3 6326 | 16 6327 | 81 6328 | 106 6329 | 65 6330 | 41 6331 | 34 6332 | 42 6333 | 61 6334 | 82 6335 | 78 6336 | 58 6337 | 42 6338 | 37 6339 | 46 6340 | 64 6341 | 84 6342 | 78 6343 | 57 6344 | 42 6345 | 38 6346 | 47 6347 | 68 6348 | 86 6349 | 77 6350 | 56 6351 | 41 6352 | 39 6353 | 49 6354 | 71 6355 | 89 6356 | 77 6357 | 54 6358 | 39 6359 | 38 6360 | 48 6361 | 73 6362 | 91 6363 | 76 6364 | 51 6365 | 38 6366 | 37 6367 | 50 6368 | 75 6369 | 92 6370 | 76 6371 | 50 6372 | 36 6373 | 36 6374 | 51 6375 | 78 6376 | 95 6377 | 75 6378 | 48 6379 | 35 6380 | 35 6381 | 51 6382 | 80 6383 | 96 6384 | 74 6385 | 46 6386 | 33 6387 | 35 6388 | 51 6389 | 82 6390 | 99 6391 | 73 6392 | 45 6393 | 33 6394 | 34 6395 | 52 6396 | 84 6397 | 100 6398 | 73 6399 | 43 6400 | 31 6401 | 34 6402 | 51 6403 | 87 6404 | 103 6405 | 72 6406 | 43 6407 | 31 6408 | 34 6409 | 52 6410 | 88 6411 | 105 6412 | 74 6413 | 42 6414 | 31 6415 | 33 6416 | 52 6417 | 90 6418 | 108 6419 | 74 6420 | 41 6421 | 29 6422 | 32 6423 | 50 6424 | 90 6425 | 110 6426 | 75 6427 | 40 6428 | 28 6429 | 29 6430 | 48 6431 | 90 6432 | 113 6433 | 76 6434 | 41 6435 | 28 6436 | 29 6437 | 47 6438 | 89 6439 | 117 6440 | 79 6441 | 41 6442 | 27 6443 | 29 6444 | 45 6445 | 88 6446 | 119 6447 | 83 6448 | 41 6449 | 27 6450 | 27 6451 | 42 6452 | 84 6453 | 122 6454 | 87 6455 | 43 6456 | 27 6457 | 25 6458 | 39 6459 | 80 6460 | 124 6461 | 93 6462 | 45 6463 | 25 6464 | 24 6465 | 35 6466 | 74 6467 | 124 6468 | 99 6469 | 47 6470 | 27 6471 | 23 6472 | 32 6473 | 67 6474 | 123 6475 | 107 6476 | 52 6477 | 27 6478 | 22 6479 | 29 6480 | 60 6481 | 120 6482 | 118 6483 | 57 6484 | 29 6485 | 21 6486 | 26 6487 | 53 6488 | 112 6489 | 126 6490 | 65 6491 | 31 6492 | 21 6493 | 24 6494 | 45 6495 | 101 6496 | 134 6497 | 75 6498 | 32 6499 | 20 6500 | 21 6501 | 38 6502 | 90 6503 | 139 6504 | 88 6505 | 36 6506 | 21 6507 | 20 6508 | 32 6509 | 76 6510 | 139 6511 | 104 6512 | 43 6513 | 22 6514 | 19 6515 | 26 6516 | 62 6517 | 131 6518 | 122 6519 | 53 6520 | 24 6521 | 17 6522 | 23 6523 | 48 6524 | 117 6525 | 138 6526 | 66 6527 | 27 6528 | 18 6529 | 19 6530 | 37 6531 | 96 6532 | 149 6533 | 84 6534 | 34 6535 | 18 6536 | 18 6537 | 30 6538 | 75 6539 | 148 6540 | 109 6541 | 41 6542 | 20 6543 | 17 6544 | 23 6545 | 56 6546 | 133 6547 | 134 6548 | 56 6549 | 24 6550 | 15 6551 | 19 6552 | 40 6553 | 107 6554 | 154 6555 | 77 6556 | 29 6557 | 17 6558 | 16 6559 | 28 6560 | 77 6561 | 156 6562 | 108 6563 | 39 6564 | 18 6565 | 15 6566 | 22 6567 | 53 6568 | 135 6569 | 142 6570 | 57 6571 | 22 6572 | 15 6573 | 16 6574 | 35 6575 | 100 6576 | 163 6577 | 85 6578 | 30 6579 | 16 6580 | 14 6581 | 23 6582 | 64 6583 | 155 6584 | 127 6585 | 44 6586 | 19 6587 | 12 6588 | 17 6589 | 39 6590 | 116 6591 | 164 6592 | 72 6593 | 25 6594 | 14 6595 | 14 6596 | 24 6597 | 72 6598 | 166 6599 | 119 6600 | 39 6601 | 16 6602 | 12 6603 | 17 6604 | 39 6605 | 122 6606 | 168 6607 | 69 6608 | 23 6609 | 13 6610 | 13 6611 | 22 6612 | 69 6613 | 169 6614 | 124 6615 | 38 6616 | 16 6617 | 11 6618 | 14 6619 | 34 6620 | 114 6621 | 180 6622 | 78 6623 | 24 6624 | 13 6625 | 11 6626 | 17 6627 | 54 6628 | 160 6629 | 148 6630 | 47 6631 | 17 6632 | 11 6633 | 12 6634 | 23 6635 | 81 6636 | 190 6637 | 109 6638 | 30 6639 | 12 6640 | 9 6641 | 12 6642 | 32 6643 | 115 6644 | 194 6645 | 77 6646 | 22 6647 | 10 6648 | 9 6649 | 13 6650 | 39 6651 | 144 6652 | 185 6653 | 59 6654 | 17 6655 | 10 6656 | 8 6657 | 14 6658 | 43 6659 | 160 6660 | 182 6661 | 51 6662 | 15 6663 | 9 6664 | 9 6665 | 11 6666 | 36 6667 | 151 6668 | 203 6669 | 56 6670 | 15 6671 | 9 6672 | 7 6673 | 8 6674 | 18 6675 | 92 6676 | 246 6677 | 101 6678 | 20 6679 | 9 6680 | 6 6681 | 5 6682 | 5 6683 | 12 6684 | 74 6685 | 255 6686 | 123 6687 | 20 6688 | 8 6689 | 5 6690 | 5 6691 | 4 6692 | 4 6693 | 12 6694 | 66 6695 | 129 6696 | 86 6697 | 44 6698 | 30 6699 | 32 6700 | 50 6701 | 83 6702 | 96 6703 | 69 6704 | 41 6705 | 32 6706 | 36 6707 | 54 6708 | 87 6709 | 95 6710 | 67 6711 | 41 6712 | 32 6713 | 36 6714 | 57 6715 | 89 6716 | 97 6717 | 66 6718 | 41 6719 | 32 6720 | 36 6721 | 57 6722 | 91 6723 | 98 6724 | 66 6725 | 39 6726 | 31 6727 | 34 6728 | 58 6729 | 94 6730 | 100 6731 | 64 6732 | 38 6733 | 30 6734 | 35 6735 | 57 6736 | 95 6737 | 101 6738 | 64 6739 | 37 6740 | 28 6741 | 33 6742 | 57 6743 | 96 6744 | 103 6745 | 65 6746 | 36 6747 | 27 6748 | 32 6749 | 56 6750 | 97 6751 | 106 6752 | 65 6753 | 36 6754 | 26 6755 | 32 6756 | 54 6757 | 99 6758 | 110 6759 | 67 6760 | 36 6761 | 26 6762 | 30 6763 | 52 6764 | 98 6765 | 114 6766 | 69 6767 | 35 6768 | 27 6769 | 29 6770 | 50 6771 | 96 6772 | 118 6773 | 72 6774 | 37 6775 | 25 6776 | 27 6777 | 46 6778 | 94 6779 | 121 6780 | 77 6781 | 37 6782 | 25 6783 | 25 6784 | 43 6785 | 89 6786 | 125 6787 | 82 6788 | 39 6789 | 25 6790 | 25 6791 | 40 6792 | 84 6793 | 127 6794 | 89 6795 | 41 6796 | 24 6797 | 24 6798 | 36 6799 | 77 6800 | 129 6801 | 98 6802 | 45 6803 | 26 6804 | 23 6805 | 31 6806 | 68 6807 | 128 6808 | 108 6809 | 51 6810 | 26 6811 | 21 6812 | 28 6813 | 60 6814 | 122 6815 | 120 6816 | 57 6817 | 27 6818 | 21 6819 | 26 6820 | 52 6821 | 113 6822 | 131 6823 | 66 6824 | 30 6825 | 20 6826 | 22 6827 | 42 6828 | 101 6829 | 139 6830 | 77 6831 | 33 6832 | 20 6833 | 21 6834 | 36 6835 | 85 6836 | 144 6837 | 93 6838 | 38 6839 | 20 6840 | 18 6841 | 29 6842 | 69 6843 | 138 6844 | 112 6845 | 47 6846 | 23 6847 | 17 6848 | 24 6849 | 55 6850 | 126 6851 | 132 6852 | 58 6853 | 25 6854 | 16 6855 | 20 6856 | 41 6857 | 106 6858 | 148 6859 | 76 6860 | 30 6861 | 17 6862 | 17 6863 | 31 6864 | 82 6865 | 152 6866 | 99 6867 | 36 6868 | 18 6869 | 16 6870 | 25 6871 | 60 6872 | 142 6873 | 127 6874 | 51 6875 | 21 6876 | 15 6877 | 19 6878 | 42 6879 | 116 6880 | 152 6881 | 70 6882 | 27 6883 | 16 6884 | 17 6885 | 30 6886 | 84 6887 | 159 6888 | 100 6889 | 35 6890 | 17 6891 | 14 6892 | 21 6893 | 56 6894 | 141 6895 | 136 6896 | 52 6897 | 22 6898 | 14 6899 | 17 6900 | 36 6901 | 105 6902 | 164 6903 | 82 6904 | 29 6905 | 16 6906 | 14 6907 | 24 6908 | 67 6909 | 158 6910 | 123 6911 | 42 6912 | 17 6913 | 13 6914 | 17 6915 | 40 6916 | 120 6917 | 164 6918 | 71 6919 | 24 6920 | 13 6921 | 13 6922 | 24 6923 | 71 6924 | 168 6925 | 119 6926 | 38 6927 | 16 6928 | 12 6929 | 15 6930 | 39 6931 | 120 6932 | 170 6933 | 70 6934 | 24 6935 | 12 6936 | 13 6937 | 20 6938 | 65 6939 | 169 6940 | 131 6941 | 40 6942 | 16 6943 | 11 6944 | 14 6945 | 31 6946 | 106 6947 | 184 6948 | 85 6949 | 24 6950 | 12 6951 | 11 6952 | 16 6953 | 47 6954 | 151 6955 | 163 6956 | 52 6957 | 18 6958 | 11 6959 | 10 6960 | 20 6961 | 68 6962 | 184 6963 | 128 6964 | 35 6965 | 13 6966 | 9 6967 | 10 6968 | 24 6969 | 90 6970 | 202 6971 | 100 6972 | 26 6973 | 11 6974 | 8 6975 | 10 6976 | 26 6977 | 106 6978 | 209 6979 | 84 6980 | 21 6981 | 9 6982 | 7 6983 | 9 6984 | 25 6985 | 103 6986 | 222 6987 | 89 6988 | 21 6989 | 10 6990 | 7 6991 | 7 6992 | 15 6993 | 67 6994 | 226 6995 | 132 6996 | 26 6997 | 9 6998 | 7 6999 | 6 7000 | 6 7001 | 17 7002 | 95 7003 | 255 7004 | 97 7005 | 17 7006 | 7 7007 | 6 7008 | 4 7009 | 4 7010 | 2 7011 | 5 7012 | 21 7013 | 52 7014 | 35 7015 | 29 7016 | 31 7017 | 39 7018 | 52 7019 | 62 7020 | 68 7021 | 65 7022 | 55 7023 | 48 7024 | 46 7025 | 54 7026 | 63 7027 | 69 7028 | 65 7029 | 55 7030 | 48 7031 | 48 7032 | 56 7033 | 66 7034 | 71 7035 | 65 7036 | 55 7037 | 48 7038 | 49 7039 | 57 7040 | 68 7041 | 72 7042 | 64 7043 | 53 7044 | 48 7045 | 50 7046 | 59 7047 | 69 7048 | 72 7049 | 63 7050 | 52 7051 | 47 7052 | 50 7053 | 61 7054 | 71 7055 | 73 7056 | 62 7057 | 51 7058 | 47 7059 | 50 7060 | 63 7061 | 73 7062 | 72 7063 | 60 7064 | 49 7065 | 46 7066 | 51 7067 | 63 7068 | 75 7069 | 72 7070 | 59 7071 | 48 7072 | 45 7073 | 51 7074 | 65 7075 | 76 7076 | 72 7077 | 57 7078 | 47 7079 | 45 7080 | 52 7081 | 68 7082 | 79 7083 | 72 7084 | 57 7085 | 46 7086 | 45 7087 | 53 7088 | 69 7089 | 80 7090 | 71 7091 | 54 7092 | 43 7093 | 44 7094 | 55 7095 | 72 7096 | 82 7097 | 70 7098 | 52 7099 | 43 7100 | 44 7101 | 57 7102 | 75 7103 | 84 7104 | 67 7105 | 50 7106 | 42 7107 | 44 7108 | 58 7109 | 78 7110 | 85 7111 | 68 7112 | 49 7113 | 41 7114 | 44 7115 | 60 7116 | 82 7117 | 86 7118 | 67 7119 | 48 7120 | 40 7121 | 44 7122 | 61 7123 | 84 7124 | 87 7125 | 65 7126 | 46 7127 | 39 7128 | 45 7129 | 63 7130 | 87 7131 | 87 7132 | 64 7133 | 44 7134 | 39 7135 | 44 7136 | 65 7137 | 89 7138 | 88 7139 | 62 7140 | 42 7141 | 37 7142 | 45 7143 | 66 7144 | 92 7145 | 88 7146 | 61 7147 | 40 7148 | 36 7149 | 45 7150 | 68 7151 | 95 7152 | 88 7153 | 58 7154 | 39 7155 | 35 7156 | 43 7157 | 69 7158 | 96 7159 | 89 7160 | 57 7161 | 37 7162 | 34 7163 | 43 7164 | 70 7165 | 100 7166 | 90 7167 | 55 7168 | 36 7169 | 32 7170 | 43 7171 | 71 7172 | 103 7173 | 90 7174 | 55 7175 | 35 7176 | 32 7177 | 41 7178 | 72 7179 | 104 7180 | 90 7181 | 53 7182 | 34 7183 | 30 7184 | 41 7185 | 72 7186 | 108 7187 | 91 7188 | 53 7189 | 33 7190 | 29 7191 | 40 7192 | 72 7193 | 109 7194 | 93 7195 | 53 7196 | 32 7197 | 29 7198 | 39 7199 | 70 7200 | 111 7201 | 97 7202 | 53 7203 | 32 7204 | 27 7205 | 37 7206 | 70 7207 | 113 7208 | 100 7209 | 55 7210 | 32 7211 | 27 7212 | 36 7213 | 67 7214 | 113 7215 | 104 7216 | 55 7217 | 31 7218 | 25 7219 | 32 7220 | 63 7221 | 113 7222 | 108 7223 | 58 7224 | 31 7225 | 24 7226 | 32 7227 | 59 7228 | 111 7229 | 113 7230 | 62 7231 | 32 7232 | 25 7233 | 29 7234 | 55 7235 | 108 7236 | 121 7237 | 66 7238 | 33 7239 | 24 7240 | 28 7241 | 50 7242 | 103 7243 | 126 7244 | 72 7245 | 34 7246 | 23 7247 | 26 7248 | 45 7249 | 97 7250 | 132 7251 | 81 7252 | 37 7253 | 24 7254 | 24 7255 | 38 7256 | 87 7257 | 135 7258 | 90 7259 | 40 7260 | 23 7261 | 22 7262 | 33 7263 | 75 7264 | 135 7265 | 102 7266 | 46 7267 | 24 7268 | 21 7269 | 29 7270 | 64 7271 | 131 7272 | 117 7273 | 53 7274 | 26 7275 | 20 7276 | 26 7277 | 53 7278 | 120 7279 | 131 7280 | 61 7281 | 28 7282 | 19 7283 | 21 7284 | 43 7285 | 104 7286 | 142 7287 | 76 7288 | 32 7289 | 19 7290 | 20 7291 | 35 7292 | 86 7293 | 147 7294 | 94 7295 | 37 7296 | 20 7297 | 17 7298 | 28 7299 | 68 7300 | 141 7301 | 117 7302 | 46 7303 | 22 7304 | 18 7305 | 23 7306 | 51 7307 | 124 7308 | 139 7309 | 62 7310 | 26 7311 | 16 7312 | 19 7313 | 37 7314 | 99 7315 | 153 7316 | 82 7317 | 31 7318 | 17 7319 | 17 7320 | 28 7321 | 72 7322 | 152 7323 | 113 7324 | 42 7325 | 20 7326 | 15 7327 | 21 7328 | 51 7329 | 131 7330 | 144 7331 | 61 7332 | 24 7333 | 16 7334 | 18 7335 | 35 7336 | 98 7337 | 162 7338 | 88 7339 | 31 7340 | 16 7341 | 15 7342 | 24 7343 | 65 7344 | 153 7345 | 127 7346 | 45 7347 | 20 7348 | 15 7349 | 19 7350 | 41 7351 | 118 7352 | 162 7353 | 72 7354 | 26 7355 | 15 7356 | 15 7357 | 26 7358 | 75 7359 | 166 7360 | 115 7361 | 39 7362 | 18 7363 | 14 7364 | 18 7365 | 43 7366 | 128 7367 | 163 7368 | 66 7369 | 24 7370 | 14 7371 | 14 7372 | 25 7373 | 76 7374 | 173 7375 | 116 7376 | 36 7377 | 16 7378 | 12 7379 | 15 7380 | 39 7381 | 124 7382 | 172 7383 | 69 7384 | 22 7385 | 13 7386 | 12 7387 | 20 7388 | 64 7389 | 170 7390 | 134 7391 | 40 7392 | 16 7393 | 11 7394 | 12 7395 | 29 7396 | 97 7397 | 190 7398 | 91 7399 | 26 7400 | 12 7401 | 10 7402 | 14 7403 | 41 7404 | 138 7405 | 178 7406 | 61 7407 | 19 7408 | 10 7409 | 10 7410 | 16 7411 | 53 7412 | 171 7413 | 155 7414 | 43 7415 | 15 7416 | 10 7417 | 9 7418 | 17 7419 | 63 7420 | 193 7421 | 139 7422 | 35 7423 | 12 7424 | 9 7425 | 8 7426 | 16 7427 | 61 7428 | 202 7429 | 143 7430 | 33 7431 | 12 7432 | 8 7433 | 6 7434 | 11 7435 | 41 7436 | 178 7437 | 190 7438 | 45 7439 | 13 7440 | 8 7441 | 6 7442 | 7 7443 | 13 7444 | 65 7445 | 249 7446 | 140 7447 | 25 7448 | 9 7449 | 7 7450 | 5 7451 | 5 7452 | 3 7453 | 2 7454 | 2 7455 | 1 7456 | 0 7457 | 0 7458 | 0 7459 | 0 7460 | 0 7461 | 0 7462 | 0 7463 | 4 7464 | 14 7465 | 46 7466 | 95 7467 | 89 7468 | 50 7469 | 31 7470 | 29 7471 | 43 7472 | 72 7473 | 92 7474 | 73 7475 | 46 7476 | 32 7477 | 33 7478 | 48 7479 | 76 7480 | 94 7481 | 74 7482 | 46 7483 | 33 7484 | 34 7485 | 49 7486 | 80 7487 | 96 7488 | 73 7489 | 44 7490 | 32 7491 | 33 7492 | 50 7493 | 82 7494 | 99 7495 | 73 7496 | 43 7497 | 31 7498 | 33 7499 | 50 7500 | 84 7501 | 101 7502 | 72 7503 | 42 7504 | 30 7505 | 32 7506 | 50 7507 | 86 7508 | 103 7509 | 73 7510 | 42 7511 | 29 7512 | 30 7513 | 49 7514 | 87 7515 | 105 7516 | 73 7517 | 41 7518 | 28 7519 | 30 7520 | 49 7521 | 88 7522 | 109 7523 | 74 7524 | 40 7525 | 28 7526 | 29 7527 | 46 7528 | 88 7529 | 113 7530 | 76 7531 | 41 7532 | 28 7533 | 29 7534 | 46 7535 | 88 7536 | 115 7537 | 79 7538 | 42 7539 | 27 7540 | 28 7541 | 44 7542 | 87 7543 | 119 7544 | 83 7545 | 42 7546 | 27 7547 | 27 7548 | 42 7549 | 85 7550 | 123 7551 | 89 7552 | 45 7553 | 28 7554 | 26 7555 | 39 7556 | 80 7557 | 125 7558 | 94 7559 | 47 7560 | 28 7561 | 26 7562 | 37 7563 | 75 7564 | 126 7565 | 101 7566 | 50 7567 | 28 7568 | 25 7569 | 35 7570 | 70 7571 | 125 7572 | 110 7573 | 54 7574 | 29 7575 | 25 7576 | 32 7577 | 62 7578 | 122 7579 | 120 7580 | 61 7581 | 32 7582 | 24 7583 | 29 7584 | 56 7585 | 115 7586 | 129 7587 | 67 7588 | 32 7589 | 23 7590 | 26 7591 | 48 7592 | 104 7593 | 137 7594 | 78 7595 | 36 7596 | 23 7597 | 25 7598 | 41 7599 | 93 7600 | 142 7601 | 90 7602 | 38 7603 | 24 7604 | 22 7605 | 35 7606 | 78 7607 | 142 7608 | 104 7609 | 45 7610 | 24 7611 | 20 7612 | 28 7613 | 63 7614 | 133 7615 | 124 7616 | 54 7617 | 25 7618 | 20 7619 | 24 7620 | 50 7621 | 119 7622 | 140 7623 | 67 7624 | 30 7625 | 20 7626 | 21 7627 | 38 7628 | 98 7629 | 151 7630 | 86 7631 | 34 7632 | 20 7633 | 19 7634 | 31 7635 | 76 7636 | 151 7637 | 111 7638 | 43 7639 | 21 7640 | 18 7641 | 24 7642 | 56 7643 | 134 7644 | 137 7645 | 57 7646 | 24 7647 | 17 7648 | 21 7649 | 40 7650 | 107 7651 | 157 7652 | 81 7653 | 31 7654 | 18 7655 | 17 7656 | 29 7657 | 77 7658 | 158 7659 | 113 7660 | 41 7661 | 20 7662 | 17 7663 | 23 7664 | 53 7665 | 135 7666 | 149 7667 | 61 7668 | 25 7669 | 18 7670 | 19 7671 | 36 7672 | 98 7673 | 169 7674 | 92 7675 | 33 7676 | 19 7677 | 17 7678 | 25 7679 | 63 7680 | 155 7681 | 137 7682 | 51 7683 | 22 7684 | 16 7685 | 19 7686 | 39 7687 | 111 7688 | 173 7689 | 82 7690 | 30 7691 | 18 7692 | 17 7693 | 25 7694 | 67 7695 | 164 7696 | 134 7697 | 46 7698 | 22 7699 | 15 7700 | 19 7701 | 37 7702 | 112 7703 | 180 7704 | 84 7705 | 28 7706 | 17 7707 | 14 7708 | 22 7709 | 60 7710 | 163 7711 | 146 7712 | 49 7713 | 20 7714 | 14 7715 | 16 7716 | 30 7717 | 95 7718 | 189 7719 | 99 7720 | 31 7721 | 16 7722 | 13 7723 | 18 7724 | 41 7725 | 137 7726 | 178 7727 | 64 7728 | 22 7729 | 14 7730 | 13 7731 | 20 7732 | 59 7733 | 176 7734 | 150 7735 | 44 7736 | 18 7737 | 12 7738 | 12 7739 | 22 7740 | 77 7741 | 199 7742 | 123 7743 | 33 7744 | 14 7745 | 11 7746 | 11 7747 | 23 7748 | 86 7749 | 213 7750 | 112 7751 | 27 7752 | 12 7753 | 10 7754 | 10 7755 | 21 7756 | 77 7757 | 221 7758 | 125 7759 | 28 7760 | 12 7761 | 10 7762 | 8 7763 | 13 7764 | 43 7765 | 186 7766 | 195 7767 | 44 7768 | 14 7769 | 9 7770 | 8 7771 | 7 7772 | 10 7773 | 37 7774 | 196 7775 | 217 7776 | 43 7777 | 12 7778 | 8 7779 | 8 7780 | 6 7781 | 5 7782 | 7 7783 | 18 7784 | 54 7785 | 52 7786 | 40 7787 | 37 7788 | 41 7789 | 51 7790 | 65 7791 | 74 7792 | 72 7793 | 60 7794 | 50 7795 | 47 7796 | 54 7797 | 66 7798 | 76 7799 | 72 7800 | 59 7801 | 49 7802 | 48 7803 | 56 7804 | 69 7805 | 79 7806 | 72 7807 | 58 7808 | 49 7809 | 48 7810 | 57 7811 | 71 7812 | 79 7813 | 72 7814 | 56 7815 | 48 7816 | 49 7817 | 58 7818 | 73 7819 | 80 7820 | 70 7821 | 56 7822 | 47 7823 | 48 7824 | 60 7825 | 75 7826 | 82 7827 | 68 7828 | 54 7829 | 45 7830 | 48 7831 | 60 7832 | 78 7833 | 81 7834 | 67 7835 | 51 7836 | 44 7837 | 47 7838 | 62 7839 | 80 7840 | 83 7841 | 65 7842 | 49 7843 | 43 7844 | 48 7845 | 63 7846 | 83 7847 | 82 7848 | 64 7849 | 47 7850 | 42 7851 | 48 7852 | 66 7853 | 86 7854 | 82 7855 | 62 7856 | 45 7857 | 41 7858 | 48 7859 | 68 7860 | 87 7861 | 82 7862 | 60 7863 | 44 7864 | 40 7865 | 49 7866 | 71 7867 | 90 7868 | 82 7869 | 57 7870 | 42 7871 | 40 7872 | 50 7873 | 73 7874 | 92 7875 | 82 7876 | 57 7877 | 41 7878 | 38 7879 | 50 7880 | 75 7881 | 95 7882 | 82 7883 | 54 7884 | 40 7885 | 38 7886 | 51 7887 | 77 7888 | 98 7889 | 82 7890 | 54 7891 | 39 7892 | 38 7893 | 52 7894 | 80 7895 | 100 7896 | 81 7897 | 52 7898 | 38 7899 | 37 7900 | 52 7901 | 82 7902 | 102 7903 | 81 7904 | 50 7905 | 36 7906 | 37 7907 | 53 7908 | 84 7909 | 105 7910 | 80 7911 | 50 7912 | 35 7913 | 36 7914 | 51 7915 | 86 7916 | 107 7917 | 80 7918 | 47 7919 | 34 7920 | 34 7921 | 51 7922 | 87 7923 | 110 7924 | 81 7925 | 47 7926 | 33 7927 | 33 7928 | 50 7929 | 88 7930 | 113 7931 | 81 7932 | 46 7933 | 32 7934 | 32 7935 | 49 7936 | 88 7937 | 115 7938 | 83 7939 | 46 7940 | 31 7941 | 31 7942 | 47 7943 | 86 7944 | 117 7945 | 85 7946 | 45 7947 | 30 7948 | 30 7949 | 43 7950 | 84 7951 | 119 7952 | 87 7953 | 45 7954 | 29 7955 | 29 7956 | 41 7957 | 80 7958 | 122 7959 | 91 7960 | 47 7961 | 28 7962 | 27 7963 | 39 7964 | 77 7965 | 123 7966 | 97 7967 | 48 7968 | 27 7969 | 24 7970 | 35 7971 | 72 7972 | 123 7973 | 103 7974 | 50 7975 | 28 7976 | 24 7977 | 32 7978 | 66 7979 | 121 7980 | 111 7981 | 55 7982 | 28 7983 | 22 7984 | 30 7985 | 59 7986 | 118 7987 | 119 7988 | 60 7989 | 29 7990 | 22 7991 | 27 7992 | 53 7993 | 111 7994 | 128 7995 | 68 7996 | 32 7997 | 22 7998 | 25 7999 | 46 8000 | 101 8001 | 136 8002 | 77 8003 | 35 8004 | 23 8005 | 24 8006 | 39 8007 | 90 8008 | 141 8009 | 91 8010 | 40 8011 | 24 8012 | 22 8013 | 34 8014 | 76 8015 | 140 8016 | 107 8017 | 46 8018 | 23 8019 | 21 8020 | 29 8021 | 63 8022 | 133 8023 | 124 8024 | 56 8025 | 27 8026 | 19 8027 | 24 8028 | 51 8029 | 118 8030 | 141 8031 | 68 8032 | 30 8033 | 20 8034 | 22 8035 | 39 8036 | 98 8037 | 151 8038 | 88 8039 | 35 8040 | 20 8041 | 19 8042 | 31 8043 | 77 8044 | 150 8045 | 111 8046 | 43 8047 | 22 8048 | 18 8049 | 24 8050 | 57 8051 | 134 8052 | 136 8053 | 58 8054 | 25 8055 | 18 8056 | 20 8057 | 41 8058 | 107 8059 | 155 8060 | 79 8061 | 30 8062 | 18 8063 | 18 8064 | 29 8065 | 78 8066 | 157 8067 | 110 8068 | 39 8069 | 20 8070 | 16 8071 | 22 8072 | 52 8073 | 135 8074 | 144 8075 | 58 8076 | 23 8077 | 15 8078 | 17 8079 | 34 8080 | 99 8081 | 166 8082 | 89 8083 | 31 8084 | 17 8085 | 15 8086 | 23 8087 | 63 8088 | 154 8089 | 130 8090 | 46 8091 | 19 8092 | 13 8093 | 17 8094 | 37 8095 | 113 8096 | 169 8097 | 76 8098 | 28 8099 | 14 8100 | 14 8101 | 24 8102 | 67 8103 | 164 8104 | 126 8105 | 41 8106 | 18 8107 | 13 8108 | 16 8109 | 37 8110 | 116 8111 | 175 8112 | 76 8113 | 25 8114 | 14 8115 | 12 8116 | 22 8117 | 62 8118 | 165 8119 | 137 8120 | 44 8121 | 18 8122 | 12 8123 | 15 8124 | 30 8125 | 100 8126 | 187 8127 | 91 8128 | 28 8129 | 14 8130 | 13 8131 | 17 8132 | 46 8133 | 146 8134 | 172 8135 | 58 8136 | 20 8137 | 13 8138 | 13 8139 | 20 8140 | 65 8141 | 182 8142 | 139 8143 | 39 8144 | 16 8145 | 11 8146 | 12 8147 | 24 8148 | 85 8149 | 203 8150 | 111 8151 | 29 8152 | 13 8153 | 9 8154 | 12 8155 | 26 8156 | 98 8157 | 213 8158 | 97 8159 | 25 8160 | 11 8161 | 9 8162 | 9 8163 | 23 8164 | 92 8165 | 224 8166 | 104 8167 | 24 8168 | 10 8169 | 7 8170 | 8 8171 | 14 8172 | 55 8173 | 214 8174 | 160 8175 | 34 8176 | 11 8177 | 7 8178 | 6 8179 | 5 8180 | 12 8181 | 61 8182 | 252 8183 | 147 8184 | 25 8185 | 8 8186 | 7 8187 | 6 8188 | 4 8189 | 4 8190 | 4 8191 | 14 8192 | 36 8193 | 23 8194 | 21 8195 | 25 8196 | 34 8197 | 48 8198 | 58 8199 | 63 8200 | 64 8201 | 59 8202 | 52 8203 | 49 8204 | 52 8205 | 57 8206 | 64 8207 | 64 8208 | 60 8209 | 54 8210 | 51 8211 | 54 8212 | 60 8213 | 67 8214 | 65 8215 | 60 8216 | 53 8217 | 51 8218 | 55 8219 | 62 8220 | 68 8221 | 66 8222 | 60 8223 | 53 8224 | 51 8225 | 56 8226 | 63 8227 | 69 8228 | 67 8229 | 58 8230 | 53 8231 | 51 8232 | 56 8233 | 65 8234 | 70 8235 | 65 8236 | 58 8237 | 52 8238 | 52 8239 | 58 8240 | 67 8241 | 71 8242 | 66 8243 | 56 8244 | 51 8245 | 51 8246 | 59 8247 | 68 8248 | 72 8249 | 65 8250 | 56 8251 | 50 8252 | 51 8253 | 60 8254 | 71 8255 | 73 8256 | 65 8257 | 56 8258 | 50 8259 | 52 8260 | 62 8261 | 72 8262 | 74 8263 | 64 8264 | 53 8265 | 48 8266 | 52 8267 | 63 8268 | 73 8269 | 73 8270 | 62 8271 | 52 8272 | 48 8273 | 53 8274 | 64 8275 | 76 8276 | 73 8277 | 62 8278 | 50 8279 | 48 8280 | 54 8281 | 66 8282 | 77 8283 | 73 8284 | 59 8285 | 48 8286 | 46 8287 | 54 8288 | 68 8289 | 78 8290 | 73 8291 | 58 8292 | 47 8293 | 46 8294 | 54 8295 | 70 8296 | 80 8297 | 72 8298 | 56 8299 | 46 8300 | 47 8301 | 56 8302 | 73 8303 | 82 8304 | 71 8305 | 55 8306 | 44 8307 | 46 8308 | 57 8309 | 75 8310 | 82 8311 | 70 8312 | 52 8313 | 44 8314 | 45 8315 | 58 8316 | 77 8317 | 83 8318 | 67 8319 | 51 8320 | 41 8321 | 46 8322 | 60 8323 | 80 8324 | 84 8325 | 67 8326 | 48 8327 | 40 8328 | 45 8329 | 61 8330 | 82 8331 | 85 8332 | 65 8333 | 47 8334 | 40 8335 | 45 8336 | 63 8337 | 85 8338 | 85 8339 | 62 8340 | 44 8341 | 39 8342 | 45 8343 | 65 8344 | 88 8345 | 85 8346 | 61 8347 | 42 8348 | 38 8349 | 45 8350 | 67 8351 | 90 8352 | 86 8353 | 60 8354 | 42 8355 | 37 8356 | 45 8357 | 68 8358 | 94 8359 | 87 8360 | 58 8361 | 40 8362 | 36 8363 | 46 8364 | 71 8365 | 96 8366 | 86 8367 | 57 8368 | 38 8369 | 36 8370 | 46 8371 | 73 8372 | 99 8373 | 87 8374 | 54 8375 | 37 8376 | 35 8377 | 46 8378 | 73 8379 | 100 8380 | 86 8381 | 54 8382 | 36 8383 | 34 8384 | 46 8385 | 75 8386 | 104 8387 | 87 8388 | 52 8389 | 34 8390 | 33 8391 | 44 8392 | 76 8393 | 106 8394 | 87 8395 | 51 8396 | 33 8397 | 31 8398 | 44 8399 | 75 8400 | 109 8401 | 88 8402 | 50 8403 | 32 8404 | 30 8405 | 43 8406 | 76 8407 | 110 8408 | 90 8409 | 50 8410 | 32 8411 | 29 8412 | 41 8413 | 75 8414 | 113 8415 | 92 8416 | 50 8417 | 30 8418 | 28 8419 | 39 8420 | 73 8421 | 115 8422 | 96 8423 | 50 8424 | 30 8425 | 27 8426 | 37 8427 | 71 8428 | 116 8429 | 101 8430 | 52 8431 | 30 8432 | 26 8433 | 35 8434 | 67 8435 | 116 8436 | 104 8437 | 55 8438 | 30 8439 | 24 8440 | 32 8441 | 63 8442 | 115 8443 | 110 8444 | 57 8445 | 30 8446 | 24 8447 | 30 8448 | 58 8449 | 113 8450 | 118 8451 | 62 8452 | 31 8453 | 23 8454 | 28 8455 | 53 8456 | 108 8457 | 124 8458 | 67 8459 | 32 8460 | 23 8461 | 26 8462 | 47 8463 | 101 8464 | 131 8465 | 76 8466 | 35 8467 | 22 8468 | 24 8469 | 41 8470 | 91 8471 | 136 8472 | 85 8473 | 38 8474 | 22 8475 | 23 8476 | 35 8477 | 81 8478 | 137 8479 | 98 8480 | 42 8481 | 24 8482 | 20 8483 | 31 8484 | 69 8485 | 134 8486 | 113 8487 | 50 8488 | 25 8489 | 20 8490 | 27 8491 | 57 8492 | 126 8493 | 129 8494 | 60 8495 | 27 8496 | 19 8497 | 23 8498 | 46 8499 | 109 8500 | 142 8501 | 73 8502 | 31 8503 | 19 8504 | 20 8505 | 37 8506 | 91 8507 | 149 8508 | 91 8509 | 37 8510 | 20 8511 | 18 8512 | 29 8513 | 71 8514 | 145 8515 | 115 8516 | 45 8517 | 22 8518 | 18 8519 | 23 8520 | 53 8521 | 128 8522 | 138 8523 | 60 8524 | 25 8525 | 17 8526 | 19 8527 | 38 8528 | 103 8529 | 156 8530 | 83 8531 | 31 8532 | 18 8533 | 17 8534 | 29 8535 | 74 8536 | 154 8537 | 113 8538 | 42 8539 | 19 8540 | 15 8541 | 21 8542 | 51 8543 | 131 8544 | 146 8545 | 60 8546 | 24 8547 | 15 8548 | 17 8549 | 33 8550 | 97 8551 | 164 8552 | 89 8553 | 31 8554 | 16 8555 | 15 8556 | 23 8557 | 62 8558 | 152 8559 | 131 8560 | 47 8561 | 20 8562 | 14 8563 | 18 8564 | 39 8565 | 113 8566 | 166 8567 | 76 8568 | 26 8569 | 15 8570 | 13 8571 | 24 8572 | 69 8573 | 165 8574 | 124 8575 | 41 8576 | 17 8577 | 12 8578 | 16 8579 | 38 8580 | 118 8581 | 172 8582 | 73 8583 | 25 8584 | 14 8585 | 13 8586 | 22 8587 | 65 8588 | 168 8589 | 131 8590 | 41 8591 | 17 8592 | 12 8593 | 15 8594 | 32 8595 | 107 8596 | 184 8597 | 85 8598 | 26 8599 | 13 8600 | 12 8601 | 17 8602 | 49 8603 | 153 8604 | 160 8605 | 52 8606 | 18 8607 | 11 8608 | 12 8609 | 23 8610 | 73 8611 | 188 8612 | 123 8613 | 35 8614 | 14 8615 | 11 8616 | 12 8617 | 27 8618 | 98 8619 | 201 8620 | 92 8621 | 25 8622 | 11 8623 | 9 8624 | 11 8625 | 30 8626 | 120 8627 | 204 8628 | 75 8629 | 22 8630 | 10 8631 | 8 8632 | 10 8633 | 29 8634 | 123 8635 | 213 8636 | 73 8637 | 18 8638 | 9 8639 | 8 8640 | 9 8641 | 20 8642 | 94 8643 | 236 8644 | 99 8645 | 20 8646 | 9 8647 | 6 8648 | 6 8649 | 8 8650 | 30 8651 | 163 8652 | 229 8653 | 52 8654 | 12 8655 | 7 8656 | 5 8657 | 4 8658 | 3 8659 | 3 8660 | 7 8661 | 42 8662 | 53 8663 | 25 8664 | 21 8665 | 24 8666 | 39 8667 | 70 8668 | 89 8669 | 72 8670 | 47 8671 | 37 8672 | 38 8673 | 52 8674 | 73 8675 | 83 8676 | 66 8677 | 47 8678 | 37 8679 | 40 8680 | 54 8681 | 77 8682 | 84 8683 | 66 8684 | 46 8685 | 38 8686 | 40 8687 | 57 8688 | 80 8689 | 86 8690 | 65 8691 | 44 8692 | 37 8693 | 41 8694 | 58 8695 | 82 8696 | 87 8697 | 63 8698 | 43 8699 | 36 8700 | 41 8701 | 59 8702 | 86 8703 | 88 8704 | 63 8705 | 42 8706 | 36 8707 | 41 8708 | 61 8709 | 89 8710 | 88 8711 | 60 8712 | 40 8713 | 33 8714 | 40 8715 | 63 8716 | 91 8717 | 89 8718 | 59 8719 | 38 8720 | 33 8721 | 41 8722 | 64 8723 | 94 8724 | 89 8725 | 58 8726 | 36 8727 | 32 8728 | 39 8729 | 65 8730 | 97 8731 | 90 8732 | 56 8733 | 36 8734 | 31 8735 | 40 8736 | 67 8737 | 100 8738 | 92 8739 | 56 8740 | 35 8741 | 30 8742 | 39 8743 | 66 8744 | 102 8745 | 92 8746 | 55 8747 | 34 8748 | 29 8749 | 39 8750 | 67 8751 | 104 8752 | 95 8753 | 54 8754 | 33 8755 | 29 8756 | 36 8757 | 66 8758 | 106 8759 | 97 8760 | 54 8761 | 32 8762 | 27 8763 | 36 8764 | 66 8765 | 108 8766 | 100 8767 | 56 8768 | 33 8769 | 27 8770 | 35 8771 | 64 8772 | 110 8773 | 105 8774 | 57 8775 | 32 8776 | 25 8777 | 33 8778 | 61 8779 | 110 8780 | 108 8781 | 60 8782 | 32 8783 | 25 8784 | 31 8785 | 57 8786 | 109 8787 | 113 8788 | 62 8789 | 32 8790 | 24 8791 | 29 8792 | 54 8793 | 105 8794 | 119 8795 | 67 8796 | 33 8797 | 24 8798 | 27 8799 | 49 8800 | 101 8801 | 125 8802 | 72 8803 | 35 8804 | 23 8805 | 25 8806 | 44 8807 | 95 8808 | 130 8809 | 80 8810 | 36 8811 | 23 8812 | 23 8813 | 39 8814 | 87 8815 | 133 8816 | 89 8817 | 40 8818 | 23 8819 | 22 8820 | 34 8821 | 77 8822 | 134 8823 | 99 8824 | 44 8825 | 23 8826 | 20 8827 | 29 8828 | 65 8829 | 132 8830 | 113 8831 | 50 8832 | 25 8833 | 20 8834 | 26 8835 | 55 8836 | 122 8837 | 128 8838 | 60 8839 | 27 8840 | 20 8841 | 22 8842 | 45 8843 | 107 8844 | 139 8845 | 73 8846 | 31 8847 | 19 8848 | 20 8849 | 36 8850 | 90 8851 | 148 8852 | 91 8853 | 36 8854 | 20 8855 | 19 8856 | 29 8857 | 72 8858 | 144 8859 | 112 8860 | 45 8861 | 22 8862 | 18 8863 | 24 8864 | 55 8865 | 130 8866 | 137 8867 | 60 8868 | 25 8869 | 18 8870 | 21 8871 | 41 8872 | 106 8873 | 152 8874 | 79 8875 | 31 8876 | 17 8877 | 17 8878 | 29 8879 | 79 8880 | 156 8881 | 107 8882 | 38 8883 | 19 8884 | 16 8885 | 23 8886 | 56 8887 | 138 8888 | 138 8889 | 56 8890 | 24 8891 | 15 8892 | 19 8893 | 39 8894 | 106 8895 | 162 8896 | 81 8897 | 29 8898 | 17 8899 | 16 8900 | 27 8901 | 71 8902 | 159 8903 | 119 8904 | 42 8905 | 19 8906 | 15 8907 | 19 8908 | 45 8909 | 127 8910 | 158 8911 | 65 8912 | 24 8913 | 14 8914 | 15 8915 | 28 8916 | 82 8917 | 170 8918 | 108 8919 | 35 8920 | 16 8921 | 13 8922 | 18 8923 | 47 8924 | 136 8925 | 158 8926 | 60 8927 | 21 8928 | 13 8929 | 14 8930 | 27 8931 | 83 8932 | 178 8933 | 108 8934 | 34 8935 | 15 8936 | 12 8937 | 17 8938 | 42 8939 | 132 8940 | 169 8941 | 63 8942 | 21 8943 | 13 8944 | 12 8945 | 22 8946 | 68 8947 | 177 8948 | 129 8949 | 39 8950 | 15 8951 | 11 8952 | 13 8953 | 30 8954 | 104 8955 | 191 8956 | 87 8957 | 25 8958 | 12 8959 | 10 8960 | 14 8961 | 41 8962 | 143 8963 | 178 8964 | 59 8965 | 18 8966 | 11 8967 | 10 8968 | 17 8969 | 53 8970 | 174 8971 | 158 8972 | 44 8973 | 14 8974 | 10 8975 | 9 8976 | 16 8977 | 59 8978 | 192 8979 | 148 8980 | 37 8981 | 13 8982 | 8 8983 | 9 8984 | 14 8985 | 52 8986 | 191 8987 | 164 8988 | 39 8989 | 12 8990 | 8 8991 | 7 8992 | 9 8993 | 28 8994 | 137 8995 | 232 8996 | 65 8997 | 15 8998 | 7 8999 | 6 9000 | 5 9001 | 6 9002 | 22 9003 | 134 9004 | 255 9005 | 67 9006 | 14 9007 | 8 9008 | 6 9009 | 4 9010 | 4 9011 | 4 9012 | 8 9013 | 29 9014 | 33 9015 | 23 9016 | 23 9017 | 28 9018 | 38 9019 | 54 9020 | 71 9021 | 76 9022 | 63 9023 | 47 9024 | 41 9025 | 44 9026 | 56 9027 | 72 9028 | 74 9029 | 62 9030 | 47 9031 | 41 9032 | 47 9033 | 61 9034 | 77 9035 | 75 9036 | 60 9037 | 46 9038 | 41 9039 | 48 9040 | 63 9041 | 78 9042 | 75 9043 | 58 9044 | 44 9045 | 40 9046 | 49 9047 | 65 9048 | 81 9049 | 76 9050 | 57 9051 | 43 9052 | 40 9053 | 49 9054 | 68 9055 | 83 9056 | 74 9057 | 54 9058 | 41 9059 | 40 9060 | 50 9061 | 70 9062 | 85 9063 | 73 9064 | 53 9065 | 39 9066 | 39 9067 | 51 9068 | 73 9069 | 87 9070 | 73 9071 | 51 9072 | 38 9073 | 39 9074 | 52 9075 | 75 9076 | 88 9077 | 73 9078 | 49 9079 | 37 9080 | 38 9081 | 53 9082 | 79 9083 | 91 9084 | 72 9085 | 47 9086 | 36 9087 | 38 9088 | 54 9089 | 82 9090 | 93 9091 | 70 9092 | 46 9093 | 35 9094 | 38 9095 | 56 9096 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | absl-py==2.1.0 2 | amazon-braket-default-simulator==1.26.0 3 | amazon-braket-schemas==1.22.0 4 | amazon-braket-sdk==1.83.0 5 | annotated-types==0.7.0 6 | antlr4-python3-runtime==4.9.2 7 | anyio==4.4.0 8 | appnope==0.1.4 9 | argon2-cffi==23.1.0 10 | argon2-cffi-bindings==21.2.0 11 | arrow==1.3.0 12 | asttokens==2.4.1 13 | astunparse==1.6.3 14 | async-lru==2.0.4 15 | attrs==23.2.0 16 | Babel==2.15.0 17 | backoff==2.2.1 18 | backports.entry-points-selectable==1.3.0 19 | beartype==0.18.5 20 | beautifulsoup4==4.12.3 21 | bleach==6.1.0 22 | bloqade==0.15.13 23 | bokeh==3.5.0 24 | boltons==24.0.0 25 | boto3==1.34.140 26 | botocore==1.34.140 27 | certifi==2024.7.4 28 | cffi==1.16.0 29 | charset-normalizer==3.3.2 30 | cloudpickle==2.2.1 31 | comm==0.2.2 32 | contourpy==1.2.1 33 | cycler==0.12.1 34 | debugpy==1.8.2 35 | decorator==5.1.1 36 | defusedxml==0.7.1 37 | exceptiongroup==1.2.1 38 | executing==2.0.1 39 | fastjsonschema==2.20.0 40 | flatbuffers==24.3.25 41 | fonttools==4.53.1 42 | fqdn==1.5.1 43 | gast==0.6.0 44 | google-pasta==0.2.0 45 | grpcio==1.64.1 46 | h11==0.16.0 47 | h5py==3.11.0 48 | httpcore==1.0.5 49 | httpx==0.27.0 50 | idna==3.7 51 | ipykernel==6.29.5 52 | ipython==8.26.0 53 | isoduration==20.11.0 54 | jedi==0.19.1 55 | Jinja2==3.1.6 56 | jmespath==1.0.1 57 | joblib==1.4.2 58 | json5==0.9.25 59 | jsonpointer==3.0.0 60 | jsonschema==4.22.0 61 | jsonschema-specifications==2023.12.1 62 | juliacall==0.9.20 63 | juliapkg==0.1.13 64 | jupyter-events==0.10.0 65 | jupyter-lsp==2.2.5 66 | jupyter_client==8.6.2 67 | jupyter_core==5.7.2 68 | jupyter_server==2.14.1 69 | jupyter_server_terminals==0.5.3 70 | jupyterlab==4.2.5 71 | jupyterlab_pygments==0.3.0 72 | jupyterlab_server==2.27.2 73 | keras==3.9.0 74 | kiwisolver==1.4.5 75 | libclang==18.1.1 76 | llvmlite==0.43.0 77 | Markdown==3.6 78 | markdown-it-py==3.0.0 79 | MarkupSafe==2.1.5 80 | matplotlib==3.9.1 81 | matplotlib-inline==0.1.7 82 | mdurl==0.1.2 83 | mistune==3.0.2 84 | ml-dtypes==0.3.2 85 | mpmath==1.3.0 86 | mypy-extensions==1.0.0 87 | namex==0.0.8 88 | nbclient==0.10.0 89 | nbconvert==7.16.4 90 | nbformat==5.10.4 91 | nest-asyncio==1.6.0 92 | networkx==3.3 93 | notebook_shim==0.2.4 94 | numba==0.60.0 95 | numpy==1.26.4 96 | openpulse==0.5.0 97 | openqasm3==1.0.0 98 | opt-einsum==3.3.0 99 | optree==0.12.1 100 | oqpy==0.3.6 101 | overrides==7.7.0 102 | packaging==24.1 103 | pandas==2.2.2 104 | pandocfilters==1.5.1 105 | parso==0.8.4 106 | pexpect==4.9.0 107 | pillow==10.4.0 108 | platformdirs==4.2.2 109 | plotext==5.2.8 110 | plum-dispatch==2.5.1.post1 111 | prometheus_client==0.20.0 112 | prompt_toolkit==3.0.47 113 | protobuf==4.25.3 114 | psutil==6.0.0 115 | ptyprocess==0.7.0 116 | pure-eval==0.2.2 117 | pycparser==2.22 118 | pydantic==2.8.2 119 | pydantic_core==2.20.1 120 | Pygments==2.18.0 121 | pyparsing==3.1.2 122 | python-dateutil==2.9.0.post0 123 | python-json-logger==2.0.7 124 | pytz==2024.1 125 | PyYAML==6.0.1 126 | pyzmq==26.0.3 127 | referencing==0.35.1 128 | requests==2.32.3 129 | requests-aws-sign==0.1.6 130 | requests-sigv4==0.1.6 131 | rfc3339-validator==0.1.4 132 | rfc3986-validator==0.1.1 133 | rich==13.7.1 134 | rpds-py==0.19.0 135 | s3transfer==0.10.2 136 | scikit-learn==1.5.1 137 | scipy==1.14.0 138 | semver==3.0.2 139 | Send2Trash==1.8.3 140 | simplejson==3.19.2 141 | six==1.16.0 142 | sniffio==1.3.1 143 | soupsieve==2.5 144 | stack-data==0.6.3 145 | sympy==1.12.1 146 | tabulate==0.9.0 147 | tensorboard==2.16.2 148 | tensorboard-data-server==0.7.2 149 | tensorflow==2.16.2 150 | tensorflow-io-gcs-filesystem==0.37.1 151 | termcolor==2.4.0 152 | terminado==0.18.1 153 | threadpoolctl==3.5.0 154 | tinycss2==1.3.0 155 | tomli==2.0.1 156 | tornado==6.4.2 157 | traitlets==5.14.3 158 | types-python-dateutil==2.9.0.20240316 159 | typing_extensions==4.12.2 160 | tzdata==2024.1 161 | uri-template==1.3.0 162 | urllib3==2.2.2 163 | wcwidth==0.2.13 164 | webcolors==24.6.0 165 | webencodings==0.5.1 166 | websocket-client==1.8.0 167 | Werkzeug==3.0.6 168 | wrapt==1.16.0 169 | xyzservices==2024.6.0 170 | --------------------------------------------------------------------------------