I’m preparing to give a talk about neural networks at a conference in Las Vegas. One of my examples will be a generative adversarial network (GAN). I hadn’t looked at GANs for a while, so I figured I’d dust off one of my examples, update it to my current software environment (PyTorch 1.10, Windows 10/11), and make sure the code still works.

A demo run shows a typical real ‘2’ digit (top) and a fake ‘2’ digit generated by the GAN (bottom).
A GAN accepts real data, almost always image data, and learns how to generate fake image data that resembles the source data. GANs work by using a pair of neural systems that operate in parallel. A generator accepts random noise and outputs a fake image. A discriminator accepts a fake image (from the generator) or a real image, and predicts if the image is real or fake. The two neural systems take turns and the outputs from each are used to update both systems in a coordinated but very complicated way.
My example starts with 380 crude images from the UCI Digits dataset. Each UCI image is an 8 x 8 = 64 pixels of a handwritten digit from ‘0’ to ‘9’. The full UCI Digits dataset has 5,620 images — 3,823 for training and 1,797 for testing. I filtered the training data down to just images of ‘2’ digits. This gave me 380 images. I used the small UCI digits data because training a GAN can be very slow.

A highly simplified diagram of a GAN. The details are very complicated.
Each of the 64 pixel values in an image is a grayscale value between 0 (white) and 16 (black).
My demo generator accepts 20 random values that are Gaussian distributed (mean = 0, sd = 1) and produces 64 values that are supposed to look like a ‘2’. The demo discriminator accepts a batch of real images and fake images and emits a valu between 0.0 and 1.0. Values less tha 0.5 indicate a fake image; greater or equal to 0.5 indicates a real image.
GANs can be used to 1.) generate fake but realistic-looking image, 2.) repair images with missing pixels, 3.) upscale images from low resolution to high resolution, 4.) modify an image to another style (a famous example creates images in the style of Van Gogh), 5.) denoise images to make them easier to interpret by humans.

