In May 2023, I participated in the 404 CTF Hackathon where I embarked on a project to crack a code using the power of artificial intelligence. Armed with a folder containing handwritten digit images, I used an AI model capable of detecting and classifying these digits. By training the model on a carefully curated dataset and leveraging techniques like Convolutional Neural Networks, I successfully deciphered the hidden code in the images. This project highlights the potential of AI in code decryption and pattern recognition tasks.
import tensorflow as tf from tensorflow import keras import matplotlib.pyplot as plt import numpy as np mnist = tf.keras.datasets.mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train = tf.keras.utils.normalize(x_train, axis=1) x_test = tf.keras.utils.normalize(x_test, axis=1) model = tf.keras.models.Sequential() model.add(tf.keras.layers.Flatten()) model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax)) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=10) val_loss, val_acc = model.evaluate(x_test, y_test) print("\nloss =", val_loss) print("precision =", val_acc) y_predicted = model.predict(x_test) np.argmax(y_predicted[0]) y_predicted_labels = [np.argmax(i) for i in y_predicted] y_predicted_labels[:1]
Epoch 1/10 1875/1875 [==============================] - 5s 2ms/step - loss: 0.2636 - accuracy: 0.9231 Epoch 2/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.1058 - accuracy: 0.9672 Epoch 3/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.0716 - accuracy: 0.9773 Epoch 4/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.0525 - accuracy: 0.9829 Epoch 5/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.0394 - accuracy: 0.9866 Epoch 6/10 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0315 - accuracy: 0.9892 Epoch 7/10 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0245 - accuracy: 0.9920 Epoch 8/10 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0198 - accuracy: 0.9934 Epoch 9/10 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0162 - accuracy: 0.9944 Epoch 10/10 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0158 - accuracy: 0.9946 313/313 [==============================] - 1s 2ms/step - loss: 0.1257 - accuracy: 0.9727 loss = 0.12572124600410461 precision = 0.9726999998092651 313/313 [==============================] - 1s 2ms/step
import os from PIL import Image # Preparation of the folder containing the images image_folder = 'C:\Users\theog\404-ctf\poeme\images' image_files = [f for f in os.listdir(image_folder) if os.path.isfile(os.path.join(image_folder, f))] # Initialize the list to store the images images = [] for image_file in image_files: # Open each image, convert it to grayscale, and resize it to 28x28 pixels image = Image.open(os.path.join(image_folder, image_file)).convert('L').resize((28, 28)) # Convert the image to a numpy array and normalize it (similar to what we did for the training data) image = tf.keras.utils.normalize(np.array(image), axis=1) # Add the image to our list images.append(image) # Convert the list of images into a numpy array images = np.array(images) # Predict the classes for each image predictions = model.predict(images) # Retrieve the index of the predicted class for each image predicted_labels = [np.argmax(p) for p in predictions] print(predicted_labels)
205/205 [==============================] - 0s 1ms/step [6, 6, 9, 1, 0, 1, 1, 6, 3, 1, 3, 0, 8, 1, 6, 6, 3, 0, 3, 0, 3, 8, 5, 5, 5, 2, 6, 1, 0, 6, 8, 9, 7, 6, 9, 9, 2, 1, 3, 8, 9, 1, 6, 7, 5, 3, 6, 2, 6, 3, 5, 3, 8, 2, 3, 1, 0, 6, 4, 7, 0, 0, 6, 2, 6, 9, 7, 1, 9, 9, 6, 2, 0, 1, 6, 5, 1, 0, 3, 6, 8, 3, 7, 8, 3, 9, 8, 6, 5, 8, 8, 5, 6, 1, 7, 5, 2, 2, 0, 0, 6, 6, 1, 0, 2, 0, 6, 6, 6, 0, 6, 1, 0, 1, 9, 1, 9, 0, 5, 2, 3, 9, 2, 2, 6, 5, 0, 0, 8, 7, 6, 2, 9, 1, 8, 6, 6, 6, 3, 9, 6, 6, 2, 6, 5, 6, 5, 1, 7, 8, 0, 5, 2, 6, 0, 9, 9, 0, 7, 5, 6, 0, 0, 0, 5, 1, 6, 0, 1, 6, 6, 1, 2, 5, 1, 3, 8, 6, 3, 9, 6, 6, 0, 3, 8, 5, 3, 8, 2, 6, 8, 1, 7, 8, 8, 0, 5, 6, 6, 1, 6, 9, 0, 8, 0, 2, 6, 6, 3, 3, 3, 8, 1, 9, 1, 8, 1, 3, 5, 2, 0, 3, 3, 0, 2, 6, 8, 1, 5, 2, 8, 8, 1, 1, 5, 1, 0, 7, 0, 9, 9, 0, 0, 0, 3, 0, 1, 3, 4, 6, 5, 1, 0, 2, 7, 2, 5, 9, 6, 2, 0, 2, 0, 3, 8, 0, 6, 2, 6, 0, 0, 3, 1, 5, 6, 5, 3, 0, 8, 7, 6, 1, 8, 5, 9, 5, 3, 0, 7, 1, 9, 0, 1, 8, 8, 1, 6, 0, 1, 2, 6, 6, 0, 8, 3, 0, 3, 0, 6, 6, 1, 5, 0, 0, 0, 5, 1, 0, 0, 3, 6, 3, 6, 3, 3, 1, 6, 6, 4, 5, 3, 6, 2, 3, 1, 1, 1, 7, 7, 6, 0, 8, 2, 6, 6, 8, 0, 7, 0, 0, 6, 5, 7, 0, 0, 6, 0, 3, 6, 8, 7, 3, 8, 6, 0, 3, 5, 6, 3, 6, 3, 7, 6, 8, 1, 9, 6, 9, 1, 0, 4, 1, 0, 6, 3, 2, 7, 1, 0, 0, 6, 8, 2, 7, 0, 3, 3, 0, 2, 5, 6, 7, 8, 6, 1, 5, 0, 9, 5, 5, 0, 0, 1, 9, 0, 7, 6, 3, 6, 0, 6, 9, 3, 9, 3, 6, 9, 8, 7, 2, 6, 2, 6, 5, 0, 6, 3, 0, 0, 9, 2, 0, 6, 2, 0, 1, 0, 6, 0, 1, 7, 3, 0, 5, 6, 3, 0, 6, 8, 5, 2, 6, 0, 8, 0, 8, 1, 5, 0, 0, 7, 5, 8, 3, 6, 5, 3, 8, 5, 3, 6, 7, 0, 2, 6, 5, 2, 5, 8, 8, 5, 6, 8, 1, 5, 2, 0, 5, 1, 0, 8, 3, 8, 9, 9, 4, 6, 5, 5, 2, 2, 1, 2, 6, 6, 2, 1, 9, 8, 2, 1, 1, 0, 2, 7, 0, 3, 0, 0, 1, 8, 3, 1, 1, 1, 6, 2, 6, 5, 3, 9, 1, 8, 6, 0, 6, 9, 3, 2, 0, 8, 8, 6, 6, 1, 9, 0, 6, 1, 6, 3, 6, 6, 8, 3, 1, 1, 0, 5, 5, 6, 5, 8, 9, 1, 1, 6, 6, 2, 0, 6, 6, 3, 3, 6, 5, 5, 9, 6, 6, 5, 0, 1, 6, 2, 0, 6, 3, 0, 0, 5, 0, 1, 8, 8, 6, 2, 9, 3, 3, 5, 6, 3, 6, 7, 6, 0, 7, 3, 6, 3, 6, 2, 3, 8, 2, 9, 1, 0, 9, 0, 0, 3, 8, 8, 2, 5, 0, 6, 7, 3, 6, 0, 6, 7, 6, 0, 7, 0, 5, 6, 6, 3, 8, 8, 0, 0, 2, 3, 6, 2, 0, 1, 2, 0, 9, 1, 5, 2, 6, 8, 5, 3, 9, 6, 6, 2, 5, 6, 5, 1, 1, 5, 0, 6, 9, 3, 8, 9, 7, 5, 1, 2, 7, 6, 0, 1, 2, 0, 8, 0, 4, 6, 0, 6, 6, 5, 2, 4, 6, 5, 6, 3, 1, 2, 1, 7, 6, 0, 9, 1, 4, 0, 0, 0, 1, 6, 6, 0, 5, 1, 6, 5, 7, 6, 6, 7, 1, 6, 9, 6, 6, 7, 3, 0, 6, 8, 5, 8, 8, 5, 1, 1, 2, 4, 0, 9, 8, 0, 8, 3, 9, 0, 6, 2, 0, 6, 6, 3, 1, 1, 0, 8, 3, 0, 0, 6, 1, 2, 8, 5, 0, 2, 6, 6, 6, 7, 7, 0, 8, 3, 8, 7, 2, 6, 8, 7, 6, 6, 1, 3, 3, 2, 0, 9, 7, 0, 7, 2, 8, 7, 1, 1, 5, 3, 3, 6, 6, 5, 3, 0, 2, 9, 0, 8, 2, 2, 0, 2, 0, 2, 3, 8, 2, 6, 1, 8, 9, 2, 8, 1, 3, 0, 8, 1, 6, 9, 8, 2, 1, 9, 4, 8, 2, 6, 2, 3, 5, 1, 6, 0, 8, 8, 3, 6, 5, 1, 6, 6, 9, 3, 1, 0, 6, 7, 3, 0, 0, 0, 1, 7, 5, 8, 0, 7, 6, 3, 3, 7, 6, 7, 2, 8, 6, 6, 6, 6, 6, 0, 2, 2, 2, 7, 0, 2, 1, 2, 3, 8, 6, 1, 6, 1, 0, 2, 6, 8, 2, 8, 9, 3, 8, 2, 0, 0, 8, 9, 7, 1, 9, 1, 0, 0, 2, 8, 2, 8, 6, 1, 6, 2, 0, 6, 0, 6, 7, 3, 3, 9, 1, 6, 7, 2, 6, 1, 7, 6, 3, 9, 7, 1, 1, 9, 9, 1, 3, 2, 3, 1, 0, 7, 8, 5, 5, 1, 0, 6, 9, 0, 8, 2, 8, 9, 1, 2, 0, 6, 6, 2, 6, 3, 3, 5, 0, 2, 7, 0, 6, 2, 1, 6, 1, 7, 8, 6, 6, 6, 2, 3, 5, 8, 1, 6, 0, 8, 0, 6, 3, 7, 6, 6, 7, 0, 7, 0, 8, 5, 1, 9, 0, 1, 8, 4, 0, 3, 3, 5, 0, 6, 6, 0, 8, 0, 1, 1, 1, 3, 6, 1, 6, 3, 2, 7, 7, 5, 2, 6, 1, 7, 5, 0, 2, 9, 6, 2, 6, 0, 1, 6, 6, 9, 6, 8, 6, 5, 6, 6, 2, 8, 6, 0, 2, 0, 1, 1, 1, 7, 1, 7, 6, 1, 3, 6, 8, 9, 8, 5, 5, 1, 2, 5, 2, 1, 0, 6, 3, 1, 1, 0, 7, 6, 3, 8, 9, 2, 8, 3, 3, 2, 6, 9, 6, 0, 6, 3, 5, 5, 8, 6, 7, 4, 3, 6, 0, 9, 1, 3, 2, 2, 0, 1, 8, 6, 6, 2, 5, 0, 0, 5, 0, 6, 3, 8, 1, 0, 9, 3, 1, 6, 0, 0, 1, 3, 0, 1, 0, 1, 2, 0, 7, 6, 0, 0, 0, 2, 0, 8, 1, 3, 8, 0, 0, 0, 6, 2, 0, 9, 5, 2, 6, 8, 5, 4, 5, 8, 0, 5, 2, 2, 0, 0, 8, 0, 6, 1, 1, 9, 8, 3, 8, 8, 9, 5, 6, 3, 3, 2, 0, 5, 0, 6, 1, 1, 6, 6, 8, 9, 0, 6, 1, 6, 3, 9, 9, 8, 1, 1, 0, 2, 0, 3, 1, 9, 8, 8, 2, 8, 1, 0, 3, 7, 1, 0, 1, 0, 5, 6, 9, 2, 0, 1, 1, 0, 2, 6, 6, 2, 1, 6, 3, 6, 9, 0, 6, 6, 8, 5, 0, 3, 5, 0, 6, 9, 6, 8, 3, 0, 8, 0, 1, 0, 6, 0, 9, 0, 0, 2, 5, 3, 4, 2, 5, 6, 1, 6, 6, 3, 5, 1, 0, 1, 1, 8, 6, 1, 1, 0, 6, 7, 5, 3, 3, 8, 2, 6, 6, 8, 6, 2, 3, 0, 8, 2, 6, 7, 9, 5, 8, 6, 1, 1, 9, 0, 6, 0, 6, 8, 8, 1, 8, 6, 8, 6, 6, 4, 9, 3, 0, 3, 0, 0, 0, 1, 6, 5, 1, 2, 1, 3, 6, 9, 8, 8, 3, 9, 5, 8, 0, 5, 5, 0, 0, 6, 1, 9, 1, 3, 6, 8, 8, 0, 7, 9, 6, 3, 6, 0, 6, 6, 0, 9, 6, 0, 3, 1, 7, 0, 0, 1, 5, 6, 3, 1, 9, 1, 9, 2, 5, 9, 8, 0, 6, 6, 5, 1, 0, 1, 9, 1, 6, 4, 5, 6, 6, 1, 8, 9, 3, 2, 9, 3, 3, 0, 8, 0, 0, 0, 8, 6, 6, 8, 6, 0, 9, 1, 7, 6, 0, 6, 3, 1, 6, 5, 7, 6, 1, 6, 9, 6, 5, 2, 3, 1, 2, 8, 0, 0, 1, 0, 6, 3, 9, 6, 6, 5, 0, 7, 0, 3, 5, 9, 5, 1, 8, 3, 6, 8, 5, 3, 2, 3, 8, 6, 2, 9, 9, 5, 9, 2, 1, 5, 1, 8, 0, 1, 9, 1, 7, 8, 0, 1, 1, 0, 6, 1, 9, 1, 9, 9, 8, 6, 6, 6, 1, 6, 5, 0, 6, 6, 6, 2, 3, 7, 8, 5, 6, 6, 2, 3, 9, 1, 1, 0, 1, 9, 0, 6, 0, 7, 2, 9, 5, 1, 8, 8, 6, 8, 6, 1, 6, 3, 1, 8, 1, 0, 1, 6, 5, 3, 0, 6, 7, 2, 6, 5, 5, 1, 5, 6, 5, 6, 0, 0, 3, 1, 1, 7, 1, 0, 5, 8, 6, 0, 0, 1, 6, 5, 0, 3, 6, 3, 2, 1, 8, 1, 0, 2, 7, 6, 7, 6, 7, 7, 2, 2, 2, 3, 8, 1, 0, 1, 2, 9, 0, 6, 6, 7, 1, 8, 6, 1, 0, 1, 6, 1, 0, 9, 6, 3, 6, 5, 6, 2, 6, 0, 8, 9, 8, 3, 2, 3, 5, 1, 0, 0, 5, 5, 3, 1, 7, 9, 1, 2, 5, 0, 0, 9, 5, 6, 6, 3, 1, 8, 0, 2, 5, 2, 7, 8, 6, 0, 3, 0, 1, 1, 6, 9, 1, 6, 1, 0, 5, 8, 5, 6, 0, 1, 0, 7, 0, 0, 0, 6, 0, 0, 6, 6, 6, 8, 9, 1, 4, 0, 2, 1, 2, 0, 6, 7, 3, 4, 3, 9, 5, 1, 6, 6, 5, 7, 3, 0, 5, 9, 3, 8, 1, 1, 3, 2, 8, 0, 8, 2, 6, 0, 9, 6, 1, 7, 5, 6, 8, 0, 0, 5, 2, 2, 1, 0, 0, 3, 8, 6, 6, 6, 8, 0, 3, 8, 9, 6, 0, 3, 7, 9, 6, 5, 5, 0, 0, 6, 2, 5, 0, 5, 3, 1, 7, 9, 9, 3, 6, 0, 1, 3, 3, 0, 8, 1, 7, 1, 6, 0, 2, 6, 2, 0, 8, 6, 6, 0, 2, 2, 8, 6, 0, 8, 3, 3, 9, 0, 8, 6, 8, 0, 1, 1, 7, 0, 0, 3, 6, 8, 6, 9, 2, 1, 6, 8, 0, 2, 8, 5, 9, 6, 0, 6, 8, 6, 1, 2, 1, 5, 2, 5, 1, 8, 2, 5, 5, 1, 3, 3, 2, 6, 7, 3, 8, 2, 6, 5, 8, 9, 3, 1, 6, 0, 6, 8, 5, 6, 7, 0, 0, 2, 6, 2, 7, 7, 6, 7, 3, 7, 5, 3, 6, 5, 9, 7, 8, 9, 0, 1, 8, 0, 5, 3, 5, 9, 8, 7, 6, 0, 8, 7, 5, 2, 0, 6, 8, 0, 0, 7, 3, 2, 3, 2, 6, 6, 9, 6, 9, 0, 2, 0, 1, 2, 7, 0, 2, 3, 1, 0, 8, 5, 5, 6, 3, 6, 1, 5, 2, 2, 6, 0, 5, 6, 3, 3, 5, 2, 6, 2, 4, 3, 8, 7, 1, 7, 8, 1, 8, 5, 2, 8, 0, 5, 8, 8, 1, 3, 6, 1, 8, 3, 7, 1, 0, 8, 7, 5, 6, 2, 2, 2, 5, 6, 6, 9, 6, 2, 8, 6, 1, 1, 3, 0, 2, 0, 9, 0, 9, 1, 7, 5, 6, 3, 0, 1, 8, 6, 1, 6, 2, 9, 8, 5, 3, 6, 3, 3, 6, 6, 1, 9, 9, 9, 8, 7, 0, 1, 5, 9, 5, 6, 2, 2, 1, 7, 0, 0, 0, 0, 8, 6, 5, 0, 1, 0, 6, 0, 6, 6, 2, 5, 9, 1, 6, 6, 9, 6, 0, 8, 3, 9, 0, 5, 9, 6, 0, 2, 0, 1, 3, 2, 6, 4, 5, 6, 6, 7, 3, 3, 6, 2, 3, 0, 3, 6, 5, 1, 3, 5, 6, 8, 7, 0, 6, 8, 5, 1, 5, 8, 0, 6, 0, 6, 6, 9, 1, 8, 9, 3, 8, 1, 6, 0, 9, 0, 2, 9, 6, 0, 8, 0, 6, 9, 1, 1, 8, 6, 8, 9, 0, 0, 1, 0, 8, 1, 3, 3, 3, 2, 6, 7, 3, 6, 7, 1, 1, 4, 0, 2, 5, 0, 0, 9, 4, 1, 6, 2, 1, 1, 9, 5, 9, 6, 0, 2, 1, 8, 3, 2, 0, 7, 8, 7, 6, 1, 1, 5, 3, 0, 5, 8, 3, 6, 9, 1, 3, 6, 0, 8, 9, 3, 8, 1, 7, 6, 4, 5, 3, 3, 0, 0, 9, 8, 0, 3, 8, 1, 3, 2, 6, 8, 8, 1, 1, 6, 8, 6, 6, 6, 6, 8, 3, 6, 6, 3, 3, 6, 1, 0, 0, 1, 6, 0, 0, 2, 6, 2, 0, 1, 6, 3, 6, 5, 8, 1, 8, 0, 5, 3, 0, 7, 1, 3, 2, 6, 5, 8, 1, 9, 6, 0, 7, 3, 0, 5, 3, 0, 7, 5, 1, 7, 9, 0, 5, 6, 8, 1, 2, 2, 1, 8, 2, 3, 5, 6, 0, 1, 6, 5, 6, 8, 8, 7, 6, 6, 0, 8, 8, 8, 6, 0, 3, 9, 1, 0, 3, 2, 2, 0, 1, 8, 0, 9, 8, 0, 6, 2, 6, 3, 1, 6, 6, 6, 8, 0, 9, 1, 9, 1, 6, 0, 9, 1, 4, 6, 6, 3, 5, 1, 2, 6, 7, 1, 8, 6, 0, 5, 2, 6, 1, 5, 2, 0, 0, 9, 0, 3, 1, 8, 7, 2, 6, 7, 1, 5, 9, 1, 2, 6, 8, 9, 9, 5, 8, 1, 1, 7, 0, 0, 8, 8, 3, 1, 0, 1, 0, 6, 2, 0, 5, 5, 6, 6, 8, 6, 0, 4, 3, 1, 6, 2, 6, 7, 6, 0, 6, 6, 1, 0, 6, 5, 9, 3, 0, 0, 3, 3, 8, 5, 6, 2, 2, 8, 2, 0, 7, 5, 6, 0, 5, 6, 1, 1, 3, 5, 5, 9, 2, 7, 0, 1, 6, 9, 5, 5, 9, 6, 2, 5, 6, 6, 5, 7, 8, 2, 5, 2, 6, 9, 2, 5, 6, 9, 8, 8, 5, 7, 3, 0, 0, 1, 2, 0, 0, 2, 0, 2, 1, 1, 6, 6, 0, 3, 6, 0, 6, 1, 9, 8, 7, 8, 5, 8, 9, 0, 6, 7, 1, 2, 6, 0, 2, 8, 0, 1, 7, 9, 2, 6, 0, 0, 1, 0, 7, 3, 0, 9, 7, 5, 9, 6, 1, 3, 0, 6, 3, 6, 6, 9, 6, 3, 9, 8, 6, 7, 1, 1, 6, 8, 0, 1, 7, 0, 6, 3, 6, 6, 3, 2, 5, 1, 5, 2, 1, 2, 8, 6, 9, 0, 1, 1, 6, 3, 0, 0, 0, 3, 1, 3, 0, 6, 1, 6, 1, 9, 6, 8, 2, 7, 3, 4, 2, 8, 6, 5, 2, 0, 8, 6, 8, 3, 0, 0, 5, 3, 0, 2, 9, 8, 3, 6, 0, 5, 5, 9, 0, 0, 1, 8, 6, 1, 7, 1, 0, 6, 6, 7, 0, 8, 9, 0, 9, 0, 8, 5, 8, 5, 5, 0, 9, 0, 1, 2, 1, 4, 6, 0, 3, 1, 1, 8, 7, 2, 8, 7, 0, 8, 5, 1, 3, 0, 9, 9, 8, 6, 7, 1, 6, 2, 0, 8, 6, 8, 8, 3, 9, 0, 6, 0, 6, 3, 7, 0, 5, 3, 8, 0, 0, 6, 6, 3, 2, 7, 5, 2, 1, 1, 6, 2, 8, 0, 5, 7, 1, 6, 7, 9, 9, 6, 5, 0, 5, 0, 1, 5, 6, 7, 0, 1, 9, 1, 3, 2, 2, 1, 8, 6, 1, 5, 2, 2, 0, 0, 6, 7, 6, 8, 3, 6, 6, 0, 6, 6, 8, 6, 0, 5, 2, 6, 1, 6, 9, 6, 6, 1, 9, 6, 1, 2, 6, 2, 9, 2, 1, 1, 0, 8, 8, 1, 0, 1, 6, 8, 5, 0, 2, 6, 6, 6, 2, 6, 3, 7, 6, 8, 8, 6, 7, 6, 6, 7, 3, 6, 1, 5, 3, 8, 2, 0, 5, 5, 7, 8, 6, 1, 8, 8, 6, 6, 8, 7, 5, 1, 3, 6, 2, 0, 2, 0, 1, 6, 6, 7, 7, 0, 2, 9, 2, 3, 8, 5, 1, 3, 0, 1, 3, 6, 0, 0, 0, 2, 2, 6, 3, 7, 0, 6, 6, 6, 1, 8, 1, 8, 1, 0, 8, 8, 0, 8, 2, 6, 0, 6, 6, 0, 0, 6, 6, 6, 3, 1, 6, 5, 9, 1, 0, 0, 0, 6, 3, 1, 8, 1, 3, 7, 7, 6, 3, 7, 1, 9, 6, 3, 1, 3, 0, 3, 3, 9, 0, 6, 6, 7, 0, 2, 2, 1, 8, 6, 0, 3, 0, 0, 0, 3, 9, 0, 2, 0, 6, 0, 8, 6, 3, 1, 6, 5, 5, 5, 5, 6, 3, 6, 5, 9, 6, 3, 8, 8, 8, 1, 1, 1, 1, 0, 0, 3, 0, 8, 6, 1, 8, 6, 6, 3, 0, 6, 6, 3, 3, 8, 0, 5, 6, 7, 8, 2, 7, 2, 6, 0, 6, 6, 1, 6, 3, 6, 1, 6, 5, 6, 5, 8, 2, 3, 3, 0, 8, 1, 8, 9, 0, 7, 6, 5, 3, 8, 0, 5, 0, 0, 1, 6, 1, 0, 7, 0, 6, 1, 8, 3, 9, 8, 1, 6, 8, 6, 8, 0, 2, 3, 8, 1, 0, 0, 5, 2, 1, 2, 4, 1, 7, 8, 0, 7, 0, 8, 0, 6, 3, 8, 6, 8, 6, 0, 9, 6, 1, 1, 0, 6, 8, 3, 2, 9, 4, 8, 1, 6, 1, 1, 3, 1, 6, 3, 1, 8, 8, 3, 2, 0, 5, 2, 5, 5, 1, 1, 2, 8, 3, 6, 0, 1, 3, 0, 0, 7, 3, 8, 0, 6, 0, 8, 6, 8, 8, 0, 6, 6, 6, 8, 0, 5, 1, 6, 6, 1, 6, 2, 8, 7, 0, 8, 6, 9, 0, 6, 6, 3, 1, 8, 3, 2, 9, 5, 2, 2, 1, 5, 1, 3, 7, 0, 1, 0, 6, 3, 3, 0, 7, 1, 0, 2, 6, 6, 1, 9, 5, 0, 1, 8, 8, 6, 6, 1, 0, 0, 0, 2, 8, 6, 6, 5, 1, 0, 3, 8, 8, 1, 0, 9, 7, 5, 0, 1, 0, 2, 6, 5, 8, 1, 6, 2, 8, 5, 6, 9, 7, 0, 9, 5, 6, 1, 5, 3, 0, 6, 6, 6, 8, 6, 6, 6, 0, 8, 0, 0, 1, 9, 2, 6, 1, 8, 2, 0, 1, 0, 3, 0, 6, 0, 3, 6, 6, 0, 1, 9, 0, 6, 6, 0, 5, 8, 0, 7, 9, 6, 1, 0, 3, 6, 2, 7, 1, 7, 1, 2, 6, 9, 1, 8, 0, 9, 0, 8, 1, 5, 9, 1, 6, 6, 6, 0, 7, 6, 2, 9, 6, 6, 5, 6, 0, 8, 6, 3, 6, 8, 2, 5, 1, 8, 6, 6, 8, 1, 2, 3, 3, 5, 6, 5, 7, 8, 6, 2, 0, 5, 6, 0, 2, 0, 6, 3, 2, 6, 9, 1, 0, 6, 5, 6, 0, 0, 1, 1, 6, 0, 2, 8, 6, 6, 6, 6, 8, 1, 9, 6, 3, 5, 1, 1, 0, 0, 6, 5, 7, 6, 6, 1, 9, 2, 5, 1, 9, 0, 0, 3, 0, 6, 6, 1, 5, 2, 8, 5, 6, 0, 5, 2, 0, 5, 2, 2, 0, 8, 0, 8, 9, 1, 5, 0, 3, 7, 6, 9, 0, 3, 0, 1, 8, 0, 9, 0, 1, 8, 6, 3, 6, 0, 9, 9, 2, 6, 9, 9, 7, 8, 1, 3, 8, 8, 9, 9, 3, 1, 6, 5, 2, 2, 5, 8, 6, 1, 0, 8, 0, 5, 6, 1, 8, 9, 7, 3, 6, 6, 1, 5, 1, 2, 1, 0, 0, 1, 8, 3, 9, 8, 1, 8, 1, 9, 7, 8, 0, 6, 3, 6, 1, 3, 6, 6, 6, 1, 0, 3, 6, 6, 8, 0, 6, 3, 8, 3, 2, 2, 1, 7, 1, 6, 3, 8, 7, 6, 0, 5, 1, 1, 0, 8, 0, 0, 9, 8, 7, 3, 1, 0, 2, 7, 9, 3, 6, 3, 3, 1, 0, 6, 0, 0, 0, 6, 5, 3, 7, 1, 1, 7, 5, 6, 6, 1, 1, 6, 8, 1, 6, 1, 1, 3, 7, 6, 1, 6, 4, 1, 7, 0, 8, 7, 0, 2, 8, 0, 8, 8, 6, 6, 7, 0, 9, 0, 6, 1, 3, 1, 6, 9, 9, 6, 6, 5, 6, 5, 2, 2, 3, 0, 0, 0, 8, 6, 6, 0, 1, 7, 8, 9, 7, 0, 6, 3, 6, 5, 3, 0, 1, 0, 2, 7, 8, 2, 1, 5, 1, 6, 6, 3, 3, 6, 2, 2, 0, 6, 1, 3, 5, 8, 5, 1, 1, 6, 5, 6, 0, 9, 8, 6, 1, 3, 5, 5, 0, 3, 8, 5, 8, 1, 3, 9, 0, 0, 5, 5, 3, 8, 5, 0, 5, 8, 9, 2, 6, 2, 6, 0, 8, 0, 6, 5, 6, 1, 0, 6, 7, 9, 8, 2, 0, 8, 8, 0, 9, 6, 0, 9, 0, 8, 5, 6, 3, 6, 1, 6, 0, 3, 1, 9, 1, 6, 6, 9, 7, 2, 4, 0, 1, 5, 0, 8, 0, 0, 2, 5, 5, 0, 5, 0, 3, 3, 3, 1, 8, 6, 3, 6, 2, 7, 9, 0, 1, 8, 3, 2, 9, 8, 8, 1, 6, 6, 2, 2, 4, 6, 0, 1, 3, 5, 9, 0, 7, 3, 6, 6, 0, 9, 8, 6, 2, 8, 6, 0, 3, 9, 1, 6, 1, 2, 6, 8, 2, 1, 7, 6, 6, 0, 7, 5, 2, 6, 6, 1, 6, 8, 8, 7, 2, 8, 6, 5, 3, 7, 6, 6, 0, 2, 6, 3, 0, 1, 7, 0, 7, 1, 3, 3, 2, 1, 5, 3, 5, 0, 5, 6, 3, 0, 5, 9, 3, 0, 6, 6, 5, 8, 6, 0, 5, 6, 0, 6, 2, 8, 0, 2, 9, 7, 2, 6, 9, 5, 9, 8, 8, 7, 1, 0, 8, 6, 0, 1, 2, 9, 8, 9, 0, 5, 6, 2, 8, 6, 3, 6, 3, 5, 2, 1, 1, 2, 8, 7, 5, 6, 6, 6, 5, 8, 3, 6, 0, 2, 6, 3, 8, 5, 3, 5, 6, 1, 6, 0, 6, 2, 7, 1, 6, 3, 0, 8, 6, 0, 0, 3, 3, 0, 1, 0, 6, 0, 1, 2, 6, 6, 2, 6, 3, 1, 5, 6, 8, 6, 6, 1, 2, 1, 1, 1, 6, 5, 6, 1, 0, 6, 6, 9, 1, 8, 5, 8, 3, 6, 1, 0, 5, 6, 3, 7, 3, 1, 2, 3, 1, 8, 0, 3, 0, 2, 1, 6, 5, 7, 1, 6, 8, 2, 1, 1, 6, 5, 9, 0, 8, 1, 8, 1, 6, 6, 9, 7, 0, 0, 6, 8, 7, 0, 9, 0, 3, 7, 8, 1, 6, 5, 6, 9, 5, 7, 1, 3, 0, 7, 6, 6, 0, 3, 6, 2, 6, 1, 0, 6, 0, 3, 3, 2, 0, 5, 3, 6, 3, 2, 8, 3, 3, 2, 0, 5, 7, 9, 6, 7, 0, 1, 2, 9, 1, 3, 4, 4, 1, 3, 1, 7, 6, 9, 0, 8, 8, 0, 5, 2, 0, 6, 6, 8, 8, 8, 0, 9, 9, 8, 6, 0, 8, 6, 0, 3, 1, 1, 6, 5, 8, 9, 9, 2, 1, 9, 6, 8, 8, 2, 9, 6, 1, 1, 7, 9, 8, 6, 0, 0, 2, 3, 7, 3, 0, 8, 0, 9, 0, 8, 5, 1, 0, 0, 2, 6, 7, 6, 3, 3, 1, 0, 3, 1, 7, 0, 6, 1, 1, 9, 7, 2, 7, 8, 8, 2, 1, 1, 8, 1, 2, 0, 7, 0, 7, 6, 5, 7, 8, 1, 0, 1, 0, 9, 2, 1, 9, 1, 6, 0, 8, 9, 8, 9, 7, 0, 9, 6, 4, 7, 7, 2, 2, 6, 1, 6, 3, 9, 7, 2, 6, 6, 8, 6, 0, 3, 8, 0, 2, 0, 1, 0, 3, 8, 2, 6, 6, 6, 6, 3, 3, 2, 1, 2, 0, 0, 3, 0, 1, 7, 3, 2, 0, 0, 6, 6, 8, 0, 9, 0, 0, 6, 0, 6, 6, 1, 1, 8, 3, 3, 9, 1, 2, 0, 5, 5, 6, 9, 5, 8, 1, 3, 6, 7, 9, 1, 9, 1, 2, 1, 0, 8, 8, 1, 5, 9, 2, 6, 3, 8, 8, 6, 7, 5, 0, 6, 8, 0, 2, 0, 5, 3, 0, 6, 3, 5, 6, 8, 2, 0, 3, 0, 0, 5, 6, 0, 1, 6, 1, 3, 8, 1, 6, 0, 0, 2, 6, 0, 3, 8, 0, 1, 7, 3, 8, 3, 1, 1, 6, 9, 3, 8, 3, 0, 5, 9, 8, 6, 3, 9, 0, 9, 8, 1, 3, 0, 8, 3, 5, 2, 0, 8, 6, 5, 4, 6, 8, 6, 0, 0, 0, 3, 5, 8, 6, 2, 6, 9, 8, 6, 0, 5, 2, 8, 1, 6, 0, 2, 0, 9, 8, 0, 1, 6, 9, 8, 6, 8, 9, 1, 6, 3, 7, 7, 5, 5, 1, 7, 7, 6, 5, 1, 0, 0, 3, 9, 5, 5, 0, 2, 0, 5, 3, 6, 6, 2, 0, 6, 2, 2, 0, 2, 6, 1, 1, 5, 3, 2, 6, 0, 7, 8, 9, 3, 3, 8, 6, 1, 9, 3, 2, 9, 7, 1, 0, 0, 8, 6, 2, 6, 6, 1, 0, 2, 6, 6, 0, 2, 1, 3, 1, 1, 6, 5, 6, 0, 0, 7, 3, 6, 0, 6, 9, 8, 3, 0, 1, 8, 8, 0, 8, 5, 1, 6, 0, 6, 1, 5, 6, 2, 3, 8, 1, 0, 2, 2, 1, 1, 0, 6, 7, 8, 5, 7, 8, 3, 0, 0, 1, 8, 1, 0, 6, 0, 0, 1, 0, 2, 6, 9, 1, 1, 0, 9, 2, 5, 5, 6, 1, 5, 6, 0, 9, 5, 6, 5, 0, 6, 2, 4, 2, 7, 8, 6, 2, 0, 0, 2, 9, 6, 9, 2, 8, 8, 6, 2, 6, 3, 8, 2, 5, 6, 9, 3, 6, 6, 3, 6, 0, 5, 2, 4, 8, 8, 8, 1, 5, 2, 0, 7, 6, 3, 0, 8, 1, 7, 5, 0, 0, 6, 1, 8, 0, 6, 0, 8, 0, 0, 9, 2, 8, 3, 5, 2, 0, 2, 6, 3, 8, 5, 6, 6, 3, 0, 6, 2, 6, 2, 0, 8, 7, 9, 0, 2, 1, 6, 2, 0, 8, 7, 5, 6, 8, 5, 6, 0, 0, 0, 5, 1, 6, 8, 8, 0, 9, 0, 1, 5, 2, 3, 8, 8, 9, 0, 6, 1, 1, 2, 9, 3, 6, 1, 8, 0, 5, 0, 0, 7, 1, 5, 6, 9, 6, 1, 6, 2, 6, 0, 3, 9, 2, 1, 1, 5, 3, 2, 0, 2, 2, 9, 3, 1, 6, 6, 2, 8, 6, 1, 6, 3, 5, 1, 3, 9, 6, 0, 1, 6, 0, 1, 5, 6, 0, 6, 8, 8, 6, 2, 9, 3, 5, 8, 6, 1, 1, 0, 6, 1, 1, 0, 5, 5, 9, 2, 0, 8, 6, 6, 1, 0, 0, 1, 0, 0, 1, 6, 6, 1, 6, 0, 8, 6, 0, 0, 9, 1, 0, 1, 6, 1, 6, 0, 5, 3, 3, 0, 1, 1, 9, 6, 1, 1, 5, 9, 0, 6, 6, 6, 0, 5, 0, 9, 6, 0, 6, 9, 9, 0, 2, 1, 2, 6, 2, 5, 0, 0, 9, 9, 5, 8, 0, 1, 6, 1, 0, 0, 7, 1, 1, 2, 6, 1, 5, 2, 7, 2, 1, 0, 0, 8, 5, 1, 6, 3, 7, 0, 9, 7, 0, 3, 8, 7, 2, 3, 0, 1, 8, 6, 8, 3, 6, 0, 8, 5, 0, 6, 8, 2, 0, 2, 0, 4, 1, 5, 8, 2, 6, 6, 8, 7, 2, 7, 6, 5, 3, 1, 1, 8, 7, 5, 3, 0, 0, 1, 2, 5, 6, 9, 0, 3, 0, 8, 0, 1, 2, 0, 2, 3, 8, 6, 6, 2, 8, 8, 2, 5, 3, 9, 2, 3, 8, 6, 9, 1, 6, 5, 8, 3, 2, 6, 1, 0, 9, 3, 1, 3, 2, 0, 0, 2, 0, 1, 5, 8, 9, 1, 3, 8, 3, 8, 3, 5, 0, 8, 4, 5, 1, 0, 5, 2, 1, 2, 1, 2, 5, 6, 5, 6, 3, 0, 3, 9, 2, 6, 1, 2, 6, 8, 3, 6, 6, 0, 0, 6, 0, 0, 1, 1, 8, 3, 1, 7, 2, 6, 2, 7, 5, 6, 2, 5, 8, 7, 6, 2, 8, 9, 2, 2, 1, 9, 1, 8, 7, 6, 7, 2, 6, 5, 0, 6, 6, 3, 1, 7, 8, 6, 6, 1, 8, 0, 5, 1, 8, 0, 8, 5, 0, 1, 6, 3, 1, 1, 8, 0, 0, 8, 4, 2, 3, 5, 6, 0, 1, 2, 6, 0, 5, 3, 1, 6, 2, 0, 6, 0, 0, 7, 1, 1, 1, 7, 9, 1, 6, 7, 0, 6, 7, 8, 0, 2, 6, 6, 0, 6, 5, 3, 3, 6, 0, 3, 1, 0, 6, 1, 6, 0, 6, 1, 6, 8, 2, 7, 2, 9, 7, 6, 0, 3, 6, 0, 3, 3, 0, 9, 8, 6, 6, 9, 2, 5, 3, 0, 3, 1, 8, 2, 6, 6, 5, 9, 0, 6, 5, 8, 3, 2, 6, 6, 9, 6, 0, 2, 8, 8, 8, 0, 0, 7, 3, 6, 7, 8, 1, 4, 2, 3, 5, 8, 0, 6, 9, 8, 0, 8, 5, 7, 0, 5, 0, 8, 8, 9, 7, 8, 8, 0, 6, 1, 1, 0, 2, 6, 1, 0, 1, 6, 0, 8, 8, 8, 1, 3, 6, 3, 6, 5, 1, 0, 1, 9, 3, 2, 0, 6, 6, 0, 8, 6, 6, 1, 3, 1, 4, 6, 1, 0, 6, 0, 7, 8, 6, 8, 6, 6, 6, 6, 8, 6, 0, 5, 6, 1, 2, 8, 6, 8, 7, 3, 6, 3, 2, 0, 7, 6, 1, 1, 0, 2, 0, 6, 8, 2, 6, 3, 0, 0, 3, 5, 6, 0, 6, 5, 9, 2, 6, 0, 7, 5, 0, 2, 9, 8, 0, 6, 7, 2, 0, 2, 7, 6, 6, 6, 6, 5, 3, 2, 6, 3, 0, 8, 3, 1, 3, 6, 7, 7, 0, 1, 0, 0, 8, 3, 2, 0, 8, 6, 6, 5, 3, 6, 0, 7, 3, 3, 2, 1, 2, 7, 1, 3, 5, 5, 0, 1, 9, 0, 6, 5, 7, 2, 8, 2, 2, 3, 5, 7, 3, 3, 0, 6, 6, 3, 6, 3, 1, 1, 6, 1, 5, 2, 9, 3, 8, 8, 8, 6, 0, 0, 8, 6, 3, 3, 8, 6, 6, 6, 8, 0, 3, 1, 6, 0, 6, 3, 6, 8, 5, 8, 3, 9, 6, 6, 1, 5, 8, 0, 3, 1, 9, 0, 5, 0, 5, 6, 5, 5, 8, 2, 5, 0, 1, 5, 0, 0, 3, 2, 1, 3, 1, 3, 3, 0, 3, 8, 1, 3, 0, 6, 0, 9, 4, 3, 0, 0, 7, 8, 5, 8, 5, 0, 8, 1, 5, 8, 8, 5, 1, 5, 0, 3, 9, 0, 9, 5, 6, 2, 8, 6, 9, 5, 0, 0, 8, 6, 6, 6, 0, 6, 0, 7, 0, 1, 2, 1, 6, 6, 9, 9, 1, 8, 2, 9, 3, 6, 1, 6, 1, 5, 5, 2, 3, 5, 6, 9, 0, 7, 6, 0, 2, 2, 1, 9, 6, 3, 9, 7, 7, 3, 1, 6, 3, 1, 3, 5, 0, 3, 0, 3, 0, 7, 0, 3, 8, 8, 1, 5, 1, 5, 8, 3, 8, 6, 8, 8, 2, 3, 1, 0, 0, 6, 3, 6, 8, 2, 8, 6, 1, 1, 8, 0, 7, 5, 1, 6, 2, 3, 6, 3, 5, 8, 7, 9, 6, 0, 0, 9, 1, 8, 8, 8, 5, 9, 6, 3, 5, 8, 9, 1, 6, 9, 9, 0, 7, 7, 9, 4, 6, 0, 6, 3, 6, 6, 1, 1, 0, 0, 0, 6, 1, 1, 8, 9, 5, 0, 6, 9, 8, 6, 6, 3, 9, 7, 0, 9, 0, 0, 2, 1, 3, 6, 1, 8, 1, 9, 6, 6, 1, 3, 8, 0, 9, 5, 2, 6, 9, 0, 6, 6, 3, 9, 8, 2, 1, 7, 0, 8, 7, 8, 3, 5, 3, 0, 3, 8, 6, 6, 6, 2, 5, 2, 7, 8, 6, 0, 0, 6, 7, 2, 0, 7, 6, 8, 7, 0, 1, 6, 2, 8, 6, 8, 8, 3, 3, 4, 5, 5, 0, 1, 3, 6, 1, 3, 1, 5, 8, 6, 0, 2, 1, 7, 0, 8, 3, 3, 6, 1, 2, 9, 1, 6, 2, 5, 8, 1, 3, 2, 0, 6, 0, 2, 6, 6, 6, 6, 0, 7, 1, 0, 1, 1, 5, 1, 0, 3, 1, 3, 3, 6, 0, 1, 0, 6, 9, 9, 6, 2, 1, 1, 0, 0, 7, 0, 5, 1, 6, 2, 1, 6, 5, 1, 6, 9, 3, 6, 6, 2, 0, 3, 1, 8, 1, 9, 2, 9, 1, 0, 0, 6, 3, 3, 1, 2, 1, 6, 8, 9, 2, 1, 9, 0, 3, 3, 7, 2, 0, 8, 6, 1, 0, 6, 8, 1, 1, 0, 6, 6, 7, 9, 5, 2, 1, 6, 6, 2, 6, 3, 8, 6, 6, 2, 2, 9, 9, 9, 6, 6, 5, 5, 8, 0, 1, 1, 1, 8, 9, 0, 1, 6, 9, 8, 6, 0, 6, 8, 0, 7, 8, 8, 4, 9, 1, 3, 6, 6, 6, 0, 6, 6, 0, 7, 0, 1, 0, 1, 6, 1, 2, 1, 0, 7, 2, 6, 0, 8, 3, 6, 5, 1, 3, 0, 2, 9, 3, 0, 8, 5, 3, 1, 8, 1, 8, 2, 6, 6, 8, 7, 6, 2, 6, 0, 0, 9, 0, 0, 5, 4, 0, 1, 6, 2, 8, 8, 0, 7, 8, 0, 0, 9, 3, 6, 2, 3, 6, 0, 8, 6, 2, 0, 0, 7, 5, 8, 0, 5, 1, 8, 5, 0, 3, 5, 9, 8, 3, 6, 1, 2, 6, 3, 1, 8, 6, 2, 0, 8, 8, 6, 1, 0, 0, 6, 3, 6, 3, 0, 6, 9, 0, 5, 6, 2, 8, 9, 9, 2, 1, 1, 8, 6, 1, 0, 6, 0, 9, 7, 1, 0, 6, 7, 6, 1, 6, 0, 0, 7, 6, 6, 0, 0, 6, 6, 7, 6, 5, 8, 2, 0, 3, 8, 8, 7, 1, 6, 8, 1, 3, 0, 1, 6, 5, 7, 0, 9, 1, 6, 1, 8, 2, 8, 5, 6, 2, 8, 2, 6, 8, 8, 1, 1, 0, 2, 7, 0, 6, 0, 7, 0, 3, 0, 8, 5, 8, 3, 2, 5, 3, 0, 4, 9, 5, 6, 9, 0, 9, 1, 1, 0, 6, 0, 3, 6, 6, 7, 7, 3, 0, 6, 1, 1, 6, 2, 6, 6, 1, 0, 2, 6, 6, 2, 2, 3, 3, 6, 2, 1, 3, 3, 8, 8, 3, 9, 2, 1, 1, 8, 2, 3, 8, 7, 9, 8, 2, 2, 0, 9, 1, 6, 9, 3, 8, 5, 9, 0, 3, 5, 6, 1, 5, 6, 7, 6, 2, 6, 0, 5, 9, 1, 2, 6, 6, 6, 3, 0, 0, 1, 7, 8, 6, 6, 3, 7, 1, 8, 5, 2, 6, 2, 6, 0, 2, 8, 5, 6, 0, 6, 7, 5, 1, 8, 8, 9, 7, 8, 1, 1, 3, 7, 6, 9, 3, 1, 8, 5, 2, 6, 6, 6, 1, 5, 8, 5, 3, 1, 5, 6, 0, 8, 5, 1, 6, 2, 9, 8, 0, 7, 8, 3, 5, 8, 2, 2, 6, 1, 2, 2, 3, 1, 0, 8, 0, 6, 3, 6, 2, 5, 5, 6, 8, 8, 6, 8, 2, 0, 8, 0, 8, 0, 9, 8, 6, 0, 8, 6, 6, 3, 1, 8, 0, 9, 6, 5, 0, 2, 8, 6, 5, 1, 9, 1, 0, 6, 0, 3, 3, 6, 0, 3, 9, 2, 2, 1, 1, 0, 2, 8, 6, 0, 0, 3, 7, 8, 5, 1, 0, 5, 8, 8, 9, 9, 5, 8, 8, 1, 2, 8, 1, 0, 6, 1, 1, 0, 6, 6, 6, 0, 2, 9, 3, 1, 8, 2, 5, 7, 6, 5, 3, 1, 8, 0, 2, 2, 5, 8, 0, 1, 2, 1, 0, 4, 0, 2, 6, 1, 9, 8, 6, 0, 0, 9, 1, 2, 3, 7, 2, 0, 0, 8, 9, 6, 0, 3, 1, 9, 0, 0, 7, 2, 0, 3, 2, 5, 3, 6, 8, 9, 6, 2, 7, 5, 0, 8, 5, 6, 0, 9, 7, 0, 8, 0, 6, 1, 9, 3, 1, 5, 2, 9, 6, 1, 6, 2, 7, 6, 9, 2, 3, 1, 1, 0, 2, 1, 8, 0, 3, 8, 1, 0, 2, 3, 6, 5, 6, 0, 5, 6, 3, 1, 1, 8, 2, 8, 8, 2, 0, 5, 0, 0, 5, 6, 8, 9, 8, 0, 2, 0, 1, 7, 3, 6, 2, 5, 8, 6, 9, 5, 3, 0, 7, 7, 7, 6, 9, 1, 6, 5, 9, 7, 1, 3, 5, 0, 8, 5, 1, 2, 0, 3, 1, 1, 1, 1, 0, 0, 6, 0, 3, 0, 0, 0, 6, 6, 8, 0, 1, 1, 0, 1, 2, 7, 2, 8, 1, 6, 9, 9, 2, 1, 6, 9, 8, 7, 5, 8, 3, 3, 1, 8, 1, 7, 9, 3, 7, 3, 6, 5, 9, 0, 6, 6, 1, 0, 8, 6, 9, 8, 7, 7, 2, 1, 5, 6, 6, 6, 0, 9, 8, 6, 1, 6, 1, 9, 0, 9, 3, 8, 6, 3, 9, 6, 0, 6, 1, 8, 6, 6, 6, 6, 9, 2, 3, 0, 0, 0, 6, 0, 2, 6, 8, 2, 1, 2, 1, 5, 3, 2, 1, 1, 0, 1, 0, 7, 0, 5, 3, 2, 2, 7, 1, 8, 8, 7, 8, 1, 1, 3, 0, 6, 6, 5, 4, 0, 0, 2, 0, 8, 7, 8, 3, 5, 8, 6, 0, 1, 8]