An example of GAN style transfer from a YouTube video by the Nvidia company. The three real images on the left produce the fake image on the right. Remarkable.
Demo code. Replace “lt” with Boolean operator symbol.
# uci_digits_gan.py
# GAN to generate synthetic '2' digits
# UCI Digits:
# archive.ics.uci.edu/ml/machine-learning-databases/optdigits/
# PyTorch 1.10.0-CPU Anaconda3-2020.02 (Python 3.7.6)
# Windows 10/11
import numpy as np
import torch as T
import matplotlib as mpl
import matplotlib.pyplot as plt
device = T.device('cpu')
# -----------------------------------------------------------
class UCI_Digits_Dataset(T.utils.data.Dataset):
# like: 8,12,0,16, . . 15,7
# 64 pixel values [0-16], digit [0-9]
def __init__(self, src_file, n_rows=None):
tmp_x = np.loadtxt(src_file, max_rows=n_rows,
usecols=range(0,64), delimiter=",", comments="#",
dtype=np.float32) # just pixels, no labels
tmp_x /= 16.0 # normalize
self.x_data = T.tensor(tmp_x, dtype=T.float32).to(device)
def __len__(self):
return len(self.x_data)
def __getitem__(self, idx):
return self.x_data[idx]
# -----------------------------------------------------------
class Discriminator(T.nn.Module): # 64-32-16-1
def __init__(self):
super(Discriminator, self).__init__()
self.fc1 = T.nn.Linear(64, 32)
self.fc2 = T.nn.Linear(32, 16)
self.fc3 = T.nn.Linear(16, 1)
T.nn.init.xavier_uniform_(self.fc1.weight)
T.nn.init.zeros_(self.fc1.bias)
T.nn.init.xavier_uniform_(self.fc2.weight)
T.nn.init.zeros_(self.fc2.bias)
T.nn.init.xavier_uniform_(self.fc3.weight)
T.nn.init.zeros_(self.fc3.bias)
def forward(self, x): # 64
z = T.tanh(self.fc1(x)) # 32
z = T.tanh(self.fc2(z)) # 16
oupt = T.sigmoid(self.fc3(z)) # 1
return oupt
# -----------------------------------------------------------
class Generator(T.nn.Module): # 20-40-64
def __init__(self):
super(Generator, self).__init__()
self.fc1 = T.nn.Linear(20, 40)
self.fc2 = T.nn.Linear(40, 64)
self.inpt_dim = 20
T.nn.init.xavier_uniform_(self.fc1.weight)
T.nn.init.zeros_(self.fc1.bias)
T.nn.init.xavier_uniform_(self.fc2.weight)
T.nn.init.zeros_(self.fc2.bias)
def forward(self, x): # 20
z = T.tanh(self.fc1(x)) # 40
oupt = T.sigmoid(self.fc2(z)) # 64
return oupt
# -----------------------------------------------------------
def accuracy(gen, dis, n, verbose=False):
# accuracy of discriminator on n fake images from generator
gen.eval(); dis.eval()
n_correct = 0; n_wrong = 0
for i in range(n):
zz = T.normal(0.0, 1.0,
size=(1, gen.inpt_dim)).to(device) # 20 values
fake_image = gen(zz) # one fake image
pp = dis(fake_image) # pseudo-prob
if pp "lt" 0.5:
n_correct += 1 # discriminator knew it was fake
else:
n_wrong += 1 # dis thought it was a real image
if verbose == True:
print("")
print(fake_image)
print(pp)
input()
return (n_correct * 1.0) / (n_correct + n_wrong)
# -----------------------------------------------------------
def display_digit(x, save=False):
# x is pixels
pixels = x.reshape((8,8))
# plt.figure(figsize=(3,3)) # inches
plt.imshow(pixels, cmap=plt.get_cmap('gray_r'))
if save == True:
plt.savefig(".\\idx_" + str(idx) + "_digit_" + \
str(label) + ".jpg", bbox_inches='tight')
plt.show()
plt.close()
# -----------------------------------------------------------
def main():
# 0. get started
print("\nBegin GAN for UCI 2 digits demo ")
np.random.seed(0)
T.manual_seed(0)
np.set_printoptions(linewidth=36)
mpl.rcParams['toolbar'] = 'None'
# 1. create data objects
print("Creating UCI Digits only-2s Dataset ")
train_file = ".\\Data\\uci_digits_2_only.txt" # 380 '2' items
train_ds = UCI_Digits_Dataset(train_file)
bat_size = 10
train_ldr = T.utils.data.DataLoader(train_ds,
batch_size=bat_size, shuffle=True, drop_last=True)
# 1b. show typical training item (item [5])
print("\nTypical training image (de-normed): ")
digit = np.rint(train_ds[5].numpy() * 16)
print(digit)
display_digit(train_ds[5], save=False)
# 2. create networks
dis = Discriminator().to(device) # 64-32-16-1
gen = Generator().to(device) # 20-40-64
# 3. train GAN model
max_epochs = 100
ep_log_interval = 10
lrn_rate = 0.005
dis.train() # set mode
gen.train()
dis_optimizer = T.optim.Adam(dis.parameters(), lrn_rate)
gen_optimizer = T.optim.Adam(gen.parameters(), lrn_rate)
loss_func = T.nn.BCELoss()
all_ones = T.ones(bat_size, dtype=T.float32).to(device)
all_zeros = T.zeros(bat_size, dtype=T.float32).to(device)
# -----------------------------------------------------------
print("\nStarting training ")
for epoch in range(0, max_epochs):
for (batch_idx, real_images) in enumerate(train_ldr):
dis_accum_loss = 0.0 # to display progress
gen_accum_loss = 0.0
# 3a. train discriminator using real images
dis_optimizer.zero_grad()
dis_real_oupt = dis(real_images).reshape(-1) # [0, 1]
dis_real_loss = loss_func(dis_real_oupt,
all_ones) # or use squeeze()
# 3b. train discriminator using fake images
zz = T.normal(0.0, 1.0,
size=(bat_size, gen.inpt_dim)).to(device) # 10 x 20
fake_images = gen(zz)
dis_fake_oupt = dis(fake_images).reshape(-1)
dis_fake_loss = loss_func(dis_fake_oupt, all_zeros)
dis_loss_tot = dis_real_loss + dis_fake_loss
dis_accum_loss += dis_loss_tot
dis_loss_tot.backward() # compute gradients
dis_optimizer.step() # update weights and biases
# 3c. train gen with fake images
gen_optimizer.zero_grad()
zz = T.normal(0.0, 1.0,
size=(bat_size, gen.inpt_dim)).to(device) # 20
fake_images = gen(zz)
dis_fake_oupt = dis(fake_images).reshape(-1)
gen_loss = loss_func(dis_fake_oupt, all_ones)
gen_accum_loss += gen_loss
gen_loss.backward()
gen_optimizer.step()
if epoch % ep_log_interval == 0:
acc_dis = accuracy(gen, dis, 500, verbose=False)
print(" epoch: %4d | dis loss: %0.4f | gen loss: %0.4f \
| dis accuracy: %0.4f "\
% (epoch, dis_accum_loss, gen_accum_loss, acc_dis))
print("Training complete ")
# -----------------------------------------------------------
# 4. TODO: save trained model
# 5. use generator to make fake images
gen.eval() # set mode
for i in range(1): # just 1 image for demo
rinpt = T.randn(1, gen.inpt_dim).to(device) # wrap normal()
with T.no_grad():
fi = gen(rinpt).numpy() # make image, convert to numpy
fi = np.rint(fi * 16)
print("\nSynthetic generated image (de-normed): ")
print(fi)
display_digit(fi)
# -----------------------------------------------------------
if __name__ == "__main__":
main()
Demo data:
0,0,11,16,10,1,0,0,0,4,16,10,15,8,0,0,0,4,16,3,11,13,0,0,0,1,14,6,9,14,0,0,0,0,0,0,12,10,0,0,0,0,0,6,16,6,0,0,0,0,5,15,15,8,8,3,0,0,10,16,16,16,16,6,2 0,0,9,16,11,0,0,0,0,4,16,13,16,4,0,0,0,0,9,3,13,9,0,0,0,0,0,0,16,8,0,0,0,0,0,3,16,4,0,0,0,0,0,12,15,1,0,0,0,0,6,16,16,15,11,1,0,0,10,16,9,9,13,6,2 0,0,6,16,12,2,0,0,0,6,16,9,11,11,0,0,0,7,14,0,5,14,0,0,0,3,6,0,7,11,0,0,0,0,0,0,14,7,0,0,0,0,0,8,15,0,0,0,0,0,4,16,10,4,3,0,0,0,7,16,13,14,16,3,2 0,1,14,14,4,0,0,0,0,10,15,15,15,0,0,0,0,14,10,4,16,3,0,0,0,2,1,9,16,0,0,0,0,0,0,13,13,0,0,0,0,0,3,16,5,0,0,0,0,0,13,16,13,5,4,0,0,2,15,14,16,16,16,5,2 0,1,14,15,5,0,0,0,0,3,16,15,15,3,0,0,0,3,16,9,16,5,0,0,0,0,5,6,16,4,0,0,0,0,0,8,15,1,0,0,0,0,0,14,11,0,0,0,0,0,9,16,14,8,7,0,0,0,15,16,16,16,16,6,2 0,0,11,16,6,0,0,0,0,2,16,14,14,1,0,0,0,6,16,2,15,6,0,0,0,2,11,0,15,5,0,0,0,0,0,0,16,5,0,0,0,0,0,4,16,2,0,0,0,0,6,15,15,8,8,3,0,0,12,16,15,16,16,6,2 0,1,9,13,9,0,0,0,0,3,16,10,11,11,0,0,0,1,9,0,2,15,0,0,0,0,0,0,4,15,0,0,0,0,0,1,11,8,0,0,0,0,0,10,15,1,0,0,0,0,6,16,16,13,9,0,0,0,11,12,8,8,8,1,2 0,3,12,16,10,0,0,0,0,8,16,10,16,6,0,0,0,2,9,0,12,8,0,0,0,0,0,0,15,9,0,0,0,0,0,9,14,1,0,0,0,0,4,16,9,0,0,0,0,1,14,16,13,12,9,1,0,4,16,16,13,15,16,3,2 0,0,8,15,5,0,0,0,0,4,15,12,16,0,0,0,0,10,9,0,12,4,0,0,0,3,1,0,13,3,0,0,0,0,0,1,16,0,0,0,0,0,0,6,11,0,0,0,0,0,5,16,16,16,15,0,0,0,9,10,4,6,9,0,2 0,0,12,16,7,0,0,0,0,1,16,9,15,2,0,0,0,0,3,0,12,4,0,0,0,0,0,0,13,4,0,0,0,0,0,7,15,1,0,0,0,1,11,16,7,0,0,0,0,7,16,16,11,6,2,0,0,1,8,11,12,13,7,0,2 0,0,2,14,3,0,0,0,0,0,13,16,12,0,0,0,0,8,12,2,12,0,0,0,0,6,8,0,12,0,0,0,0,0,0,0,15,0,0,0,0,0,1,5,15,0,0,0,0,0,7,16,16,14,9,0,0,0,2,12,12,12,11,0,2 0,2,14,16,14,2,0,0,0,9,15,9,16,8,0,0,0,1,3,1,16,6,0,0,0,0,0,5,16,3,0,0,0,0,0,13,13,0,0,0,0,0,7,16,3,0,0,0,0,2,15,16,10,12,6,0,0,4,16,16,16,16,11,0,2 0,0,8,13,7,0,0,0,0,5,16,9,15,6,0,0,0,5,8,0,7,13,0,0,0,2,4,0,1,15,0,0,0,0,0,0,4,13,0,0,0,0,0,0,10,10,0,0,0,0,5,12,16,9,8,1,0,0,8,13,14,15,16,4,2 0,0,9,13,6,0,0,0,0,5,16,9,14,1,0,0,0,9,9,0,11,5,0,0,0,1,1,0,10,6,0,0,0,0,0,0,15,4,0,0,0,0,0,5,15,0,0,0,0,0,5,15,11,8,8,0,0,0,8,16,12,12,15,4,2 0,2,15,15,5,0,0,0,0,4,13,10,16,0,0,0,0,0,4,4,16,0,0,0,0,0,0,2,15,0,0,0,0,0,0,9,10,0,0,0,0,0,3,15,3,0,0,0,0,1,13,14,8,8,6,0,0,2,13,12,10,9,6,0,2 0,0,9,16,15,2,0,0,0,4,16,13,15,11,0,0,0,6,10,0,14,10,0,0,0,0,0,4,16,4,0,0,0,0,0,10,14,0,0,0,0,0,5,15,4,0,0,0,0,0,14,14,11,12,5,0,0,0,12,16,16,11,3,0,2 0,0,6,14,14,4,0,0,0,0,13,15,11,13,0,0,0,0,2,2,2,16,1,0,0,0,0,0,3,14,1,0,0,0,0,0,9,11,0,0,0,0,0,4,16,3,0,0,0,0,4,15,16,16,14,2,0,0,7,13,12,9,9,3,2 0,0,7,15,14,4,0,0,0,0,13,13,10,11,0,0,0,0,0,1,0,15,1,0,0,0,0,0,1,16,0,0,0,0,0,0,6,14,0,0,0,0,0,4,15,8,0,0,0,0,5,14,16,16,9,0,0,0,5,11,7,4,9,2,2 0,0,9,16,12,1,0,0,0,10,16,10,15,4,0,0,0,8,6,0,8,7,0,0,0,0,0,0,8,10,0,0,0,0,0,1,14,5,0,0,0,0,0,10,15,1,1,0,0,0,10,16,14,14,11,0,0,0,8,15,14,10,3,0,2 0,1,10,16,15,1,0,0,0,5,16,13,16,4,0,0,0,5,9,3,16,2,0,0,0,0,0,10,10,0,0,0,0,0,2,15,6,0,0,0,0,0,9,12,1,0,0,0,0,0,12,14,10,4,0,0,0,0,11,16,16,16,2,0,2 0,0,11,16,16,9,0,0,0,2,16,12,16,11,0,0,0,1,3,1,16,8,0,0,0,0,0,12,14,2,0,0,0,0,3,16,8,0,0,0,0,0,11,15,0,0,0,0,0,0,13,15,12,12,4,0,0,0,13,16,16,15,2,0,2 0,0,9,11,1,0,0,0,0,4,16,14,9,0,0,0,0,1,6,3,13,0,0,0,0,0,0,3,14,0,0,0,0,0,0,5,13,0,0,0,0,0,0,14,10,3,0,0,0,0,11,16,16,16,14,2,0,0,6,9,7,4,8,6,2 0,1,11,16,9,0,0,0,0,10,14,9,13,2,0,0,0,4,3,0,12,4,0,0,0,0,0,0,12,3,0,0,0,0,0,5,15,0,0,0,0,0,2,13,10,0,0,0,0,1,16,16,9,10,7,0,0,0,10,13,12,10,9,0,2 0,2,14,16,9,0,0,0,0,8,16,13,16,3,0,0,0,10,9,5,16,2,0,0,0,1,0,8,14,0,0,0,0,0,0,14,10,0,0,0,0,0,5,16,5,0,0,0,0,3,16,16,11,6,1,0,0,2,13,16,16,16,12,0,2 0,1,9,15,13,0,0,0,0,6,16,16,16,2,0,0,0,3,8,8,16,4,0,0,0,0,0,12,13,0,0,0,0,0,1,16,9,0,0,0,0,0,9,16,2,0,0,0,0,0,12,14,10,8,1,0,0,0,13,16,16,16,5,0,2 0,1,13,13,1,0,0,0,0,9,16,16,7,0,0,0,0,5,5,13,8,0,0,0,0,0,2,16,6,0,0,0,0,0,11,15,1,0,0,0,0,4,16,8,1,0,0,0,0,4,16,16,16,16,6,0,0,1,11,14,16,16,11,0,2 0,1,11,16,7,0,0,0,0,8,16,15,10,0,0,0,0,12,8,12,11,0,0,0,0,2,0,15,7,0,0,0,0,0,8,14,0,0,0,0,0,0,13,12,0,3,3,0,0,5,16,13,14,16,16,1,0,0,16,16,15,10,5,0,2 0,2,13,9,1,0,0,0,0,8,15,13,10,0,0,0,0,2,6,1,12,0,0,0,0,0,0,4,12,0,0,0,0,0,0,12,6,0,0,0,0,0,8,12,0,0,0,0,0,2,16,11,14,16,9,0,0,2,15,12,11,5,1,0,2 0,0,5,13,10,0,0,0,0,1,15,16,16,4,0,0,0,3,11,0,10,7,0,0,0,0,1,0,13,0,0,0,0,0,0,5,11,0,0,0,0,0,3,15,3,0,0,0,0,0,8,16,16,15,2,0,0,0,6,13,12,10,2,0,2 0,3,14,9,5,0,0,0,0,0,7,10,16,0,0,0,0,0,0,2,14,0,0,0,0,0,0,10,6,0,0,0,0,0,3,15,1,0,0,0,0,1,13,8,0,0,0,0,0,8,16,10,12,15,7,0,0,3,12,16,13,8,3,0,2 0,0,6,14,15,4,0,0,0,3,16,10,11,14,0,0,0,2,8,0,6,16,2,0,0,0,0,0,8,10,0,0,0,0,0,0,14,7,0,0,0,0,0,7,13,0,0,0,0,0,4,16,11,14,4,0,0,0,5,15,13,8,1,0,2 0,0,2,8,15,14,0,0,0,1,14,12,8,16,0,0,0,6,12,1,5,13,0,0,0,1,2,1,14,5,0,0,0,0,0,9,13,0,0,0,0,0,0,15,4,0,0,0,0,0,0,16,8,11,7,0,0,0,0,9,13,7,0,0,2 0,1,6,13,13,4,0,0,0,9,16,14,15,15,0,0,0,5,5,0,6,13,0,0,0,0,0,1,12,11,0,0,0,0,0,7,14,1,0,0,0,0,1,16,8,0,0,0,0,0,8,16,9,13,10,0,0,0,4,14,16,9,2,0,2 0,0,11,16,7,0,0,0,0,4,16,16,16,0,0,0,0,12,9,4,16,0,0,0,0,8,5,1,16,2,0,0,0,0,0,11,13,0,0,0,0,0,3,16,14,7,9,0,0,0,13,16,16,16,13,0,0,0,13,13,10,2,0,0,2 0,0,5,12,14,4,0,0,0,10,16,15,14,15,0,0,0,8,5,1,10,13,0,0,0,0,0,0,14,10,0,0,0,0,0,11,16,3,0,0,0,0,4,15,13,0,0,0,0,0,12,16,12,9,11,0,0,0,2,14,16,13,7,0,2 0,0,5,11,12,2,0,0,0,5,16,14,14,12,0,0,0,5,7,0,10,10,0,0,0,0,0,1,14,6,0,0,0,0,0,14,12,1,0,0,0,0,11,16,1,0,0,0,0,0,15,13,8,5,2,0,0,0,3,12,16,15,9,0,2 0,0,5,15,15,2,0,0,0,4,15,11,16,4,0,0,0,2,4,6,16,2,0,0,0,0,0,14,10,0,0,0,0,0,6,16,2,0,0,0,0,0,9,13,0,0,0,0,0,0,10,15,8,4,3,0,0,0,3,14,16,14,4,0,2 0,0,6,13,11,4,0,0,0,5,16,10,14,12,0,0,0,7,8,1,14,9,0,0,0,0,0,5,15,3,0,0,0,0,2,15,10,0,0,0,0,0,12,14,0,0,0,0,0,4,16,12,4,6,5,0,0,1,9,14,13,12,5,0,2 0,0,13,16,6,0,0,0,0,6,16,13,15,0,0,0,0,4,15,7,16,0,0,0,0,0,3,10,13,0,0,0,0,0,0,14,10,0,0,0,0,1,13,16,1,2,0,0,0,8,16,16,15,16,2,0,0,1,11,15,16,16,3,0,2 0,1,13,16,9,0,0,0,0,6,16,14,13,0,0,0,0,5,11,8,15,0,0,0,0,0,0,12,9,0,0,0,0,0,3,16,6,0,0,0,0,1,13,13,1,0,0,0,0,11,16,16,16,16,5,0,0,2,12,14,15,16,5,0,2 0,0,10,12,2,0,0,0,0,0,16,14,8,0,0,0,0,0,14,7,12,0,0,0,0,0,1,5,12,0,0,0,0,0,0,9,9,0,0,0,0,0,3,16,2,0,0,0,0,4,16,16,10,6,2,0,0,1,8,8,11,13,10,0,2 0,2,14,10,1,0,0,0,0,6,13,13,6,0,0,0,0,8,5,6,8,0,0,0,0,3,2,8,6,0,0,0,0,0,0,11,4,0,0,0,0,0,6,14,0,1,0,0,0,3,16,15,12,15,7,0,0,2,13,9,8,9,7,0,2 0,0,14,10,0,0,0,0,0,2,16,14,4,0,0,0,0,0,9,8,8,0,0,0,0,0,0,10,4,0,0,0,0,0,2,15,2,0,0,0,0,2,13,9,0,2,1,0,0,8,16,13,13,16,5,0,0,1,9,15,16,16,7,0,2 0,0,6,13,2,0,0,0,0,3,15,14,8,0,0,0,0,8,6,5,12,0,0,0,0,3,2,4,10,0,0,0,0,0,0,8,8,0,0,0,0,0,0,13,4,0,0,0,0,0,10,16,16,16,7,0,0,0,7,12,10,13,7,0,2 0,1,11,14,0,0,0,0,0,4,15,14,6,0,0,0,0,6,9,7,8,0,0,0,0,3,5,6,11,0,0,0,0,0,0,9,8,0,0,0,0,0,1,14,7,0,0,0,0,1,15,16,16,16,6,0,0,0,8,8,12,13,4,0,2 0,1,13,9,0,0,0,0,0,10,14,15,2,0,0,0,0,8,6,10,6,0,0,0,0,2,3,10,5,0,0,0,0,0,3,16,2,0,0,0,0,0,6,11,0,0,0,0,0,4,16,15,12,12,6,0,0,0,10,12,12,13,11,0,2 0,2,12,8,0,0,0,0,0,11,16,16,0,0,0,0,0,7,8,14,6,0,0,0,0,1,2,12,8,0,0,0,0,0,0,14,4,0,0,0,0,0,2,16,1,0,0,0,0,2,13,16,9,15,11,0,0,2,14,16,13,15,9,0,2 0,2,14,16,9,0,0,0,0,10,15,10,16,0,0,0,0,8,12,0,16,5,0,0,0,3,3,3,16,5,0,0,0,0,0,5,16,1,0,0,0,0,0,11,13,0,0,0,0,0,7,16,13,11,11,1,0,1,15,16,16,16,16,5,2 0,0,11,16,10,0,0,0,0,2,16,14,15,0,0,0,0,0,13,7,16,1,0,0,0,0,0,6,16,1,0,0,0,0,0,10,12,0,0,0,0,0,1,15,8,0,0,0,0,0,12,16,15,10,4,0,0,0,11,11,8,13,16,6,2 0,1,14,15,2,0,0,0,0,9,15,15,12,0,0,0,0,9,12,8,15,0,0,0,0,3,5,9,10,0,0,0,0,0,0,11,11,0,0,0,0,0,1,15,7,0,0,0,0,0,7,16,11,7,4,0,0,1,15,16,16,16,16,5,2 0,4,16,16,6,0,0,0,0,4,14,8,16,0,0,0,0,3,8,5,16,0,0,0,0,0,0,5,16,0,0,0,0,0,0,14,9,0,0,0,0,0,5,15,2,0,0,0,0,1,13,15,11,9,7,0,0,6,16,14,12,12,12,0,2 0,1,12,16,3,0,0,0,0,5,14,14,4,0,0,0,0,9,7,7,8,0,0,0,0,6,2,8,8,0,0,0,0,0,0,10,5,0,0,0,0,0,0,14,2,0,0,0,0,0,9,16,11,8,5,0,0,2,14,11,12,16,9,0,2 0,2,15,9,0,0,0,0,0,8,13,15,0,0,0,0,0,10,4,14,3,0,0,0,0,11,2,12,4,0,0,0,0,1,0,12,4,0,0,0,0,0,2,16,0,0,0,0,0,0,11,14,6,6,5,0,0,2,16,16,16,16,9,0,2 0,1,12,12,1,0,0,0,0,4,14,12,10,0,0,0,0,7,11,4,12,0,0,0,0,2,12,7,12,0,0,0,0,0,0,8,12,0,0,0,0,0,1,14,9,0,0,0,0,0,13,16,16,15,6,0,0,0,9,12,12,12,7,0,2 0,3,16,15,4,0,0,0,0,8,13,12,12,0,0,0,0,9,8,8,12,0,0,0,0,1,5,5,16,0,0,0,0,0,0,11,12,0,0,0,0,0,1,16,8,0,0,0,0,3,14,16,13,15,12,0,0,3,16,16,16,16,15,0,2 0,0,8,13,4,0,0,0,0,2,16,11,15,1,0,0,0,0,12,0,11,5,0,0,0,0,4,2,9,9,0,0,0,0,0,0,12,11,0,0,0,0,0,6,15,4,0,0,0,0,6,16,13,5,8,0,0,0,7,16,16,16,16,5,2 0,0,13,16,7,0,0,0,0,0,16,13,16,2,0,0,0,0,11,8,13,8,0,0,0,0,1,1,16,8,0,0,0,0,0,3,16,6,0,0,0,0,0,10,15,2,0,0,0,0,12,16,15,9,9,0,0,0,15,16,16,16,16,5,2 0,1,14,15,4,0,0,0,0,6,15,12,14,0,0,0,0,4,16,4,16,4,0,0,0,0,6,4,16,3,0,0,0,0,0,9,15,0,0,0,0,0,1,14,11,0,0,0,0,0,13,16,10,8,9,1,0,2,14,16,16,16,16,6,2 0,0,7,15,10,1,0,0,0,1,16,10,14,7,0,0,0,0,11,2,0,15,0,0,0,0,0,0,0,15,3,0,0,0,0,0,5,16,0,0,0,0,0,3,15,9,0,0,0,0,9,16,16,10,6,0,0,0,9,12,12,12,13,1,2 0,0,12,16,12,0,0,0,0,4,16,12,16,6,0,0,0,1,8,0,12,8,0,0,0,0,0,0,15,5,0,0,0,0,0,3,16,3,0,0,0,0,8,16,8,0,0,0,0,3,16,16,16,13,2,0,0,1,8,9,14,16,4,0,2 0,1,14,12,1,0,0,0,0,7,16,16,13,0,0,0,0,6,14,3,16,2,0,0,0,2,12,0,14,6,0,0,0,0,0,0,15,8,0,0,0,0,0,8,16,4,0,0,0,2,12,16,16,12,10,0,0,0,15,16,16,16,16,6,2 0,4,16,13,0,0,0,0,0,12,11,15,4,0,0,0,0,12,6,10,10,0,0,0,0,1,1,8,10,0,0,0,0,0,0,15,7,0,0,0,0,0,4,16,1,0,0,0,0,0,13,16,12,12,8,0,0,2,16,16,16,16,16,0,2 0,3,14,16,4,0,0,0,0,8,10,11,11,0,0,0,0,5,9,0,13,2,0,0,0,0,0,0,12,4,0,0,0,0,0,2,15,1,0,0,0,0,0,14,11,0,0,0,0,1,13,16,14,12,6,0,0,2,12,12,12,12,11,0,2 0,1,14,14,2,0,0,0,0,7,16,16,8,0,0,0,0,11,11,10,14,0,0,0,0,0,0,8,16,0,0,0,0,0,0,10,13,0,0,0,0,0,5,16,12,0,0,0,0,4,16,16,16,16,6,0,0,1,8,6,8,15,11,0,2 0,2,15,10,1,0,0,0,0,8,15,16,9,0,0,0,0,8,10,11,12,0,0,0,0,1,5,7,16,0,0,0,0,0,0,10,13,0,0,0,0,0,2,15,10,0,0,0,0,5,16,16,16,12,8,0,0,3,12,12,11,14,16,1,2 0,1,12,10,2,0,0,0,0,5,14,13,12,0,0,0,0,4,8,3,16,0,0,0,0,0,1,0,15,0,0,0,0,0,0,5,12,0,0,0,0,0,4,15,6,0,0,0,0,4,16,16,15,10,3,0,0,2,11,7,8,11,9,0,2 0,0,6,15,10,0,0,0,0,4,16,15,15,5,0,0,0,10,11,1,12,4,0,0,0,11,9,0,15,3,0,0,0,4,8,1,14,4,0,0,0,0,0,8,16,2,1,0,0,0,5,16,16,15,15,2,0,0,8,16,14,11,13,1,2 0,0,6,16,13,0,0,0,0,7,16,14,15,10,0,0,0,12,16,3,7,16,1,0,0,11,13,0,7,16,1,0,0,0,0,0,14,14,0,0,0,0,2,9,16,10,5,0,0,0,11,16,16,16,16,3,0,0,6,16,11,8,8,2,2 0,0,3,14,10,0,0,0,0,4,15,12,15,2,0,0,0,11,15,1,11,5,0,0,0,9,12,0,10,7,0,0,0,1,1,0,15,7,0,0,0,0,0,7,16,6,2,0,0,0,1,16,16,16,16,3,0,0,2,12,11,8,8,3,2 0,0,10,16,8,0,0,0,0,3,16,14,14,2,0,0,0,6,13,6,16,2,0,0,0,2,7,8,16,1,0,0,0,0,2,16,10,0,0,0,0,1,12,16,5,2,2,0,0,4,16,16,16,15,14,1,0,0,9,12,11,12,13,1,2 0,0,8,15,10,0,0,0,0,3,16,16,15,1,0,0,0,9,13,1,16,1,0,0,0,7,11,2,16,1,0,0,0,0,0,9,14,0,0,0,0,0,1,16,9,2,4,0,0,0,13,16,16,16,16,0,0,0,11,16,9,8,9,0,2 0,0,6,15,13,2,0,0,0,0,11,16,13,12,0,0,0,0,8,13,6,16,2,0,0,0,0,2,2,16,5,0,0,0,0,0,4,16,4,0,0,0,0,0,10,16,3,0,0,0,2,11,16,15,8,1,0,0,6,14,16,16,16,14,2 0,0,3,12,13,3,0,0,0,0,12,14,7,12,0,0,0,1,16,1,0,14,0,0,0,0,14,0,0,15,0,0,0,0,1,0,4,12,0,0,0,0,0,0,14,8,0,0,0,0,2,14,16,12,14,2,0,0,7,16,12,12,12,3,2 0,0,8,16,16,10,0,0,0,1,15,15,9,15,1,0,0,0,14,3,0,15,5,0,0,0,0,0,0,15,6,0,0,0,0,0,5,16,4,0,0,0,0,0,12,14,0,0,0,0,8,15,16,6,4,1,0,0,10,16,16,16,16,9,2 0,0,6,16,14,5,0,0,0,0,9,15,12,15,0,0,0,0,0,6,2,16,5,0,0,0,0,0,6,16,3,0,0,0,0,0,13,15,0,0,0,0,1,9,16,8,0,0,0,0,11,16,16,12,5,0,0,0,6,16,16,16,14,0,2 0,1,14,16,6,0,0,0,0,4,15,10,13,0,0,0,0,1,3,4,15,0,0,0,0,0,0,2,15,0,0,0,0,0,0,9,9,0,0,0,0,0,1,15,4,0,0,0,0,1,13,14,7,2,0,0,0,3,15,16,16,16,13,1,2 0,2,13,16,14,3,0,0,0,11,15,8,14,14,0,0,0,9,6,0,6,15,2,0,0,0,0,0,11,13,0,0,0,0,0,2,16,6,0,0,0,0,1,12,13,0,0,0,0,1,12,16,8,4,4,0,0,2,15,16,16,16,16,5,2 0,0,9,16,16,8,0,0,0,0,15,13,12,12,0,0,0,0,11,2,13,11,0,0,0,0,0,4,16,8,0,0,0,0,5,15,10,0,0,0,0,3,16,13,0,0,0,0,0,7,16,10,4,4,7,0,0,0,8,16,16,16,14,0,2 0,5,15,15,3,0,0,0,0,12,14,13,12,0,0,0,0,7,9,3,16,2,0,0,0,0,0,0,16,4,0,0,0,0,0,5,16,0,0,0,0,0,0,9,12,0,0,0,0,1,8,16,12,4,1,0,0,8,16,16,16,16,13,0,2 0,7,16,13,2,0,0,0,0,8,14,12,14,0,0,0,0,1,2,4,16,0,0,0,0,0,0,0,16,4,0,0,0,0,0,5,16,2,0,0,0,0,0,11,15,0,0,0,0,1,11,16,16,13,11,0,0,4,16,16,12,12,9,0,2 0,3,16,16,7,0,0,0,0,4,16,11,16,5,0,0,0,0,3,1,12,12,0,0,0,0,0,0,10,12,0,0,0,0,0,0,10,11,0,0,0,0,0,3,15,8,0,0,0,0,4,14,16,11,6,0,0,1,16,16,16,14,16,5,2 0,3,15,15,3,0,0,0,0,6,16,10,14,2,0,0,0,0,4,0,16,5,0,0,0,0,0,0,15,7,0,0,0,0,0,3,16,2,0,0,0,0,0,8,14,0,0,0,0,0,10,16,7,6,7,1,0,2,16,16,16,16,13,2,2 0,2,14,16,10,1,0,0,0,11,15,8,15,9,0,0,0,8,5,0,11,12,0,0,0,0,0,0,11,15,0,0,0,0,0,1,16,7,0,0,0,0,0,8,16,4,0,0,0,0,7,16,14,4,1,0,0,2,16,16,16,16,15,1,2 0,1,14,15,2,0,0,0,0,2,13,12,12,0,0,0,0,0,0,4,16,3,0,0,0,0,0,1,16,6,0,0,0,0,0,5,16,0,0,0,0,0,0,8,12,0,0,0,0,0,5,16,10,8,7,1,0,1,15,16,16,14,12,2,2 0,6,16,12,2,0,0,0,0,1,13,16,12,0,0,0,0,0,0,12,12,0,0,0,0,0,1,15,9,0,0,0,0,0,4,16,1,0,0,0,0,0,14,11,0,0,0,0,0,5,16,15,16,15,4,0,0,4,15,13,12,11,8,0,2 0,5,14,15,9,1,0,0,0,7,14,12,16,15,1,0,0,0,1,0,9,16,4,0,0,0,0,0,7,16,4,0,0,0,0,0,12,14,0,0,0,0,1,11,16,4,0,0,0,3,14,16,13,8,2,0,0,4,12,16,12,10,4,0,2 0,0,11,16,14,9,1,0,0,0,15,13,13,16,4,0,0,0,0,0,4,16,5,0,0,0,0,0,10,15,2,0,0,0,0,8,16,6,0,0,0,0,8,16,8,0,0,0,0,6,16,16,16,10,0,0,0,1,8,8,12,13,0,0,2 0,4,16,13,0,0,0,0,0,10,16,16,2,0,0,0,0,8,7,16,4,0,0,0,0,0,5,16,2,0,0,0,0,0,10,14,0,0,0,0,0,1,15,10,0,0,0,0,0,8,16,16,16,16,6,0,0,3,13,16,16,15,5,0,2 0,4,16,14,1,0,0,0,0,9,16,16,8,0,0,0,0,5,9,12,7,0,0,0,0,0,1,16,3,0,0,0,0,0,6,15,0,0,0,0,0,1,15,10,0,0,0,0,0,6,16,14,10,6,1,0,0,4,15,16,16,16,13,0,2 0,0,5,16,10,0,0,0,0,0,12,15,15,5,0,0,0,0,10,3,11,9,0,0,0,0,0,0,12,8,0,0,0,0,0,0,15,6,0,0,0,0,2,7,16,2,0,0,0,0,11,16,16,15,10,2,0,0,6,8,4,9,15,3,2 0,0,5,13,3,0,0,0,0,0,12,16,11,0,0,0,0,0,5,13,16,1,0,0,0,0,0,3,16,3,0,0,0,0,0,9,16,1,0,0,0,0,1,16,9,0,0,0,0,0,7,16,13,8,4,0,0,0,5,16,16,16,16,5,2 0,0,7,15,8,0,0,0,0,7,16,16,12,0,0,0,0,12,14,11,11,0,0,0,0,8,3,16,7,0,0,0,0,0,5,16,3,0,0,0,0,0,9,14,0,0,0,0,0,0,12,15,12,8,3,0,0,0,6,16,16,16,11,0,2 0,0,10,15,2,0,0,0,0,5,16,16,8,0,0,0,0,9,13,8,12,0,0,0,0,12,7,4,14,0,0,0,0,3,1,7,12,0,0,0,0,0,0,15,13,1,0,0,0,0,9,16,16,16,6,0,0,0,10,16,16,16,10,0,2 0,2,15,14,3,0,0,0,0,7,15,14,13,0,0,0,0,9,11,2,16,4,0,0,0,7,4,0,14,6,0,0,0,0,0,0,14,7,0,0,0,0,0,3,16,3,0,0,0,0,4,15,16,8,4,0,0,1,16,16,16,16,16,5,2 0,1,13,16,1,0,0,0,0,7,16,16,3,0,0,0,0,12,9,16,4,0,0,0,0,5,3,15,4,0,0,0,0,0,6,15,1,0,0,0,0,0,14,10,0,0,0,0,0,4,16,13,11,9,3,0,0,1,15,16,16,15,5,0,2 0,2,14,4,0,0,0,0,0,6,16,10,0,0,0,0,0,8,8,14,0,0,0,0,0,2,3,15,0,0,0,0,0,0,4,12,0,0,0,0,0,1,13,8,0,0,0,0,0,6,16,16,16,12,4,0,0,3,15,16,14,7,2,0,2 0,0,12,9,0,0,0,0,0,4,15,15,5,0,0,0,0,7,10,3,11,0,0,0,0,10,6,0,12,2,0,0,0,5,3,0,12,5,0,0,0,0,1,3,16,4,0,0,0,0,14,16,16,16,14,0,0,0,12,13,10,8,4,0,2 0,1,13,16,7,0,0,0,0,8,15,15,9,0,0,0,0,12,8,8,12,0,0,0,0,10,7,8,12,0,0,0,0,1,0,11,10,0,0,0,0,0,3,16,5,0,0,0,0,0,13,15,6,6,1,0,0,1,16,16,16,16,8,0,2 0,0,13,13,2,0,0,0,0,2,16,15,11,0,0,0,0,2,16,9,16,1,0,0,0,2,16,8,16,0,0,0,0,0,8,9,15,0,0,0,0,0,2,15,13,4,0,0,0,0,12,16,16,16,11,3,0,0,13,11,0,6,9,3,2 0,0,8,16,15,4,0,0,0,2,16,5,7,8,0,0,0,0,6,0,5,8,0,0,0,0,0,0,12,5,0,0,0,0,0,9,14,0,0,0,0,1,11,15,4,0,0,0,0,3,16,13,4,0,0,0,0,0,8,13,16,15,5,0,2 0,6,16,16,13,1,0,0,0,13,11,8,15,9,0,0,0,5,1,0,10,14,0,0,0,0,0,0,12,11,0,0,0,0,0,3,16,2,0,0,0,0,0,13,13,0,0,0,0,3,14,16,12,8,7,0,0,5,16,16,16,16,10,0,2 0,2,15,16,10,0,0,0,0,8,16,10,16,2,0,0,0,4,7,0,16,6,0,0,0,0,0,2,16,4,0,0,0,0,0,8,14,0,0,0,0,0,2,16,7,0,0,0,0,2,15,16,9,8,8,0,0,3,16,16,16,16,12,0,2 0,4,15,16,12,0,0,0,0,12,15,7,16,5,0,0,0,3,3,0,15,4,0,0,0,0,0,0,13,7,0,0,0,0,0,5,15,2,0,0,0,0,1,14,11,0,0,0,0,1,13,16,9,8,3,0,0,3,16,16,16,16,16,1,2 0,0,10,16,12,0,0,0,0,1,14,13,16,4,0,0,0,0,2,3,16,5,0,0,0,0,0,4,16,2,0,0,0,0,0,11,14,0,0,0,0,0,2,16,8,0,3,0,0,1,13,16,14,16,16,3,0,0,12,16,16,13,7,0,2 0,0,11,16,15,2,0,0,0,0,12,10,14,8,0,0,0,0,0,0,11,8,0,0,0,0,0,1,15,3,0,0,0,0,1,11,11,0,0,0,0,6,15,15,2,0,0,0,0,9,16,14,9,3,0,0,0,1,9,12,15,16,13,0,2 0,3,15,16,11,0,0,0,0,10,15,13,16,2,0,0,0,10,7,4,16,0,0,0,0,1,0,9,12,0,0,0,0,0,1,16,6,0,0,0,0,0,10,15,0,0,0,0,0,7,16,14,12,14,11,0,0,6,16,16,16,11,3,0,2 0,3,16,16,10,0,0,0,0,2,12,11,16,3,0,0,0,0,0,2,16,5,0,0,0,0,0,3,16,2,0,0,0,0,1,15,10,0,0,0,0,0,13,16,1,0,0,0,0,7,16,13,10,12,13,0,0,2,15,16,16,12,6,0,2 0,0,3,15,8,0,0,0,0,0,8,16,16,7,0,0,0,0,7,11,9,12,0,0,0,0,2,5,9,11,0,0,0,0,0,0,13,7,0,0,0,0,7,10,16,4,0,0,0,0,14,16,16,16,15,0,0,0,1,4,4,7,11,1,2 0,1,13,12,0,0,0,0,0,7,16,16,8,0,0,0,0,8,10,4,14,0,0,0,0,2,6,2,15,0,0,0,0,0,0,9,10,0,0,0,0,0,5,16,5,0,0,0,0,2,16,16,16,16,11,0,0,1,11,11,8,9,9,0,2 0,0,10,16,6,0,0,0,0,0,15,14,16,0,0,0,0,0,14,4,16,0,0,0,0,0,0,2,15,0,0,0,0,0,0,6,10,0,0,0,0,0,1,14,6,0,0,0,0,1,14,16,13,12,6,0,0,0,8,8,8,11,11,0,2 0,2,15,13,2,0,0,0,0,6,16,14,15,1,0,0,0,7,12,0,15,8,0,0,0,4,7,0,16,8,0,0,0,0,0,1,16,3,0,0,0,0,0,9,15,0,0,0,0,2,15,16,16,14,5,0,0,2,10,12,13,16,8,0,2 0,0,4,15,6,0,0,0,0,0,13,13,16,0,0,0,0,4,15,1,16,2,0,0,0,0,0,2,16,0,0,0,0,0,0,8,12,0,0,0,0,1,12,16,6,4,0,0,0,7,16,16,16,16,6,0,0,0,2,0,4,8,3,0,2 0,0,2,16,10,1,0,0,0,0,8,15,13,7,0,0,0,0,3,9,4,13,0,0,0,0,0,0,6,13,0,0,0,0,0,0,12,8,0,0,0,0,0,4,16,3,0,0,0,0,2,15,14,8,14,5,0,0,2,15,16,16,12,7,2 0,0,11,12,2,0,0,0,0,3,16,12,7,0,0,0,0,2,14,3,10,0,0,0,0,0,0,5,8,0,0,0,0,0,0,11,5,0,0,0,0,0,3,16,1,0,0,0,0,0,11,14,9,15,15,0,0,0,8,13,12,8,10,2,2 0,0,4,14,10,0,0,0,0,0,14,15,15,6,0,0,0,1,16,5,5,11,0,0,0,0,5,4,6,13,0,0,0,0,0,0,14,6,0,0,0,0,0,3,16,2,0,0,0,0,3,15,16,12,16,3,0,0,4,16,12,12,12,5,2 0,0,5,10,12,7,0,0,0,1,14,16,16,16,0,0,0,11,16,4,7,15,0,0,0,5,12,0,11,14,0,0,0,0,0,5,16,9,0,0,0,0,2,14,13,5,1,0,0,0,10,16,16,16,15,0,0,0,7,12,12,9,12,1,2 0,0,9,13,4,0,0,0,0,1,16,9,11,0,0,0,0,2,11,0,13,0,0,0,0,0,2,3,13,0,0,0,0,0,0,11,5,0,0,0,0,0,3,14,1,0,0,0,0,0,11,14,10,8,11,0,0,0,11,13,12,12,14,2,2 0,0,5,10,12,2,0,0,0,2,16,13,11,11,0,0,0,7,14,0,4,15,0,0,0,1,6,0,10,12,0,0,0,0,0,2,16,6,0,0,0,0,0,9,12,0,0,0,0,0,4,16,16,16,16,2,0,0,7,15,11,8,8,1,2 0,0,8,14,13,1,0,0,0,3,16,16,16,7,0,0,0,4,16,3,11,8,0,0,0,0,4,0,15,4,0,0,0,0,0,3,15,1,0,0,0,0,7,14,15,5,2,0,0,1,16,16,16,16,15,0,0,0,6,4,6,9,11,0,2 0,0,13,14,5,0,0,0,0,3,16,15,16,3,0,0,0,7,11,1,13,4,0,0,0,1,2,2,15,2,0,0,0,0,0,9,12,0,0,0,0,0,8,16,4,1,1,0,0,0,16,16,16,16,8,0,0,0,11,12,10,11,7,0,2 0,1,12,8,0,0,0,0,0,9,16,14,9,0,0,0,0,9,8,0,16,0,0,0,0,1,0,4,13,0,0,0,0,0,0,9,7,0,0,0,0,0,1,13,3,0,0,0,0,1,15,15,11,10,7,0,0,0,11,12,12,12,11,0,2 0,0,13,16,5,0,0,0,0,4,15,13,13,0,0,0,0,7,8,3,16,1,0,0,0,9,3,4,16,0,0,0,0,0,0,8,10,0,0,0,0,0,2,15,5,0,0,0,0,0,12,16,16,16,7,0,0,0,13,12,9,15,7,0,2 0,1,9,15,2,0,0,0,0,10,14,14,7,0,0,0,0,5,3,10,8,0,0,0,0,0,0,14,4,0,0,0,0,0,2,16,0,0,0,0,0,0,10,12,1,0,0,0,0,2,16,16,16,14,8,0,0,0,7,9,14,16,7,0,2 0,0,8,16,8,0,0,0,0,0,10,16,16,0,0,0,0,0,6,10,16,4,0,0,0,0,0,0,16,2,0,0,0,0,0,7,13,0,0,0,0,0,1,14,8,0,0,0,0,0,13,16,16,16,14,0,0,0,8,12,11,8,14,0,2 0,1,11,13,5,0,0,0,0,7,12,7,15,4,0,0,0,8,4,0,8,12,0,0,0,2,6,0,0,13,0,0,0,0,0,1,8,3,0,0,0,0,0,11,8,0,0,0,0,1,12,16,13,8,2,0,0,2,12,12,12,12,12,0,2 0,3,13,16,13,1,0,0,0,11,11,8,14,8,0,0,0,5,1,0,5,14,0,0,0,0,0,0,5,11,0,0,0,0,0,1,14,3,0,0,0,0,0,9,11,0,0,0,0,0,11,16,15,12,7,0,0,1,8,8,9,13,7,0,2 0,2,16,14,2,0,0,0,0,6,14,12,14,0,0,0,0,7,12,8,15,0,0,0,0,2,5,8,12,0,0,0,0,0,0,15,1,0,0,0,0,0,5,13,0,0,0,0,0,1,13,14,9,8,2,0,0,2,14,15,12,16,10,0,2 0,0,2,12,16,10,0,0,0,0,11,12,11,16,4,0,0,0,1,1,1,16,4,0,0,0,0,0,8,14,2,0,0,0,0,4,15,5,0,0,0,0,8,16,5,0,0,0,0,5,16,16,14,9,1,0,0,0,3,8,10,15,3,0,2 0,0,12,16,12,2,0,0,0,12,15,9,15,12,0,0,0,12,7,0,8,16,0,0,0,3,1,0,8,14,0,0,0,0,0,4,16,6,0,0,0,0,1,13,15,1,0,0,0,0,11,16,13,12,8,0,0,0,11,12,12,15,14,0,2 0,1,13,14,6,0,0,0,0,3,16,9,15,4,0,0,0,2,16,8,15,4,0,0,0,0,0,0,16,4,0,0,0,0,0,6,12,0,0,0,0,0,0,14,6,0,0,0,0,0,14,16,9,6,4,0,0,2,11,12,12,12,12,0,2 0,0,0,7,15,6,0,0,0,0,10,13,14,13,0,0,0,2,13,0,12,6,0,0,0,0,2,3,12,1,0,0,0,0,1,15,3,0,0,0,0,2,13,8,0,0,0,0,0,10,16,14,12,8,0,0,0,2,4,7,9,14,0,0,2 0,0,9,16,13,2,0,0,0,3,16,9,12,12,0,0,0,4,16,0,0,16,0,0,0,1,8,0,2,16,0,0,0,0,0,0,5,13,0,0,0,0,0,1,11,9,0,0,0,0,4,11,16,10,7,0,0,0,9,12,8,9,13,0,2 0,1,6,12,15,4,0,0,0,6,16,12,12,16,3,0,0,12,8,0,5,16,2,0,0,1,2,0,12,13,0,0,0,0,0,6,16,2,0,0,0,0,0,16,9,0,0,0,0,0,7,16,8,8,7,0,0,0,3,11,12,12,7,0,2 0,4,16,16,12,1,0,0,0,8,14,5,15,6,0,0,0,3,5,0,13,8,0,0,0,0,0,3,15,7,0,0,0,0,1,13,13,0,0,0,0,0,11,15,2,0,0,0,0,6,16,9,4,4,1,0,0,4,15,16,16,16,15,1,2 0,2,14,16,13,1,0,0,0,10,14,10,15,8,0,0,0,5,2,0,12,12,0,0,0,0,0,4,16,6,0,0,0,0,1,15,10,0,0,0,0,0,11,14,1,0,0,0,0,4,16,8,1,0,0,0,0,2,15,16,16,16,8,0,2 0,0,6,15,16,5,0,0,0,5,16,13,15,11,0,0,0,10,12,1,16,9,0,0,0,3,3,9,16,2,0,0,0,0,4,16,7,0,0,0,0,0,11,13,0,0,0,0,0,0,12,14,8,8,2,0,0,0,5,16,16,16,11,0,2 0,0,9,13,15,10,0,0,0,2,15,5,6,16,6,0,0,0,3,0,2,16,6,0,0,0,0,0,11,13,0,0,0,0,0,8,14,1,0,0,0,0,5,15,3,0,0,0,0,0,12,6,0,0,0,0,0,0,8,16,16,12,0,0,2 0,0,5,16,14,3,0,0,0,0,9,15,10,11,0,0,0,0,0,4,8,13,0,0,0,0,0,0,14,10,0,0,0,0,0,4,16,5,0,0,0,0,0,13,16,5,0,0,0,0,4,16,16,16,14,8,0,0,4,16,12,8,9,13,2 0,0,9,16,16,10,0,0,0,0,15,13,11,16,1,0,0,0,3,1,13,13,0,0,0,0,0,5,16,5,0,0,0,0,1,15,11,0,0,0,0,0,8,16,2,2,2,0,0,0,15,13,14,16,15,3,0,0,9,16,15,10,8,1,2 0,0,9,15,14,2,0,0,0,3,16,13,15,11,0,0,0,2,9,0,14,9,0,0,0,0,0,5,16,5,0,0,0,0,0,12,14,0,0,0,0,0,5,16,4,0,0,0,0,1,14,15,8,8,9,1,0,0,11,16,16,16,16,7,2 0,0,0,3,15,16,3,0,0,0,0,12,10,15,3,0,0,0,0,2,6,14,0,0,0,0,0,1,15,5,0,0,0,0,1,13,9,0,0,0,0,1,12,12,1,0,0,0,0,9,16,16,16,13,5,0,0,2,4,5,10,13,12,0,2 0,0,4,13,15,4,0,0,0,0,11,13,8,13,0,0,0,0,5,2,4,13,0,0,0,0,0,0,12,7,0,0,0,0,0,6,15,2,0,0,0,0,0,15,5,0,0,0,0,0,9,14,6,11,5,0,0,0,9,16,12,12,10,0,2 0,1,10,16,11,0,0,0,0,8,16,12,16,3,0,0,0,1,12,3,16,4,0,0,0,0,0,6,15,0,0,0,0,0,0,11,13,0,0,0,0,0,3,16,7,0,0,0,0,0,11,16,16,16,14,5,0,0,11,13,9,12,15,11,2 0,0,6,10,12,4,0,0,0,2,15,10,8,9,0,0,0,0,6,0,3,12,0,0,0,0,0,0,8,7,0,0,0,0,0,6,14,1,0,0,0,0,4,14,6,0,0,0,0,1,16,11,7,11,8,0,0,0,13,16,13,12,12,0,2 0,0,4,11,14,12,0,0,0,4,16,9,5,16,1,0,0,11,8,0,6,13,0,0,0,5,6,1,13,5,0,0,0,0,0,11,9,0,0,0,0,0,4,16,1,0,0,0,0,0,10,9,0,0,1,0,0,0,3,16,16,14,6,0,2 0,3,13,16,4,0,0,0,0,7,14,16,8,0,0,0,0,0,1,16,7,0,0,0,0,0,9,15,1,0,0,0,0,1,16,8,0,0,0,0,0,7,16,1,0,0,0,0,0,9,16,4,4,4,4,0,0,4,16,16,16,16,8,0,2 0,0,9,16,13,3,0,0,0,2,16,16,16,12,0,0,0,0,0,6,16,7,0,0,0,0,1,15,12,0,0,0,0,0,13,15,2,0,0,0,0,4,16,7,0,0,0,0,0,8,16,8,6,8,3,0,0,1,11,16,16,12,4,0,2 0,0,6,13,16,16,13,0,0,6,16,10,7,15,14,0,0,1,4,0,10,16,6,0,0,0,0,10,16,4,0,0,0,0,3,16,9,0,0,0,0,0,15,11,0,0,0,0,0,0,16,10,0,0,0,0,0,0,9,16,16,12,1,0,2 0,5,15,13,0,0,0,0,0,3,10,16,5,0,0,0,0,0,0,14,4,0,0,0,0,0,6,14,0,0,0,0,0,1,14,7,0,0,0,0,0,7,13,1,0,0,0,0,0,13,14,10,11,9,5,0,0,5,15,16,14,10,3,0,2 0,0,4,12,13,2,0,0,0,0,16,9,12,9,0,0,0,2,12,1,15,5,0,0,0,0,1,6,14,1,0,0,0,0,0,15,7,0,0,0,0,0,9,12,0,0,0,0,0,0,9,9,4,8,14,2,0,0,4,13,13,9,2,0,2 0,1,14,13,0,0,0,0,0,9,16,16,2,0,0,0,0,7,11,16,8,0,0,0,0,0,1,13,8,0,0,0,0,0,2,16,5,0,0,0,0,0,6,16,4,0,0,0,0,1,15,16,16,12,6,0,0,0,16,16,16,16,16,3,2 0,0,6,14,3,0,0,0,0,0,12,14,14,0,0,0,0,0,14,7,14,2,0,0,0,0,10,5,10,6,0,0,0,0,0,0,13,5,0,0,0,0,0,2,14,5,3,0,0,0,8,16,16,16,16,0,0,0,9,14,8,8,8,2,2 0,0,14,11,1,0,0,0,0,7,15,14,8,0,0,0,0,7,8,4,8,0,0,0,0,0,4,0,12,0,0,0,0,0,0,4,10,0,0,0,0,0,0,8,6,0,0,0,0,1,13,16,13,8,4,0,0,1,14,12,16,16,10,0,2 0,2,15,13,0,0,0,0,0,12,16,16,6,0,0,0,0,14,7,11,10,0,0,0,0,3,1,10,12,0,0,0,0,0,1,15,6,0,0,0,0,0,12,14,0,0,0,0,0,4,16,15,12,12,5,0,0,2,15,16,16,16,13,0,2 0,0,8,12,1,0,0,0,0,0,15,16,11,0,0,0,0,0,10,3,14,1,0,0,0,0,0,0,11,2,0,0,0,0,0,0,14,3,0,0,0,0,0,4,16,1,0,0,0,0,6,16,16,16,11,1,0,0,5,16,13,12,12,6,2 0,0,9,16,10,0,0,0,0,1,15,15,16,3,0,0,0,1,16,6,13,8,0,0,0,0,10,5,11,9,0,0,0,0,0,0,14,8,0,0,0,0,0,3,16,5,0,0,0,0,9,16,16,16,14,4,0,0,9,16,14,12,16,8,2 0,2,16,10,1,0,0,0,0,3,16,16,8,0,0,0,0,1,11,11,12,0,0,0,0,0,0,4,16,0,0,0,0,0,0,9,12,0,0,0,0,0,5,15,8,0,0,0,0,5,16,16,16,16,13,0,0,2,16,16,16,16,14,0,2 0,3,15,16,3,0,0,0,0,11,16,15,12,0,0,0,0,1,1,6,16,0,0,0,0,0,0,5,16,0,0,0,0,0,0,14,12,0,0,0,0,0,9,16,9,8,5,0,0,3,16,16,16,16,11,0,0,5,16,16,13,8,1,0,2 0,1,15,15,1,0,0,0,0,7,16,16,11,0,0,0,0,3,7,8,13,0,0,0,0,0,0,7,16,2,0,0,0,0,2,15,9,0,0,0,0,0,8,16,5,0,3,0,0,3,15,16,16,16,16,0,0,2,16,16,16,16,10,0,2 0,0,9,15,2,0,0,0,0,3,16,14,13,1,0,0,0,0,6,0,14,2,0,0,0,0,0,1,15,0,0,0,0,0,0,5,14,0,0,0,0,0,1,12,9,0,0,0,0,0,12,16,16,16,16,2,0,0,8,13,11,8,7,0,2 0,0,11,13,1,0,0,0,0,5,16,14,10,0,0,0,0,9,10,8,12,0,0,0,0,5,3,10,7,0,0,0,0,0,2,15,2,0,0,0,0,0,11,10,1,5,3,0,0,0,16,12,14,16,9,0,0,0,13,16,11,3,0,0,2 0,0,9,15,6,0,0,0,0,1,16,6,14,2,0,0,0,0,14,1,8,8,0,0,0,0,7,7,5,9,0,0,0,0,0,0,9,5,0,0,0,0,0,1,14,2,0,0,0,0,5,15,12,11,6,0,0,0,15,14,12,8,8,0,2 0,2,13,15,5,0,0,0,0,9,16,13,14,0,0,0,0,7,6,2,16,0,0,0,0,0,0,3,16,1,0,0,0,0,0,11,12,0,0,0,0,0,5,16,7,0,0,0,0,2,16,16,9,11,11,1,0,2,15,16,16,16,11,1,2 0,2,15,11,1,0,0,0,0,13,15,15,8,0,0,0,0,16,9,8,11,0,0,0,0,7,1,10,9,0,0,0,0,0,0,13,7,0,0,0,0,0,2,16,5,0,0,0,0,1,14,15,16,16,12,2,0,2,13,16,14,11,6,0,2 0,1,12,16,6,0,0,0,0,9,16,14,14,3,0,0,0,12,12,0,16,7,0,0,0,2,0,0,15,6,0,0,0,0,0,4,15,1,0,0,0,0,1,12,14,0,0,0,0,2,15,16,14,9,2,0,0,1,13,16,16,16,16,3,2 0,0,6,13,10,0,0,0,0,3,16,11,14,6,0,0,0,9,11,0,12,12,0,0,0,4,4,0,9,12,0,0,0,0,0,4,16,3,0,0,0,0,0,13,15,3,0,0,0,0,8,16,15,16,11,0,0,0,4,14,10,2,0,0,2 0,0,6,16,8,0,0,0,0,3,16,6,16,1,0,0,0,3,7,2,16,2,0,0,0,0,0,7,13,0,0,0,0,0,0,12,8,0,0,0,0,0,2,15,4,1,0,0,0,0,8,12,4,13,6,0,0,0,5,16,15,8,1,0,2 0,0,0,9,16,5,0,0,0,1,12,15,15,8,0,0,0,7,13,5,15,4,0,0,0,0,1,6,16,0,0,0,0,0,0,8,16,0,0,0,0,0,0,9,13,0,0,0,0,0,0,12,8,4,3,0,0,0,0,11,16,15,5,0,2 0,0,13,16,12,0,0,0,0,8,16,14,16,0,0,0,0,12,13,7,16,1,0,0,0,5,8,10,15,0,0,0,0,0,1,16,9,0,0,0,0,0,8,16,3,0,0,0,0,0,14,15,8,9,6,0,0,0,16,16,15,11,3,0,2 0,0,9,15,1,0,0,0,0,2,16,14,10,0,0,0,0,9,13,8,12,0,0,0,0,9,8,12,9,0,0,0,0,1,1,14,6,0,0,0,0,0,2,16,2,0,0,0,0,0,9,14,12,15,8,0,0,0,7,16,15,5,2,0,2 0,0,12,16,6,0,0,0,0,3,15,12,12,0,0,0,0,6,12,8,12,0,0,0,0,3,14,11,10,0,0,0,0,0,5,16,3,0,0,0,0,0,13,12,0,0,0,0,0,8,16,12,7,5,2,0,0,0,12,13,10,10,4,0,2 0,0,6,16,12,1,0,0,0,8,15,5,16,4,0,0,0,13,6,4,16,3,0,0,0,3,3,5,16,0,0,0,0,0,0,13,12,0,0,0,0,0,3,16,9,0,0,0,0,0,10,16,6,4,1,0,0,0,4,15,16,16,14,0,2 0,3,15,16,8,0,0,0,0,10,16,15,13,0,0,0,0,6,9,12,12,0,0,0,0,0,0,14,8,0,0,0,0,0,5,16,4,0,0,0,0,0,13,12,0,1,4,0,0,4,16,14,12,15,9,0,0,3,16,16,13,8,0,0,2 0,0,9,15,6,0,0,0,0,3,14,16,16,3,0,0,0,7,11,1,15,4,0,0,0,1,2,0,14,4,0,0,0,0,0,9,13,0,0,0,0,0,3,16,4,0,0,0,0,0,14,16,12,11,4,0,0,0,9,15,14,12,5,0,2 0,7,16,15,4,0,0,0,0,11,10,7,13,0,0,0,0,2,3,4,12,0,0,0,0,0,0,12,12,0,0,0,0,0,4,16,6,0,0,0,0,0,13,13,0,0,0,0,0,6,16,16,16,16,8,0,0,4,15,16,16,13,3,0,2 0,0,11,16,6,0,0,0,0,2,16,15,16,3,0,0,0,0,8,4,16,4,0,0,0,0,0,7,14,1,0,0,0,0,0,14,9,0,0,0,0,0,11,11,0,0,0,0,0,1,16,9,2,5,1,0,0,0,9,14,12,9,0,0,2 0,0,7,16,15,0,0,0,0,5,16,16,16,0,0,0,0,3,8,8,16,0,0,0,0,0,2,15,8,0,0,0,0,0,5,16,3,0,0,0,0,0,15,10,0,2,1,0,0,0,15,16,12,16,8,0,0,0,6,16,16,15,3,0,2 0,0,8,16,10,0,0,0,0,2,16,13,16,0,0,0,0,2,8,4,14,0,0,0,0,0,0,8,10,0,0,0,0,0,0,13,6,0,0,0,0,0,6,15,0,0,0,0,0,0,12,15,12,8,2,0,0,0,8,15,10,8,1,0,2 0,0,7,16,16,7,0,0,0,3,16,16,16,11,0,0,0,1,6,4,16,7,0,0,0,0,0,9,15,2,0,0,0,0,1,14,8,0,0,0,0,0,7,16,5,4,1,0,0,0,10,16,16,16,5,0,0,0,7,16,16,7,0,0,2 0,0,5,14,11,0,0,0,0,0,13,16,14,0,0,0,0,0,6,9,12,0,0,0,0,0,0,10,8,0,0,0,0,0,1,15,3,0,0,0,0,0,8,14,0,0,0,0,0,0,11,16,12,15,1,0,0,0,6,16,16,7,0,0,2 0,0,7,13,16,5,0,0,0,6,8,8,14,9,0,0,0,0,0,0,15,5,0,0,0,0,0,12,11,0,0,0,0,0,6,15,1,0,0,0,0,0,12,4,0,0,0,0,0,0,11,10,8,8,4,0,0,0,6,15,16,12,4,0,2 0,2,15,16,11,0,0,0,0,4,15,14,16,3,0,0,0,0,0,10,16,2,0,0,0,0,0,13,13,0,0,0,0,0,6,16,4,0,0,0,0,1,11,13,0,0,0,0,0,8,16,14,13,16,6,0,0,3,16,16,11,6,0,0,2 0,0,10,16,12,0,0,0,0,7,16,13,16,1,0,0,0,6,5,6,15,2,0,0,0,0,0,10,12,0,0,0,0,0,0,14,9,0,0,0,0,0,6,15,5,0,0,0,0,0,16,15,16,12,3,0,0,0,12,16,15,12,5,0,2 0,0,7,16,14,0,0,0,0,0,11,16,16,0,0,0,0,0,1,10,15,0,0,0,0,0,0,13,11,0,0,0,0,0,2,16,3,0,0,0,0,0,6,15,0,2,0,0,0,0,10,16,16,14,0,0,0,0,6,16,16,9,0,0,2 0,5,16,12,0,0,0,0,0,11,16,16,5,0,0,0,0,0,2,16,8,0,0,0,0,0,2,16,8,0,0,0,0,0,7,16,4,0,0,0,0,2,15,11,0,0,0,0,0,10,16,16,16,16,9,0,0,8,16,14,9,8,3,0,2 0,0,15,16,7,0,0,0,0,3,16,6,16,3,0,0,0,0,12,6,12,9,0,0,0,0,0,0,12,7,0,0,0,0,0,0,15,4,0,0,0,0,0,6,15,2,0,0,0,1,11,15,13,2,8,1,0,0,13,14,15,16,16,3,2 0,6,15,16,10,0,0,0,0,15,13,9,16,2,0,0,0,7,9,0,14,7,0,0,0,0,0,0,12,8,0,0,0,0,0,2,16,5,0,0,0,0,0,11,15,1,0,0,0,1,11,16,12,2,0,0,0,6,16,16,16,16,14,0,2 0,0,13,16,5,0,0,0,0,0,16,7,15,5,0,0,0,0,15,3,11,9,0,0,0,0,7,6,9,11,0,0,0,0,0,0,9,11,0,0,0,0,0,0,12,7,0,0,0,0,7,9,16,3,0,0,0,0,11,16,16,16,16,8,2 0,0,11,16,11,0,0,0,0,0,13,12,14,6,0,0,0,0,6,14,10,10,0,0,0,0,0,1,6,14,0,0,0,0,0,0,6,14,0,0,0,0,0,0,9,14,0,0,0,0,9,9,15,12,2,0,0,0,10,16,16,16,16,4,2 0,2,15,16,13,1,0,0,0,8,16,9,15,8,0,0,0,8,16,0,8,12,0,0,0,0,5,1,7,13,0,0,0,0,0,0,12,10,0,0,0,0,0,4,16,7,0,0,0,5,15,15,16,2,0,0,0,3,11,12,16,16,13,2,2 0,0,10,12,2,0,0,0,0,4,15,13,13,0,0,0,0,5,12,0,14,2,0,0,0,2,10,0,13,3,0,0,0,0,0,2,14,0,0,0,0,0,0,9,9,0,0,0,0,0,11,16,8,4,2,0,0,0,13,15,16,16,7,0,2 0,0,8,15,8,0,0,0,0,4,16,16,16,5,0,0,0,8,16,2,6,15,0,0,0,3,15,4,4,16,0,0,0,0,1,0,7,15,0,0,0,0,0,3,15,7,0,0,0,2,11,16,15,7,4,0,0,1,13,16,15,12,4,0,2 0,0,11,16,13,2,0,0,0,0,10,15,11,13,0,0,0,0,3,15,7,15,5,0,0,0,0,1,1,13,6,0,0,0,0,0,0,16,5,0,0,0,0,0,9,16,2,0,0,0,15,16,16,11,0,0,0,0,9,15,13,16,16,5,2 0,0,15,8,0,0,0,0,0,2,16,15,2,0,0,0,0,0,16,8,10,0,0,0,0,0,12,8,12,0,0,0,0,0,0,8,8,0,0,0,0,0,0,12,8,0,0,0,0,0,12,16,15,15,5,0,0,0,15,11,6,2,0,0,2 0,0,15,15,4,0,0,0,0,0,16,13,15,2,0,0,0,0,9,15,12,8,0,0,0,0,0,2,11,10,0,0,0,0,0,0,13,8,0,0,0,0,0,1,14,5,0,0,0,0,16,16,16,6,1,0,0,1,11,15,12,15,15,4,2 0,4,15,16,7,0,0,0,0,4,16,11,16,2,0,0,0,2,6,4,16,3,0,0,0,0,0,1,16,4,0,0,0,0,0,8,14,1,0,0,0,0,2,15,10,0,0,0,0,3,15,16,13,12,11,0,0,5,16,16,15,12,12,0,2 0,0,7,15,6,0,0,0,0,1,15,12,15,0,0,0,0,3,15,1,12,2,0,0,0,0,11,0,13,3,0,0,0,0,0,1,14,1,0,0,0,0,0,7,12,0,0,0,0,0,7,16,16,16,14,3,0,0,6,12,8,8,8,3,2 0,0,8,14,9,0,0,0,0,6,15,12,16,3,0,0,0,1,3,0,8,4,0,0,0,0,0,0,9,5,0,0,0,0,0,1,15,3,0,0,0,0,0,12,11,0,0,0,0,0,10,16,13,12,6,0,0,0,11,12,12,9,4,0,2 0,0,7,12,8,0,0,0,0,6,16,11,15,3,0,0,0,10,8,0,11,5,0,0,0,0,0,0,11,3,0,0,0,0,0,0,14,1,0,0,0,0,0,7,13,0,0,0,0,0,8,16,16,14,9,0,0,0,11,13,11,8,9,0,2 0,1,10,16,11,0,0,0,0,5,16,9,14,6,0,0,0,1,3,0,11,8,0,0,0,0,0,0,11,8,0,0,0,0,0,4,15,0,0,0,0,0,0,9,11,0,0,0,0,0,11,16,10,12,8,0,0,0,11,12,12,12,14,0,2 0,0,13,12,1,0,0,0,0,11,16,14,12,0,0,0,0,5,8,1,16,1,0,0,0,0,0,0,16,3,0,0,0,0,0,8,16,0,0,0,0,0,3,14,9,0,0,0,0,0,15,16,13,13,11,0,0,0,11,12,12,14,16,2,2 0,1,11,13,7,0,0,0,0,6,15,13,15,4,0,0,0,2,2,0,9,9,0,0,0,0,0,0,8,8,0,0,0,0,0,0,13,5,0,0,0,0,0,8,12,0,0,0,0,0,8,16,10,9,3,0,0,0,11,15,15,16,7,0,2 0,0,10,16,9,0,0,0,0,2,16,16,16,2,0,0,0,0,8,1,15,8,0,0,0,0,0,0,14,9,0,0,0,0,0,1,16,10,0,0,0,0,0,9,16,16,7,0,0,0,8,16,15,12,15,5,0,0,13,15,1,0,5,6,2 0,0,10,15,16,6,0,0,0,1,13,5,7,15,2,0,0,0,0,0,7,12,2,0,0,0,0,6,15,3,0,0,0,0,7,12,1,0,0,0,0,5,14,2,0,0,0,0,0,9,14,10,11,7,1,0,0,1,7,8,8,11,4,0,2 0,3,15,13,2,0,0,0,0,11,14,12,11,0,0,0,0,8,2,4,15,0,0,0,0,0,0,4,15,0,0,0,0,0,0,13,7,0,0,0,0,0,6,15,1,0,0,0,0,2,14,14,12,15,8,0,0,2,13,13,12,12,5,0,2 0,3,15,16,13,0,0,0,0,10,14,15,16,4,0,0,0,3,3,1,16,8,0,0,0,0,0,6,16,4,0,0,0,0,1,14,12,0,0,0,0,0,10,16,3,0,0,0,0,3,16,15,12,11,1,0,0,2,16,16,16,16,8,0,2 0,2,12,11,1,0,0,0,0,6,14,16,8,0,0,0,0,5,5,10,11,0,0,0,0,0,0,11,6,0,0,0,0,0,3,16,1,0,0,0,0,1,15,7,2,1,0,0,0,5,16,16,16,16,7,0,0,3,12,12,8,6,3,0,2 0,1,14,16,8,0,0,0,0,7,12,9,16,0,0,0,0,4,2,0,16,0,0,0,0,0,1,10,9,0,0,0,0,0,7,13,1,0,0,0,0,0,16,1,0,0,0,0,0,3,13,4,7,8,5,0,0,1,13,16,15,12,10,0,2 0,1,13,11,0,0,0,0,0,5,14,16,6,0,0,0,0,7,3,12,6,0,0,0,0,0,0,14,0,0,0,0,0,0,6,12,0,0,0,0,0,2,15,4,0,0,0,0,0,4,16,9,8,10,5,0,0,1,13,16,16,15,7,0,2 0,0,7,12,12,0,0,0,0,9,14,10,14,7,0,0,0,1,0,0,12,12,0,0,0,0,0,5,16,5,0,0,0,0,2,15,10,0,0,0,0,0,10,14,1,0,0,0,0,0,12,16,8,11,10,0,0,0,8,14,13,7,0,0,2 0,0,8,13,12,2,0,0,0,0,10,12,13,10,0,0,0,0,1,0,8,12,0,0,0,0,0,0,9,12,0,0,0,0,0,3,16,5,0,0,0,0,1,13,12,2,3,0,0,0,12,16,16,16,9,0,0,0,10,12,9,2,0,0,2 0,0,6,13,15,5,0,0,0,7,16,11,11,16,0,0,0,10,12,0,3,16,2,0,0,4,3,0,5,13,0,0,0,0,0,0,14,6,0,0,0,0,0,6,14,1,0,0,0,0,2,16,14,16,13,0,0,0,8,16,12,8,0,0,2 0,0,9,15,16,12,1,0,0,0,9,10,14,16,9,0,0,0,0,0,2,16,10,0,0,0,0,0,8,15,2,0,0,0,0,10,15,4,0,0,0,0,6,16,6,0,0,0,0,0,15,16,12,12,0,0,0,0,14,16,13,5,0,0,2 0,0,7,15,15,4,0,0,0,9,16,10,16,10,0,0,0,0,3,0,14,12,0,0,0,0,0,2,16,5,0,0,0,0,1,14,11,0,0,0,0,0,12,16,0,0,0,0,0,0,12,16,5,4,3,0,0,0,5,14,16,15,8,0,2 0,0,5,14,16,8,0,0,0,3,16,14,15,15,0,0,0,0,8,3,14,11,0,0,0,0,0,9,15,3,0,0,0,0,3,15,8,0,0,0,0,0,10,14,1,0,0,0,0,0,16,13,4,9,8,0,0,0,5,14,15,12,3,0,2 0,0,15,8,0,0,0,0,0,6,15,16,3,0,0,0,0,6,9,13,5,0,0,0,0,0,1,8,8,0,0,0,0,0,0,13,7,0,0,0,0,0,5,15,4,0,2,0,0,4,16,16,16,16,10,0,0,1,8,8,11,12,13,0,2 0,2,14,14,3,0,0,0,0,8,15,15,11,0,0,0,0,9,14,10,14,2,0,0,0,1,7,8,16,0,0,0,0,0,0,11,14,0,0,0,0,0,0,16,10,0,0,0,0,2,13,16,13,10,7,0,0,4,16,16,16,16,15,0,2 0,0,9,15,5,0,0,0,0,7,16,13,14,0,0,0,0,14,10,4,16,0,0,0,0,7,6,2,16,1,0,0,0,0,0,6,13,0,0,0,0,0,0,9,11,0,0,0,0,0,5,16,15,9,4,0,0,0,10,14,11,15,16,2,2 0,2,15,15,2,0,0,0,0,10,11,16,6,0,0,0,0,9,5,12,9,0,0,0,0,0,0,13,8,0,0,0,0,0,1,16,3,0,0,0,0,0,9,13,0,0,0,0,0,1,14,16,15,10,5,0,0,5,15,8,12,15,12,0,2 0,7,16,15,2,0,0,0,0,13,10,12,11,0,0,0,0,13,4,8,12,0,0,0,0,0,1,7,13,0,0,0,0,0,1,14,8,0,0,0,0,0,5,16,1,0,0,0,0,1,13,15,12,11,7,0,0,5,16,16,15,14,16,1,2 0,3,15,16,12,1,0,0,0,12,14,12,16,7,0,0,0,12,6,0,14,10,0,0,0,1,1,1,16,8,0,0,0,0,0,10,15,1,0,0,0,0,5,16,7,0,0,0,0,3,14,16,9,6,4,0,0,3,15,16,16,16,12,0,2 0,3,16,9,0,0,0,0,0,7,15,16,2,0,0,0,0,8,9,16,4,0,0,0,0,2,4,13,7,0,0,0,0,0,0,14,7,0,0,0,0,0,1,15,7,0,0,0,0,1,14,16,16,13,9,1,0,4,16,11,8,8,11,2,2 0,0,14,8,0,0,0,0,0,3,16,15,4,0,0,0,0,1,10,14,9,0,0,0,0,0,0,9,13,0,0,0,0,0,0,8,13,0,0,0,0,0,1,12,15,3,0,0,0,0,11,16,16,16,12,2,0,0,13,14,2,1,3,1,2 0,0,12,15,6,0,0,0,0,8,14,7,16,3,0,0,0,8,6,0,8,8,0,0,0,5,8,0,8,10,0,0,0,0,1,0,12,9,0,0,0,0,0,7,15,3,0,0,0,0,7,16,12,5,7,0,0,0,11,16,16,16,15,0,2 0,0,13,13,4,0,0,0,0,4,14,7,14,0,0,0,0,7,8,0,10,4,0,0,0,1,4,0,13,3,0,0,0,0,0,1,15,0,0,0,0,0,0,11,9,0,0,0,0,0,11,16,12,12,4,0,0,0,14,14,12,12,6,0,2 0,0,9,13,3,0,0,0,0,1,15,14,12,0,0,0,0,0,16,0,16,2,0,0,0,0,3,2,16,2,0,0,0,0,0,2,16,3,0,0,0,0,2,11,15,2,0,0,0,0,13,16,14,8,7,0,0,0,8,13,12,12,13,0,2 0,0,0,12,16,10,0,0,0,0,10,15,15,13,0,0,0,0,9,6,16,7,0,0,0,0,0,8,15,3,0,0,0,0,5,16,6,0,0,0,0,8,15,16,3,0,0,0,5,16,16,16,16,6,0,0,1,4,4,9,16,11,0,0,2 0,2,15,16,9,0,0,0,0,7,15,12,16,2,0,0,0,9,9,2,16,2,0,0,0,1,0,7,16,0,0,0,0,0,0,14,10,0,0,0,0,1,12,15,2,0,0,0,0,8,16,14,12,12,3,0,0,3,14,16,16,16,7,0,2 0,1,13,10,0,0,0,0,0,7,16,16,7,0,0,0,0,3,13,8,16,0,0,0,0,0,1,5,16,2,0,0,0,0,0,5,16,3,0,0,0,0,4,13,15,1,0,0,0,4,16,16,16,16,8,0,0,2,15,16,14,16,16,5,2 0,0,6,16,2,0,0,0,0,3,16,13,11,0,0,0,0,12,14,2,14,0,0,0,0,2,2,0,16,0,0,0,0,0,0,2,16,1,0,0,0,0,0,10,14,4,3,0,0,0,5,16,16,16,16,0,0,0,6,15,10,8,11,2,2 0,1,14,15,2,0,0,0,0,7,16,16,7,0,0,0,0,14,9,12,11,0,0,0,0,7,4,13,10,0,0,0,0,0,4,16,4,0,0,0,0,0,10,15,2,0,0,0,0,3,16,14,12,12,10,0,0,0,12,16,16,16,16,3,2 0,0,2,12,16,4,0,0,0,1,13,15,11,12,0,0,0,8,16,8,4,16,0,0,0,2,5,0,6,13,0,0,0,0,0,0,11,8,0,0,0,0,0,7,16,8,1,0,0,0,1,16,16,16,12,0,0,0,2,8,5,6,13,0,2 0,0,6,16,6,0,0,0,0,2,16,14,15,0,0,0,0,9,13,0,14,3,0,0,0,4,6,1,16,5,0,0,0,0,0,8,16,3,0,0,0,0,3,16,14,0,2,0,0,0,13,16,16,16,15,0,0,0,7,14,12,12,12,1,2 0,0,0,13,13,1,0,0,0,0,11,14,15,8,0,0,0,6,16,3,10,7,0,0,0,8,16,4,12,8,0,0,0,1,3,4,15,1,0,0,0,0,2,13,12,0,0,0,0,0,11,16,16,12,7,0,0,0,3,9,8,11,13,0,2 0,0,10,16,5,0,0,0,0,6,16,13,11,0,0,0,0,7,9,4,12,0,0,0,0,0,0,5,15,0,0,0,0,0,0,8,11,0,0,0,0,0,3,15,8,0,0,0,0,4,16,16,10,8,7,1,0,0,7,11,16,16,15,2,2 0,0,4,14,15,5,0,0,0,7,14,7,6,16,0,0,0,10,6,0,0,11,3,0,0,4,2,0,1,14,0,0,0,0,0,0,10,7,0,0,0,0,0,5,13,1,0,0,0,0,6,16,8,0,0,0,0,0,5,9,12,12,16,2,2 0,5,16,15,5,0,0,0,0,3,9,13,15,1,0,0,0,0,0,1,15,6,0,0,0,0,0,2,16,4,0,0,0,0,0,10,14,0,0,0,0,0,3,16,7,0,0,0,0,0,12,16,13,10,7,0,0,7,16,14,12,12,9,0,2 0,6,16,15,4,0,0,0,0,8,15,14,14,1,0,0,0,0,2,2,16,6,0,0,0,0,0,1,16,7,0,0,0,0,0,6,15,1,0,0,0,0,1,15,8,0,0,0,0,1,12,16,9,12,8,0,0,10,16,16,15,12,7,0,2 0,2,14,16,14,2,0,0,0,9,16,5,12,11,0,0,0,2,11,0,8,16,0,0,0,0,0,0,7,16,0,0,0,0,0,1,13,10,0,0,0,0,0,5,16,5,0,0,0,0,7,16,13,8,8,1,0,2,16,16,16,13,11,1,2 0,3,16,15,2,0,0,0,0,4,14,10,11,0,0,0,0,2,8,4,16,0,0,0,0,0,0,0,16,2,0,0,0,0,0,4,15,0,0,0,0,0,0,9,13,0,0,0,0,0,7,16,14,12,11,0,0,3,16,16,12,9,7,0,2 0,1,15,6,0,0,0,0,0,7,16,16,0,0,0,0,0,11,14,16,0,0,0,0,0,2,8,15,0,0,0,0,0,0,14,10,0,0,0,0,0,5,16,3,0,0,0,0,0,10,16,16,16,12,5,0,0,3,15,16,12,14,14,0,2 0,0,11,13,4,0,0,0,0,7,16,16,15,0,0,0,0,7,11,5,15,0,0,0,0,0,2,10,11,0,0,0,0,0,2,15,2,0,0,0,0,0,11,8,0,2,3,0,0,1,16,13,14,16,12,0,0,1,12,13,10,5,0,0,2 0,0,12,7,0,0,0,0,0,3,16,16,3,0,0,0,0,7,11,8,6,0,0,0,0,3,14,7,8,0,0,0,0,0,0,14,3,0,0,0,0,0,4,15,0,0,0,0,0,2,15,16,16,13,9,0,0,0,12,16,16,16,7,0,2 0,1,13,16,10,0,0,0,0,2,15,13,16,2,0,0,0,0,5,1,14,5,0,0,0,0,0,0,14,7,0,0,0,0,0,4,16,3,0,0,0,0,0,13,13,1,0,0,0,1,14,16,13,12,11,1,0,1,15,16,14,10,8,1,2 0,3,15,16,7,0,0,0,0,8,15,14,12,0,0,0,0,1,3,3,14,0,0,0,0,0,0,5,15,0,0,0,0,0,0,11,10,0,0,0,0,0,5,16,6,0,1,0,0,5,16,16,13,16,15,0,0,4,16,16,14,12,9,0,2 0,0,9,13,4,0,0,0,0,4,15,9,14,1,0,0,0,2,7,0,10,6,0,0,0,0,0,0,9,5,0,0,0,0,0,3,16,2,0,0,0,0,0,14,13,0,0,0,0,0,11,16,9,8,14,0,0,0,10,16,12,12,7,1,2 0,3,16,15,3,0,0,0,0,2,10,12,10,0,0,0,0,0,0,7,12,0,0,0,0,0,0,8,12,0,0,0,0,0,1,15,6,0,0,0,0,0,5,15,1,0,0,0,0,2,15,12,7,4,0,0,0,2,15,16,16,16,16,3,2 0,0,7,13,3,0,0,0,0,2,16,16,10,0,0,0,0,6,14,8,14,0,0,0,0,7,9,4,16,1,0,0,0,0,0,7,12,0,0,0,0,0,4,15,10,6,1,0,0,0,8,16,16,16,6,0,0,0,5,11,12,15,3,0,2 0,3,14,14,2,0,0,0,0,10,15,14,11,0,0,0,0,11,7,5,16,0,0,0,0,1,2,0,16,3,0,0,0,0,0,7,12,0,0,0,0,0,1,12,15,7,0,0,0,1,15,16,16,16,11,0,0,1,10,10,5,6,7,0,2 0,0,5,14,7,1,0,0,0,2,15,14,16,10,0,0,0,2,16,6,12,16,0,0,0,1,11,5,10,16,0,0,0,0,0,0,16,9,0,0,0,0,3,5,16,5,0,0,0,0,13,16,15,7,5,0,0,0,5,8,10,13,13,0,2 0,0,9,16,7,0,0,0,0,0,13,15,14,7,0,0,0,0,15,10,7,15,0,0,0,0,5,4,5,13,0,0,0,0,0,0,8,12,0,0,0,0,1,4,13,10,0,0,0,0,12,16,16,13,8,1,0,0,4,12,9,9,12,5,2 0,1,15,15,2,0,0,0,0,9,15,12,10,0,0,0,0,8,10,8,12,0,0,0,0,1,1,5,15,0,0,0,0,0,0,6,14,0,0,0,0,0,0,10,14,1,0,0,0,0,11,16,16,16,10,0,0,0,14,13,8,10,7,0,2 0,1,10,14,2,0,0,0,0,4,16,14,6,0,0,0,0,5,9,8,8,0,0,0,0,0,1,13,7,0,0,0,0,0,3,16,1,0,0,0,0,0,6,14,0,2,2,0,0,0,16,16,16,16,12,0,0,0,15,13,10,9,8,0,2 0,0,9,14,7,1,0,0,0,6,16,10,15,5,0,0,0,7,15,0,12,8,0,0,0,0,0,3,16,4,0,0,0,0,0,7,14,0,0,0,0,0,2,16,5,0,1,0,0,0,8,15,13,16,15,2,0,0,8,14,11,6,10,2,2 0,0,3,12,11,1,0,0,0,0,12,15,11,10,0,0,0,0,12,7,2,14,0,0,0,0,0,0,3,16,0,0,0,0,0,0,13,11,0,0,0,0,0,10,15,1,0,0,0,0,5,16,12,9,8,1,0,0,3,11,15,12,16,4,2 0,0,5,15,4,0,0,0,0,0,15,14,15,0,0,0,0,2,15,3,14,2,0,0,0,0,3,0,14,4,0,0,0,0,0,2,15,0,0,0,0,0,0,10,10,0,0,0,0,0,6,16,8,10,14,0,0,0,7,12,12,12,12,1,2 0,2,13,10,0,0,0,0,0,8,15,14,7,0,0,0,0,8,5,4,12,0,0,0,0,2,3,2,15,0,0,0,0,0,0,4,9,0,0,0,0,0,0,11,9,0,0,0,0,0,9,16,14,12,10,0,0,0,16,13,12,14,11,0,2 0,0,13,14,2,0,0,0,0,5,16,15,10,0,0,0,0,4,8,0,16,0,0,0,0,0,2,3,12,0,0,0,0,0,0,5,11,0,0,0,0,0,2,13,6,0,0,0,0,0,13,16,14,15,14,0,0,0,8,8,8,12,15,0,2 0,2,12,13,1,0,0,0,0,10,15,14,11,0,0,0,0,12,9,5,12,0,0,0,0,4,5,4,16,0,0,0,0,0,0,9,9,0,0,0,0,0,1,13,8,0,1,0,0,1,16,16,14,14,11,0,0,2,13,12,12,12,6,0,2 0,0,11,16,6,0,0,0,0,9,15,14,16,0,0,0,0,10,12,3,16,2,0,0,0,5,6,0,15,2,0,0,0,0,0,7,11,0,0,0,0,0,4,16,8,4,1,0,0,0,11,16,16,16,9,0,0,0,8,12,10,13,7,0,2 0,0,9,11,0,0,0,0,0,7,16,16,8,0,0,0,0,8,11,7,11,0,0,0,0,2,4,8,11,0,0,0,0,0,1,14,3,0,0,0,0,0,9,12,0,0,0,0,0,0,14,16,15,14,7,0,0,0,8,12,12,15,10,0,2 0,0,14,11,1,0,0,0,0,11,14,15,8,0,0,0,0,6,6,1,16,0,0,0,0,0,0,2,15,0,0,0,0,0,0,5,15,0,0,0,0,0,0,8,11,0,0,0,0,0,8,16,13,8,7,0,0,0,11,16,15,13,15,1,2 0,0,6,12,13,5,0,0,0,0,14,9,8,16,2,0,0,0,5,1,6,15,3,0,0,0,0,3,16,8,0,0,0,0,2,14,8,0,0,0,0,0,11,13,0,0,0,0,0,1,16,5,0,0,0,0,0,0,9,15,13,10,8,0,2 0,0,5,9,16,13,4,0,0,1,15,8,5,14,12,0,0,0,4,0,4,14,8,0,0,0,0,2,14,10,0,0,0,0,0,12,14,0,0,0,0,0,7,14,3,0,0,0,0,0,15,10,0,0,0,0,0,0,4,12,12,6,0,0,2 0,1,10,12,14,9,0,0,0,11,11,5,5,16,4,0,0,4,3,0,2,16,2,0,0,0,0,0,12,9,0,0,0,0,1,13,10,0,0,0,0,0,9,13,0,0,0,0,0,2,16,4,0,0,0,0,0,1,13,15,12,2,0,0,2 0,2,15,16,13,2,0,0,0,3,15,10,14,9,0,0,0,0,0,0,14,10,0,0,0,0,0,10,16,2,0,0,0,0,2,16,10,0,0,0,0,0,12,13,1,0,0,0,0,2,16,12,8,10,13,2,0,2,13,16,16,16,16,3,2 0,0,4,10,13,3,0,0,0,0,16,15,14,11,0,0,0,0,5,1,10,12,0,0,0,0,0,2,16,5,0,0,0,0,0,11,13,0,0,0,0,0,4,16,3,0,0,0,0,0,9,14,4,4,4,1,0,0,4,14,16,15,12,5,2 0,0,11,14,10,3,0,0,0,0,6,8,12,15,3,0,0,0,0,0,6,16,5,0,0,0,0,6,15,12,1,0,0,0,5,16,13,1,0,0,0,0,15,13,0,0,0,0,0,5,16,8,4,2,0,0,0,1,10,16,16,10,0,0,2 0,1,8,12,15,6,0,0,0,2,12,8,13,15,2,0,0,0,0,0,13,16,1,0,0,0,0,6,16,10,0,0,0,0,6,16,11,0,0,0,0,0,13,16,3,0,0,0,0,0,16,12,2,6,0,0,0,0,8,14,16,10,2,0,2 0,0,4,12,7,0,0,0,0,0,13,11,12,4,0,0,0,0,8,0,3,10,0,0,0,0,0,0,2,13,0,0,0,0,0,0,9,8,0,0,0,0,0,3,16,1,0,0,0,0,8,16,15,14,14,1,0,0,6,12,12,10,10,2,2 0,3,14,14,2,0,0,0,0,11,16,16,13,0,0,0,0,3,2,4,14,6,0,0,0,0,0,0,13,8,0,0,0,0,0,7,15,2,0,0,0,0,6,15,7,0,0,0,0,4,16,16,10,8,5,0,0,2,11,15,16,15,12,0,2 0,2,13,13,1,0,0,0,0,3,14,13,13,0,0,0,0,0,2,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,9,8,0,0,0,0,0,4,15,3,0,0,0,0,2,16,16,9,7,6,0,0,0,11,12,15,16,12,0,2 0,1,9,15,5,0,0,0,0,4,16,15,13,0,0,0,0,1,2,1,15,2,0,0,0,0,0,0,16,0,0,0,0,0,0,5,13,0,0,0,0,0,4,15,3,0,1,0,0,0,12,16,12,14,4,0,0,0,11,16,13,9,2,0,2 0,0,12,16,9,0,0,0,0,6,16,12,15,5,0,0,0,7,16,7,10,8,0,0,0,1,11,4,10,9,0,0,0,0,0,1,16,3,0,0,0,0,0,8,14,1,0,0,0,1,12,16,14,12,6,0,0,1,15,16,16,16,16,3,2 0,0,12,16,8,0,0,0,0,7,16,10,16,2,0,0,0,10,12,0,15,7,0,0,0,5,8,0,15,6,0,0,0,0,0,1,16,2,0,0,0,0,0,8,12,0,0,0,0,0,6,16,9,4,2,0,0,0,12,16,16,16,9,0,2 0,3,15,13,0,0,0,0,0,12,14,16,6,0,0,0,0,14,9,10,9,0,0,0,0,2,1,12,8,0,0,0,0,0,0,16,2,0,0,0,0,0,6,15,0,0,0,0,0,1,13,14,12,12,11,0,0,4,16,16,16,15,5,0,2 0,0,12,16,6,0,0,0,0,7,12,4,14,0,0,0,0,11,14,0,6,4,0,0,0,6,8,0,7,4,0,0,0,0,0,0,10,3,0,0,0,0,0,5,13,0,0,0,0,0,3,14,10,0,0,0,0,0,14,13,12,15,13,1,2 0,2,14,16,10,1,0,0,0,15,15,8,16,8,0,0,0,9,10,0,13,10,0,0,0,0,1,5,16,3,0,0,0,0,0,13,14,0,0,0,0,0,4,16,5,0,0,0,0,1,14,16,13,8,4,0,0,2,13,16,16,16,16,5,2 0,2,11,16,5,0,0,0,0,11,16,16,9,0,0,0,0,2,6,16,9,0,0,0,0,0,8,16,5,0,0,0,0,0,14,11,0,0,0,0,0,6,16,5,0,0,2,0,0,6,16,14,13,15,12,0,0,0,15,16,13,11,3,0,2 0,0,4,15,16,7,0,0,0,0,13,12,16,9,0,0,0,0,2,1,16,7,0,0,0,0,0,5,15,3,0,0,0,0,0,14,10,0,0,0,0,0,6,16,2,0,0,0,0,0,9,16,11,7,0,0,0,0,5,16,16,10,0,0,2 0,0,13,16,7,0,0,0,0,2,16,16,15,0,0,0,0,0,4,14,16,0,0,0,0,0,0,12,13,0,0,0,0,0,0,15,12,0,0,0,0,0,11,16,1,1,1,0,0,0,16,16,16,16,6,0,0,0,13,16,16,12,0,0,2 0,2,11,14,4,0,0,0,0,0,16,13,16,4,0,0,0,0,0,3,16,3,0,0,0,0,0,11,12,0,0,0,0,0,4,16,5,0,0,0,0,1,15,12,0,0,0,0,0,5,16,10,8,11,2,0,0,2,14,16,13,9,5,0,2 0,0,6,16,15,3,0,0,0,4,16,13,16,6,0,0,0,3,6,0,16,5,0,0,0,0,0,6,16,1,0,0,0,0,0,14,11,0,0,0,0,0,8,14,1,0,0,0,0,0,12,14,8,6,2,0,0,0,8,16,16,16,3,0,2 0,0,12,13,3,0,0,0,0,4,16,14,10,0,0,0,0,2,4,6,10,0,0,0,0,0,0,9,11,0,0,0,0,0,2,15,1,0,0,0,0,0,10,11,0,0,0,0,0,4,16,10,6,4,3,0,0,1,10,15,16,16,9,0,2 0,1,12,14,2,0,0,0,0,8,16,16,7,0,0,0,0,2,8,10,8,0,0,0,0,0,0,13,8,0,0,0,0,0,3,16,2,0,0,0,0,0,14,8,0,0,0,0,0,0,16,10,9,10,6,0,0,2,15,13,12,8,1,0,2 0,0,15,15,2,0,0,0,0,4,16,11,13,1,0,0,0,3,15,5,15,6,0,0,0,0,3,1,8,12,0,0,0,0,0,0,6,15,0,0,0,0,0,0,9,12,0,0,0,0,5,9,16,10,1,0,0,0,13,16,16,16,16,6,2 0,0,7,16,14,2,0,0,0,0,13,13,9,13,0,0,0,0,11,10,0,14,5,0,0,0,5,14,0,12,9,0,0,0,0,0,0,12,8,0,0,0,0,0,4,16,5,0,0,0,2,8,14,15,0,0,0,0,8,16,16,16,16,4,2 0,0,8,16,10,1,0,0,0,7,16,11,15,8,0,0,0,15,13,0,11,12,0,0,0,10,7,0,11,10,0,0,0,0,0,1,15,8,0,0,0,0,0,9,15,1,0,0,0,0,7,16,10,6,8,3,0,0,9,16,16,16,16,7,2 0,2,15,16,7,0,0,0,0,7,16,13,16,3,0,0,0,3,16,1,16,7,0,0,0,0,2,5,16,3,0,0,0,0,0,11,13,0,0,0,0,0,3,15,7,0,0,0,0,0,13,16,12,10,7,0,0,2,15,16,16,16,16,5,2 0,1,13,16,12,1,0,0,0,6,16,11,14,7,0,0,0,5,16,0,10,10,0,0,0,0,2,0,13,10,0,0,0,0,0,2,16,7,0,0,0,0,0,11,15,1,0,0,0,0,11,16,16,12,12,2,0,0,15,16,12,12,12,3,2 0,0,10,13,2,0,0,0,0,6,16,14,9,0,0,0,0,3,12,2,13,0,0,0,0,0,0,4,14,0,0,0,0,0,0,8,14,0,0,0,0,0,1,15,6,0,0,0,0,0,10,16,9,8,10,2,0,0,6,12,13,12,11,2,2 0,0,8,14,11,3,0,0,0,4,16,9,13,10,0,0,0,2,5,0,8,11,0,0,0,0,0,0,12,8,0,0,0,0,0,5,15,0,0,0,0,0,8,16,6,0,0,0,0,4,16,15,8,4,1,0,0,0,9,12,14,16,5,0,2 0,1,11,16,15,1,0,0,0,5,16,16,16,5,0,0,0,0,3,8,16,2,0,0,0,0,0,15,11,0,0,0,0,0,7,16,6,0,0,0,0,0,14,12,0,0,0,0,0,1,16,15,9,8,2,0,0,1,12,16,16,16,3,0,2 0,0,7,14,5,0,0,0,0,3,16,15,12,0,0,0,0,0,12,0,12,0,0,0,0,0,1,0,12,2,0,0,0,0,0,1,16,2,0,0,0,0,1,10,15,3,0,0,0,0,13,16,16,15,7,0,0,0,9,6,3,4,13,1,2 0,0,8,15,8,0,0,0,0,2,16,12,16,1,0,0,0,3,9,0,14,2,0,0,0,0,1,3,13,0,0,0,0,0,0,10,7,0,0,0,0,0,5,14,1,0,0,0,0,0,13,16,12,11,1,0,0,0,6,9,12,13,3,0,2 0,1,10,13,5,0,0,0,0,10,14,12,14,0,0,0,0,5,4,2,15,0,0,0,0,0,0,7,10,0,0,0,0,0,2,15,4,0,0,0,0,0,6,15,0,0,0,0,0,1,16,13,12,13,12,0,0,0,15,12,12,10,4,0,2 0,0,9,16,15,5,0,0,0,0,15,14,16,9,0,0,0,0,5,1,13,10,0,0,0,0,0,0,13,7,0,0,0,0,0,8,13,0,0,0,0,0,3,15,7,1,0,0,0,0,10,16,16,15,0,0,0,0,13,16,12,12,0,0,2 0,1,6,14,12,0,0,0,0,10,15,12,16,2,0,0,0,7,4,4,16,0,0,0,0,0,0,9,10,0,0,0,0,0,3,16,1,0,0,0,0,0,9,10,0,0,0,0,0,0,14,12,8,11,14,0,0,0,5,16,15,9,8,1,2 0,0,6,15,16,12,1,0,0,3,16,9,8,15,7,0,0,3,3,0,0,15,6,0,0,0,0,0,6,15,2,0,0,0,0,1,15,6,0,0,0,0,1,12,10,0,0,0,0,0,8,16,13,13,6,0,0,0,6,14,12,4,0,0,2 0,1,13,16,10,0,0,0,0,2,14,15,16,2,0,0,0,0,0,8,16,4,0,0,0,0,0,13,16,1,0,0,0,0,1,16,11,0,0,0,0,0,11,16,3,5,1,0,0,1,15,16,14,16,4,0,0,1,13,16,15,5,0,0,2 0,0,7,12,14,10,1,0,0,6,16,11,10,16,4,0,0,3,5,0,8,13,1,0,0,0,0,5,15,5,0,0,0,0,2,15,11,0,0,0,0,0,13,14,1,0,0,0,0,1,15,11,6,8,3,0,0,0,7,14,12,12,6,0,2 0,1,8,14,16,8,0,0,0,3,12,9,11,14,0,0,0,0,0,0,7,14,0,0,0,0,0,0,14,11,0,0,0,0,0,9,13,2,0,0,0,0,7,16,3,0,0,0,0,0,15,16,8,8,3,0,0,0,9,13,12,8,3,0,2 0,1,11,16,13,3,0,0,0,11,16,11,16,12,0,0,0,4,5,0,13,15,0,0,0,0,0,0,16,10,0,0,0,0,0,8,15,1,0,0,0,0,5,16,5,0,0,0,0,0,14,16,10,8,5,0,0,0,13,16,13,12,5,0,2 0,0,7,16,16,10,0,0,0,4,16,13,16,15,0,0,0,0,8,2,16,12,0,0,0,0,0,8,16,6,0,0,0,0,4,16,9,0,0,0,0,1,13,15,2,0,0,0,0,1,16,15,12,12,5,0,0,0,9,16,14,7,1,0,2 0,0,3,9,13,2,0,0,0,6,16,16,16,8,0,0,0,9,5,3,16,6,0,0,0,0,0,7,15,1,0,0,0,0,0,13,10,0,0,0,0,0,6,16,3,0,0,0,0,0,8,16,14,12,7,0,0,0,3,13,16,14,8,0,2 0,0,2,13,16,3,0,0,0,4,15,14,15,12,0,0,0,4,7,1,14,7,0,0,0,0,0,6,16,3,0,0,0,0,4,16,5,0,0,0,0,1,13,10,0,0,0,0,0,0,14,12,5,8,3,0,0,0,3,12,16,10,2,0,2 0,0,6,12,8,0,0,0,0,7,16,8,15,1,0,0,0,9,4,0,13,4,0,0,0,0,0,1,16,1,0,0,0,0,0,6,10,0,0,0,0,0,0,12,8,0,0,0,0,0,6,15,6,4,6,0,0,0,7,16,15,12,12,0,2 0,4,16,9,0,0,0,0,0,9,16,16,3,0,0,0,0,12,8,16,4,0,0,0,0,5,2,16,5,0,0,0,0,0,0,16,4,0,0,0,0,0,3,16,4,0,0,0,0,5,15,16,13,12,8,0,0,4,16,16,16,16,12,0,2 0,5,16,5,0,0,0,0,0,9,16,14,0,0,0,0,0,12,14,14,0,0,0,0,0,7,13,12,0,0,0,0,0,0,11,8,0,3,1,0,0,0,16,8,7,14,11,0,0,8,16,16,16,16,11,0,0,6,16,16,11,6,1,0,2 0,2,15,16,5,0,0,0,0,6,16,10,10,0,0,0,0,3,15,6,12,0,0,0,0,0,1,7,13,0,0,0,0,0,0,13,7,0,0,0,0,0,3,15,3,0,0,0,0,0,14,15,10,8,4,0,0,3,16,16,16,16,16,3,2 0,1,10,15,6,0,0,0,0,7,13,6,13,2,0,0,0,7,8,0,13,4,0,0,0,0,1,0,13,4,0,0,0,0,0,3,14,0,0,0,0,0,0,11,10,0,0,0,0,0,7,16,5,4,2,0,0,0,15,16,14,16,15,0,2 0,1,13,12,1,0,0,0,0,5,13,12,9,0,0,0,0,1,11,4,16,0,0,0,0,0,3,1,16,3,0,0,0,0,0,2,16,0,0,0,0,0,0,5,15,1,0,0,0,0,7,16,11,4,5,0,0,0,15,16,16,16,16,0,2 0,3,14,15,5,0,0,0,0,8,11,7,15,2,0,0,0,9,4,0,16,4,0,0,0,1,3,0,14,8,0,0,0,0,0,4,15,0,0,0,0,0,0,12,10,0,0,0,0,1,14,16,10,10,6,0,0,2,14,15,13,16,12,0,2 0,0,11,13,2,0,0,0,0,5,13,9,14,0,0,0,0,4,8,0,12,8,0,0,0,1,5,0,11,8,0,0,0,0,0,0,12,7,0,0,0,0,0,6,15,1,0,0,0,0,5,16,11,2,0,0,0,0,11,16,16,16,16,1,2 0,1,10,13,4,0,0,0,0,9,13,8,14,2,0,0,0,5,10,0,14,4,0,0,0,1,2,0,12,7,0,0,0,0,0,0,13,4,0,0,0,0,0,1,15,3,0,0,0,0,6,15,11,4,2,0,0,0,12,16,16,16,15,0,2 0,0,16,10,0,0,0,0,0,3,16,16,6,0,0,0,0,0,16,12,12,0,0,0,0,0,13,11,14,0,0,0,0,0,1,6,16,0,0,0,0,0,0,10,12,0,0,0,0,0,13,16,16,14,8,0,0,1,13,16,16,15,16,5,2 0,4,15,16,4,0,0,0,0,8,16,11,15,0,0,0,0,6,14,4,16,4,0,0,0,0,2,4,16,3,0,0,0,0,0,11,15,0,0,0,0,0,9,16,4,0,0,0,0,10,16,16,16,13,3,0,0,5,14,12,13,16,12,0,2 0,0,11,12,0,0,0,0,0,4,16,15,3,0,0,0,0,2,11,9,6,0,0,0,0,0,2,10,5,0,0,0,0,0,0,14,3,0,0,0,0,0,3,16,0,0,0,0,0,0,12,16,12,15,14,0,0,0,10,16,14,10,10,1,2 0,0,5,14,7,0,0,0,0,2,16,16,16,3,0,0,0,1,16,8,13,9,0,0,0,0,6,3,16,7,0,0,0,0,0,0,16,7,0,0,0,0,0,11,15,0,0,0,0,0,9,16,14,8,10,0,0,0,6,15,12,16,16,7,2 0,0,8,16,8,0,0,0,0,2,16,16,15,5,0,0,0,2,16,5,12,10,0,0,0,0,8,1,11,10,0,0,0,0,0,4,16,4,0,0,0,0,0,13,15,5,3,0,0,0,10,16,16,16,16,0,0,0,10,14,9,8,11,2,2 0,0,5,15,13,2,0,0,0,0,14,13,9,13,0,0,0,0,10,0,0,10,2,0,0,0,0,0,0,11,3,0,0,0,0,0,2,15,0,0,0,0,0,1,12,9,0,0,0,0,10,12,16,14,2,0,0,0,5,14,12,11,4,0,2 0,0,12,16,16,6,0,0,0,9,16,9,12,15,0,0,0,8,10,0,3,16,4,0,0,0,0,0,6,16,0,0,0,0,0,1,14,11,0,0,0,0,1,10,14,3,0,0,0,2,16,16,9,4,4,0,0,1,10,16,16,16,16,2,2 0,1,13,16,16,6,0,0,0,10,16,11,11,13,0,0,0,5,12,0,4,16,2,0,0,0,0,0,6,16,1,0,0,0,0,0,9,14,0,0,0,0,0,4,16,5,0,0,0,0,6,16,15,9,8,3,0,0,12,16,16,14,13,6,2 0,0,9,16,11,2,0,0,0,9,16,8,13,8,0,0,0,8,6,0,0,12,0,0,0,0,0,0,8,10,0,0,0,0,0,0,14,6,0,0,0,0,0,8,11,0,0,0,0,0,8,16,6,4,4,0,0,0,12,15,15,16,13,0,2 0,3,16,15,3,0,0,0,0,8,14,12,11,0,0,0,0,3,11,2,16,3,0,0,0,0,0,2,16,2,0,0,0,0,0,5,16,0,0,0,0,0,0,10,12,0,0,0,0,0,11,16,13,13,10,1,0,2,14,16,15,12,12,1,2 0,3,15,15,3,0,0,0,0,8,15,14,14,0,0,0,0,4,9,2,16,5,0,0,0,0,0,2,16,5,0,0,0,0,0,7,15,1,0,0,0,0,0,14,9,0,0,0,0,1,11,16,10,8,4,0,0,5,16,16,16,16,11,0,2 0,0,13,16,5,0,0,0,0,0,16,12,15,0,0,0,0,0,3,3,12,4,0,0,0,0,0,0,12,6,0,0,0,0,0,0,14,7,0,0,0,0,0,2,16,5,0,0,0,0,5,14,16,9,4,0,0,0,15,16,13,12,16,2,2 0,0,7,15,6,0,0,0,0,0,14,14,13,0,0,0,0,0,3,4,13,0,0,0,0,0,0,8,9,0,0,0,0,0,0,12,5,0,0,0,0,0,3,16,1,0,0,0,0,0,11,14,10,12,11,2,0,0,7,15,11,8,9,3,2 0,0,13,16,5,0,0,0,0,6,16,16,14,0,0,0,0,10,12,4,16,0,0,0,0,8,5,7,14,0,0,0,0,0,1,14,8,0,0,0,0,0,7,15,2,0,0,0,0,0,16,15,12,11,3,0,0,1,16,16,15,16,8,0,2 0,0,13,16,6,0,0,0,0,4,16,16,16,1,0,0,0,2,15,4,16,5,0,0,0,0,1,1,16,7,0,0,0,0,0,2,16,7,0,0,0,0,0,11,16,2,0,0,0,0,10,16,16,16,15,4,0,0,13,16,11,8,14,4,2 0,2,15,12,0,0,0,0,0,5,16,16,4,0,0,0,0,8,14,13,8,0,0,0,0,1,8,6,12,0,0,0,0,0,0,9,12,0,0,0,0,0,4,14,13,4,3,0,0,7,16,16,16,16,15,0,0,3,11,15,11,8,2,0,2 0,0,7,15,10,0,0,0,0,2,16,9,14,3,0,0,0,5,9,0,8,4,0,0,0,2,10,0,13,1,0,0,0,0,0,9,12,0,0,0,0,0,4,15,1,0,0,0,0,0,16,7,4,4,2,0,0,0,9,16,14,12,6,0,2 0,0,13,13,1,0,0,0,0,2,16,16,9,0,0,0,0,9,16,12,12,0,0,0,0,12,10,8,13,0,0,0,0,5,7,10,14,0,0,0,0,0,2,15,12,0,0,0,0,1,15,16,16,14,6,0,0,0,11,16,16,14,6,0,2 0,4,16,16,9,1,0,0,0,2,11,9,15,7,0,0,0,0,0,0,14,6,0,0,0,0,0,5,16,2,0,0,0,0,1,14,12,0,0,0,0,3,15,13,1,0,0,0,0,11,16,13,8,6,3,0,0,4,14,16,16,16,11,0,2 0,1,13,16,15,5,0,0,0,6,15,12,15,11,0,0,0,0,2,0,9,12,0,0,0,0,0,1,16,4,0,0,0,0,1,12,14,0,0,0,0,5,15,14,2,0,0,0,0,9,16,12,7,2,3,0,0,1,15,16,16,16,6,0,2 0,1,15,6,0,0,0,0,0,7,15,16,3,0,0,0,0,11,5,12,4,0,0,0,0,2,3,10,7,0,0,0,0,0,1,16,2,0,0,0,0,0,6,14,0,0,0,0,0,0,14,16,16,15,6,0,0,0,8,8,8,10,13,0,2 0,1,12,3,0,0,0,0,0,10,16,15,1,0,0,0,0,8,3,13,5,0,0,0,0,1,0,9,9,0,0,0,0,0,0,13,6,0,0,0,0,0,2,15,2,0,0,0,0,0,13,16,14,14,12,0,0,0,8,12,12,10,11,0,2 0,0,6,13,3,0,0,0,0,0,15,16,15,5,0,0,0,0,14,4,6,13,0,0,0,0,0,0,4,15,0,0,0,0,0,0,8,12,0,0,0,0,1,6,15,8,0,0,0,0,16,16,16,16,12,0,0,0,5,8,9,10,15,3,2 0,0,8,16,7,0,0,0,0,1,15,11,15,0,0,0,0,2,14,0,11,2,0,0,0,0,1,0,13,4,0,0,0,0,0,6,13,0,0,0,0,0,0,13,8,0,0,0,0,0,13,16,10,10,11,0,0,0,10,15,12,12,12,1,2 0,0,7,16,10,0,0,0,0,0,14,11,13,10,0,0,0,1,16,4,6,13,0,0,0,0,4,0,8,10,0,0,0,0,0,2,15,4,0,0,0,0,0,9,13,0,0,0,0,0,9,16,16,16,9,0,0,0,11,14,12,12,15,2,2 0,0,6,14,9,0,0,0,0,3,16,15,16,6,0,0,0,6,14,0,8,10,0,0,0,0,2,0,11,10,0,0,0,0,0,5,16,4,0,0,0,0,2,14,12,1,0,0,0,0,10,16,16,16,16,0,0,0,10,13,12,8,10,1,2 0,0,9,8,1,0,0,0,0,5,16,16,7,0,0,0,0,8,10,8,8,0,0,0,0,0,2,4,12,0,0,0,0,0,0,6,10,0,0,0,0,0,0,7,9,0,0,0,0,0,6,16,15,11,5,0,0,0,9,14,12,14,10,0,2 0,2,11,14,5,0,0,0,0,5,15,12,16,2,0,0,0,4,12,0,12,4,0,0,0,0,1,0,12,4,0,0,0,0,0,1,14,1,0,0,0,0,0,9,7,0,0,0,0,1,9,15,10,8,4,0,0,2,15,15,12,12,7,0,2 0,1,10,16,9,0,0,0,0,9,15,13,16,0,0,0,0,4,2,0,14,2,0,0,0,0,0,0,12,4,0,0,0,0,0,1,14,1,0,0,0,0,0,9,7,0,0,0,0,0,14,16,16,16,11,0,0,0,8,10,12,14,10,0,2 0,0,8,10,0,0,0,0,0,0,14,16,5,0,0,0,0,0,15,11,11,0,0,0,0,0,10,6,12,0,0,0,0,0,1,4,14,0,0,0,0,0,0,6,10,0,0,0,0,0,5,15,14,9,9,2,0,0,10,16,15,15,12,1,2 0,0,2,15,12,0,0,0,0,0,11,8,15,4,0,0,0,0,13,4,12,4,0,0,0,0,1,1,15,0,0,0,0,0,0,10,9,0,0,0,0,0,8,15,1,0,0,0,0,6,16,13,8,8,2,0,0,0,4,10,12,13,6,0,2 0,0,8,15,7,0,0,0,0,0,14,14,16,1,0,0,0,0,8,2,13,5,0,0,0,0,0,0,14,4,0,0,0,0,0,1,15,3,0,0,0,0,0,4,15,0,0,0,0,0,4,15,15,12,10,1,0,0,7,15,14,12,16,3,2 0,1,9,13,13,5,0,0,0,10,14,6,9,16,3,0,0,7,10,0,0,16,6,0,0,0,0,0,10,14,1,0,0,0,0,9,15,3,0,0,0,0,7,16,2,0,0,0,0,0,14,9,0,3,1,0,0,0,14,16,15,12,2,0,2 0,3,14,16,16,13,0,0,0,8,15,8,13,16,0,0,0,0,1,2,16,10,0,0,0,0,0,12,15,1,0,0,0,0,9,15,3,0,0,0,0,2,16,8,0,0,0,0,0,6,16,4,4,7,7,0,0,3,15,16,16,13,7,0,2 0,0,5,14,16,16,12,0,0,5,16,13,8,13,16,0,0,3,7,0,3,14,10,0,0,0,0,1,13,14,0,0,0,0,0,9,15,3,0,0,0,0,4,16,7,0,0,0,0,0,12,13,0,0,0,0,0,0,6,16,16,10,0,0,2 0,1,9,15,16,13,0,0,0,5,11,4,2,13,3,0,0,1,3,0,1,15,3,0,0,0,0,0,11,11,0,0,0,0,0,11,11,0,0,0,0,0,7,14,1,0,0,0,0,0,15,6,0,0,0,0,0,0,11,16,16,15,6,0,2 0,2,14,16,12,1,0,0,0,8,15,12,16,2,0,0,0,0,3,4,16,2,0,0,0,0,0,13,10,0,0,0,0,0,4,16,4,0,0,0,0,0,12,11,0,0,0,0,0,2,16,8,6,8,9,1,0,2,13,16,16,16,16,5,2 0,0,4,16,12,1,0,0,0,0,10,15,13,11,0,0,0,0,5,12,5,16,0,0,0,0,0,0,8,15,0,0,0,0,0,1,15,12,0,0,0,0,0,11,16,10,0,0,0,0,5,16,16,16,16,6,0,0,6,16,5,5,10,13,2 0,0,8,16,15,3,0,0,0,0,10,16,15,10,0,0,0,0,3,11,13,12,0,0,0,0,0,1,16,9,0,0,0,0,0,6,16,4,0,0,0,0,0,12,14,0,0,0,0,0,7,16,15,12,12,3,0,0,8,15,13,16,16,11,2 0,0,7,15,12,0,0,0,0,6,15,8,14,3,0,0,0,3,6,0,15,3,0,0,0,0,0,4,12,0,0,0,0,0,0,11,6,0,0,0,0,0,3,15,1,0,0,0,0,0,13,13,9,12,10,0,0,0,12,13,12,10,7,2,2 0,0,8,16,16,4,0,0,0,5,16,8,13,10,0,0,0,6,11,1,14,7,0,0,0,0,0,6,16,1,0,0,0,0,0,15,9,0,0,0,0,0,8,14,2,0,0,0,0,0,16,9,0,2,3,0,0,0,10,16,16,12,3,0,2 0,0,3,13,12,0,0,0,0,1,16,13,16,4,0,0,0,8,6,7,16,1,0,0,0,0,2,15,9,0,0,0,0,0,11,14,0,0,0,0,0,0,16,10,0,0,0,0,0,0,15,13,8,9,4,0,0,0,3,13,15,13,2,0,2 0,3,13,16,8,0,0,0,0,14,11,12,16,0,0,0,0,10,1,7,16,1,0,0,0,0,0,12,12,0,0,0,0,0,7,15,1,0,0,0,0,0,15,8,0,0,0,0,0,4,16,9,7,8,8,0,0,2,15,16,16,16,11,0,2 0,0,8,16,8,0,0,0,0,9,16,13,16,5,0,0,0,7,3,6,16,4,0,0,0,0,0,15,13,0,0,0,0,0,9,16,2,0,0,0,0,0,14,9,0,0,0,0,0,0,16,11,4,6,8,0,0,0,7,16,16,11,7,0,2 0,0,3,10,15,8,0,0,0,3,15,9,8,12,0,0,0,8,8,0,5,11,0,0,0,2,6,0,10,7,0,0,0,0,0,5,14,1,0,0,0,0,0,14,5,0,0,0,0,0,4,16,4,5,11,0,0,0,1,14,15,11,2,0,2 0,0,6,11,4,0,0,0,0,0,14,12,14,1,0,0,0,0,7,0,16,6,0,0,0,0,0,0,11,9,0,0,0,0,0,0,13,3,0,0,0,0,0,3,14,2,0,0,0,0,9,16,12,8,7,0,0,0,11,16,16,15,12,0,2 0,0,9,16,12,1,0,0,0,7,16,13,16,9,0,0,0,9,6,0,12,12,0,0,0,0,0,0,11,10,0,0,0,0,0,2,15,6,0,0,0,0,0,11,12,0,0,0,0,0,12,16,13,9,2,0,0,0,11,16,16,16,11,0,2 0,2,14,16,9,0,0,0,0,6,16,14,14,2,0,0,0,5,12,4,16,1,0,0,0,0,1,3,16,1,0,0,0,0,0,8,12,0,0,0,0,0,1,13,9,0,0,0,0,1,15,16,16,13,8,1,0,2,16,16,16,16,16,3,2 0,2,14,14,1,0,0,0,0,9,13,13,6,0,0,0,0,9,5,3,10,0,0,0,0,0,1,3,9,0,0,0,0,0,0,8,4,0,0,0,0,0,2,15,4,2,0,0,0,1,13,16,16,16,9,0,0,0,13,8,8,7,2,0,2 0,0,11,15,4,0,0,0,0,6,16,16,16,1,0,0,0,1,6,2,15,7,0,0,0,0,0,0,14,8,0,0,0,0,0,4,16,6,0,0,0,0,0,11,16,2,0,0,0,0,12,16,15,12,13,4,0,0,12,16,16,16,15,6,2 0,0,10,14,4,0,0,0,0,4,16,12,16,2,0,0,0,0,7,0,8,8,0,0,0,0,0,0,8,8,0,0,0,0,0,0,14,5,0,0,0,0,0,7,13,1,0,0,0,0,6,16,14,12,9,0,0,0,14,14,12,12,15,1,2 0,5,16,14,2,0,0,0,0,7,16,16,10,0,0,0,0,0,0,12,10,0,0,0,0,0,0,15,7,0,0,0,0,0,5,16,2,0,0,0,0,1,12,11,0,0,0,0,0,6,16,16,16,12,3,0,0,5,16,16,16,15,5,0,2 0,0,13,16,10,1,0,0,0,8,15,8,16,6,0,0,0,11,13,0,11,12,0,0,0,5,7,0,10,12,0,0,0,0,0,0,12,10,0,0,0,0,0,3,16,5,0,0,0,0,7,15,15,12,12,2,0,1,12,16,13,11,11,1,2 0,0,12,14,1,0,0,0,0,8,16,12,6,0,0,0,0,8,7,7,8,0,0,0,0,0,0,9,7,0,0,0,0,0,0,11,5,0,0,0,0,0,0,14,1,0,0,0,0,0,9,13,4,7,4,0,0,0,15,16,16,16,13,0,2 0,1,13,16,15,1,0,0,0,10,15,7,16,4,0,0,0,11,15,7,16,4,0,0,0,1,11,12,15,0,0,0,0,0,1,16,11,0,0,0,0,0,7,16,4,0,0,0,0,0,14,16,5,3,0,0,0,0,13,16,16,16,10,0,2 0,0,2,12,13,0,0,0,0,3,15,13,16,0,0,0,0,10,13,1,16,0,0,0,0,0,1,4,16,0,0,0,0,0,0,6,13,0,0,0,0,0,0,9,10,7,8,0,0,0,0,14,15,15,3,0,0,0,0,15,12,3,0,0,2 0,0,6,16,8,0,0,0,0,2,16,14,13,0,0,0,0,8,14,5,15,0,0,0,0,9,11,8,12,0,0,0,0,3,6,14,8,0,0,0,0,0,4,16,2,0,0,0,0,0,8,16,12,10,5,0,0,0,8,16,16,16,8,0,2 0,0,8,16,9,0,0,0,0,2,15,16,16,4,0,0,0,7,16,4,16,3,0,0,0,9,12,7,14,0,0,0,0,1,4,16,7,0,0,0,0,0,9,16,2,0,0,0,0,0,12,16,15,15,3,0,0,0,7,13,15,14,14,0,2 0,1,12,14,1,0,0,0,0,10,16,16,4,0,0,0,0,8,11,16,0,0,0,0,0,0,6,13,0,0,0,0,0,0,11,11,0,0,0,0,0,0,16,8,0,0,0,0,0,4,16,15,16,16,9,0,0,1,16,16,16,14,8,0,2 0,0,7,14,7,0,0,0,0,6,16,16,8,0,0,0,0,3,7,13,10,0,0,0,0,0,0,13,8,0,0,0,0,0,6,15,4,0,0,0,0,0,12,11,0,0,0,0,0,0,14,15,12,16,6,0,0,0,6,14,11,6,1,0,2 0,6,16,6,0,0,0,0,0,9,16,16,2,0,0,0,0,1,2,16,7,0,0,0,0,0,2,16,3,0,0,0,0,0,10,15,0,0,0,0,0,4,16,6,0,0,0,0,0,10,16,12,14,16,9,0,0,7,16,16,12,10,3,0,2 0,0,4,14,9,0,0,0,0,2,15,16,16,0,0,0,0,5,11,7,14,0,0,0,0,0,0,8,11,0,0,0,0,0,0,11,5,0,0,0,0,0,4,15,0,4,0,0,0,0,8,15,12,16,2,0,0,0,7,16,12,7,0,0,2 0,0,8,14,16,5,0,0,0,2,16,8,10,8,0,0,0,0,4,2,13,6,0,0,0,0,0,7,12,0,0,0,0,0,1,15,7,0,0,0,0,0,9,11,0,0,0,0,0,4,16,9,8,12,2,0,0,0,10,14,9,2,0,0,2 0,1,12,16,5,0,0,0,0,11,16,16,11,0,0,0,0,6,5,16,11,0,0,0,0,0,2,16,7,0,0,0,0,0,8,16,3,0,0,0,0,1,13,14,0,2,1,0,0,4,16,16,16,16,10,0,0,0,15,16,14,9,3,0,2 0,0,12,16,7,0,0,0,0,2,16,14,16,5,0,0,0,0,14,5,11,13,0,0,0,0,2,1,8,13,0,0,0,0,0,0,8,15,0,0,0,0,0,0,13,10,0,0,0,0,10,10,16,6,0,0,0,0,11,16,16,16,16,8,2
.NET Test Automation Recipes
Software Testing
SciPy Programming Succinctly
Keras Succinctly
R Programming
2026 Visual Studio Live
2025 Summer MLADS Conference
2026 DevIntersection Conference
2025 Machine Learning Week
2025 Ai4 Conference
2026 G2E Conference
2026 iSC West Conference
You must be logged in to post a comment.