Looking at modeling equations; and using pytorch + fastai for general numerical tasks.

WNixalo – 2018/6/25 (WiP)


In [1]:
from collections import defaultdict
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np

In [2]:
def Force(m,a):
    return m*a

def mass(F,a):
    if a == 0: return np.inf
    return F/a

def accel(F,m):
    if F == 0: return np.inf
    return m/F

In [3]:
fns = {'F':Force, 'm':mass, 'a':accel}
vals = defaultdict(list)
for fn in fns:
    vals[fn] = [[[f'{i},{j}', fns[fn](i,j)] for j in range(20)] for i in range(20)]

In [4]:
x = []; y = []
fn_modes = ['F','m','a']
for i,f in enumerate(fn_modes):
    for val in vals[f]:
        for v in val:
            args,out = v
            args = [int(a) for a in args.split(',')]
            args = [i, *args]
            x.append(args)
            y.append(out)

In [5]:
x[1000:1010]


Out[5]:
[[2, 10, 0],
 [2, 10, 1],
 [2, 10, 2],
 [2, 10, 3],
 [2, 10, 4],
 [2, 10, 5],
 [2, 10, 6],
 [2, 10, 7],
 [2, 10, 8],
 [2, 10, 9]]

In [6]:
y[1000:1010]


Out[6]:
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

In [7]:
class NN(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc0 = nn.Linear(3, 20)
        self.fc1 = nn.Linear(20,1)
    def forward(self, x):
        x = F.relu(self.fc0(x))
        x = F.relu(self.fc1(x))
        return x

In [8]:
model = NN()
optimizer = torch.optim.Adam(model.parameters())
criterion = F.binary_cross_entropy

In [9]:
torch.FloatTensor(x[0])


Out[9]:
tensor([ 0.,  0.,  0.])

In [10]:
model(torch.FloatTensor(x[0])).shape


Out[10]:
torch.Size([1])

In [11]:
from fastai.conv_learner import *

In [12]:
class NumDataset(torch.utils.data.Dataset):
    def __init__(self, x, y):
        assert len(x) == len(y)
        self.transform = None
        self.x = x
        self.y = y
    def __len__(self):
        return len(self.x)
    def __getitem__(self, i):
        return torch.FloatTensor(self.x[i]), torch.FloatTensor([self.y[i]])

In [13]:
train_dataset = NumDataset(x,y)

In [14]:
train_dataset[0]


Out[14]:
(tensor([ 0.,  0.,  0.]), tensor([ 0.]))

In [15]:
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16)

In [16]:
md = ModelData.from_dls(Path(os.getcwd())/'data', train_loader, train_loader)

In [53]:
x,y = next(iter(md.trn_dl))
x,y


Out[53]:
(tensor([[  0.,   0.,   0.],
         [  0.,   0.,   1.],
         [  0.,   0.,   2.],
         [  0.,   0.,   3.],
         [  0.,   0.,   4.],
         [  0.,   0.,   5.],
         [  0.,   0.,   6.],
         [  0.,   0.,   7.],
         [  0.,   0.,   8.],
         [  0.,   0.,   9.],
         [  0.,   0.,  10.],
         [  0.,   0.,  11.],
         [  0.,   0.,  12.],
         [  0.,   0.,  13.],
         [  0.,   0.,  14.],
         [  0.,   0.,  15.]]), tensor([[ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.]]))

In [54]:
y.shape


Out[54]:
torch.Size([16, 1])

In [55]:
x.shape


Out[55]:
torch.Size([16, 3])

In [56]:
learner = Learner.from_model_data(NN(), md)

In [70]:
def loss_fn(z, y):
#     if y != 0:
#         return torch.abs((z-y)/y)
#     else:
#         return torch.min(1.0, torch.abs(z-y))
    return torch.abs((z-y)/y)

In [71]:
learner.crit = loss_fn

In [72]:
learner.lr_find()
learner.sched.plot(n_skip_end=0)


  0%|          | 0/75 [00:00<?, ?it/s]
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-72-f672079ce412> in <module>()
----> 1 learner.lr_find()
      2 learner.sched.plot(n_skip_end=0)

~/Deshar/Kaukasos/pytorch/fastai/learner.py in lr_find(self, start_lr, end_lr, wds, linear, **kwargs)
    328         layer_opt = self.get_layer_opt(start_lr, wds)
    329         self.sched = LR_Finder(layer_opt, len(self.data.trn_dl), end_lr, linear=linear)
--> 330         self.fit_gen(self.model, self.data, layer_opt, 1, **kwargs)
    331         self.load('tmp')
    332 

~/Deshar/Kaukasos/pytorch/fastai/learner.py in fit_gen(self, model, data, layer_opt, n_cycle, cycle_len, cycle_mult, cycle_save_name, best_save_name, use_clr, use_clr_beta, metrics, callbacks, use_wd_sched, norm_wds, wds_sched_mult, use_swa, swa_start, swa_eval_freq, **kwargs)
    232             metrics=metrics, callbacks=callbacks, reg_fn=self.reg_fn, clip=self.clip, fp16=self.fp16,
    233             swa_model=self.swa_model if use_swa else None, swa_start=swa_start,
--> 234             swa_eval_freq=swa_eval_freq, **kwargs)
    235 
    236     def get_layer_groups(self): return self.models.get_layer_groups()

~/Deshar/Kaukasos/pytorch/fastai/model.py in fit(model, data, n_epochs, opt, crit, metrics, callbacks, stepper, swa_model, swa_start, swa_eval_freq, **kwargs)
    139             for cb in callbacks: cb.on_batch_begin()
    140             # pdb.set_trace()
--> 141             loss = model_stepper.step(V(x),V(y), epoch)
    142             avg_loss = avg_loss * avg_mom + loss * (1-avg_mom)
    143             debias_loss = avg_loss / (1 - avg_mom**batch_num)

~/Deshar/Kaukasos/pytorch/fastai/model.py in step(self, xs, y, epoch)
     55         if self.loss_scale != 1: assert(self.fp16); loss = loss*self.loss_scale
     56         if self.reg_fn: loss = self.reg_fn(output, xtra, raw_loss)
---> 57         loss.backward()
     58         if self.fp16: update_fp32_grads(self.fp32_params, self.m)
     59         if self.loss_scale != 1:

~/Miniconda3/envs/fastai/lib/python3.6/site-packages/torch/tensor.py in backward(self, gradient, retain_graph, create_graph)
     91                 products. Defaults to ``False``.
     92         """
---> 93         torch.autograd.backward(self, gradient, retain_graph, create_graph)
     94 
     95     def register_hook(self, hook):

~/Miniconda3/envs/fastai/lib/python3.6/site-packages/torch/autograd/__init__.py in backward(tensors, grad_tensors, retain_graph, create_graph, grad_variables)
     81         grad_tensors = list(grad_tensors)
     82 
---> 83     grad_tensors = _make_grads(tensors, grad_tensors)
     84     if retain_graph is None:
     85         retain_graph = create_graph

~/Miniconda3/envs/fastai/lib/python3.6/site-packages/torch/autograd/__init__.py in _make_grads(outputs, grads)
     25             if out.requires_grad:
     26                 if out.numel() != 1:
---> 27                     raise RuntimeError("grad can be implicitly created only for scalar outputs")
     28                 new_grads.append(torch.ones_like(out))
     29             else:

RuntimeError: grad can be implicitly created only for scalar outputs

In [59]:
learner.model(x), y


Out[59]:
(tensor([[ 0.0496],
         [ 0.1746],
         [ 0.3986],
         [ 0.6396],
         [ 0.8646],
         [ 1.0819],
         [ 1.2992],
         [ 1.5165],
         [ 1.7338],
         [ 1.9511],
         [ 2.1684],
         [ 2.3857],
         [ 2.6030],
         [ 2.8202],
         [ 3.0375],
         [ 3.2548]]), tensor([[ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.]]))

In [60]:
learner.crit(learner.model(x), y)


Out[60]:
tensor(1.8740)

In [61]:
learner.fit(1e-10, 1)


epoch      trn_loss   val_loss                              
    0      nan        nan       

Out[61]:
[nan]

In [62]:
x = learner.data.val_ds.x
y = learner.data.val_ds.y
z = learner.predict()

In [63]:
learner.model(torch.Tensor([[1,3,2]]))


Out[63]:
tensor([[ 0.]])

In [64]:
for xi,zi,yi in zip(x,z,y):
    print(f'{xi} : {zi} : {yi}')


[0, 0, 0] : [0.] : 0
[0, 0, 1] : [0.] : 0
[0, 0, 2] : [0.] : 0
[0, 0, 3] : [0.] : 0
[0, 0, 4] : [0.] : 0
[0, 0, 5] : [0.] : 0
[0, 0, 6] : [0.] : 0
[0, 0, 7] : [0.] : 0
[0, 0, 8] : [0.] : 0
[0, 0, 9] : [0.] : 0
[0, 0, 10] : [0.] : 0
[0, 0, 11] : [0.] : 0
[0, 0, 12] : [0.] : 0
[0, 0, 13] : [0.] : 0
[0, 0, 14] : [0.] : 0
[0, 0, 15] : [0.] : 0
[0, 0, 16] : [0.] : 0
[0, 0, 17] : [0.] : 0
[0, 0, 18] : [0.] : 0
[0, 0, 19] : [0.] : 0
[0, 1, 0] : [0.] : 0
[0, 1, 1] : [0.] : 1
[0, 1, 2] : [0.] : 2
[0, 1, 3] : [0.] : 3
[0, 1, 4] : [0.] : 4
[0, 1, 5] : [0.] : 5
[0, 1, 6] : [0.] : 6
[0, 1, 7] : [0.] : 7
[0, 1, 8] : [0.] : 8
[0, 1, 9] : [0.] : 9
[0, 1, 10] : [0.] : 10
[0, 1, 11] : [0.] : 11
[0, 1, 12] : [0.] : 12
[0, 1, 13] : [0.] : 13
[0, 1, 14] : [0.] : 14
[0, 1, 15] : [0.] : 15
[0, 1, 16] : [0.] : 16
[0, 1, 17] : [0.] : 17
[0, 1, 18] : [0.] : 18
[0, 1, 19] : [0.] : 19
[0, 2, 0] : [0.] : 0
[0, 2, 1] : [0.] : 2
[0, 2, 2] : [0.] : 4
[0, 2, 3] : [0.] : 6
[0, 2, 4] : [0.] : 8
[0, 2, 5] : [0.] : 10
[0, 2, 6] : [0.] : 12
[0, 2, 7] : [0.] : 14
[0, 2, 8] : [0.] : 16
[0, 2, 9] : [0.] : 18
[0, 2, 10] : [0.] : 20
[0, 2, 11] : [0.] : 22
[0, 2, 12] : [0.] : 24
[0, 2, 13] : [0.] : 26
[0, 2, 14] : [0.] : 28
[0, 2, 15] : [0.] : 30
[0, 2, 16] : [0.] : 32
[0, 2, 17] : [0.] : 34
[0, 2, 18] : [0.] : 36
[0, 2, 19] : [0.] : 38
[0, 3, 0] : [0.] : 0
[0, 3, 1] : [0.] : 3
[0, 3, 2] : [0.] : 6
[0, 3, 3] : [0.] : 9
[0, 3, 4] : [0.] : 12
[0, 3, 5] : [0.] : 15
[0, 3, 6] : [0.] : 18
[0, 3, 7] : [0.] : 21
[0, 3, 8] : [0.] : 24
[0, 3, 9] : [0.] : 27
[0, 3, 10] : [0.] : 30
[0, 3, 11] : [0.] : 33
[0, 3, 12] : [0.] : 36
[0, 3, 13] : [0.] : 39
[0, 3, 14] : [0.] : 42
[0, 3, 15] : [0.] : 45
[0, 3, 16] : [0.] : 48
[0, 3, 17] : [0.] : 51
[0, 3, 18] : [0.] : 54
[0, 3, 19] : [0.] : 57
[0, 4, 0] : [0.] : 0
[0, 4, 1] : [0.] : 4
[0, 4, 2] : [0.] : 8
[0, 4, 3] : [0.] : 12
[0, 4, 4] : [0.] : 16
[0, 4, 5] : [0.] : 20
[0, 4, 6] : [0.] : 24
[0, 4, 7] : [0.] : 28
[0, 4, 8] : [0.] : 32
[0, 4, 9] : [0.] : 36
[0, 4, 10] : [0.] : 40
[0, 4, 11] : [0.] : 44
[0, 4, 12] : [0.] : 48
[0, 4, 13] : [0.] : 52
[0, 4, 14] : [0.] : 56
[0, 4, 15] : [0.] : 60
[0, 4, 16] : [0.] : 64
[0, 4, 17] : [0.] : 68
[0, 4, 18] : [0.] : 72
[0, 4, 19] : [0.] : 76
[0, 5, 0] : [0.] : 0
[0, 5, 1] : [0.] : 5
[0, 5, 2] : [0.] : 10
[0, 5, 3] : [0.] : 15
[0, 5, 4] : [0.] : 20
[0, 5, 5] : [0.] : 25
[0, 5, 6] : [0.] : 30
[0, 5, 7] : [0.] : 35
[0, 5, 8] : [0.] : 40
[0, 5, 9] : [0.] : 45
[0, 5, 10] : [0.] : 50
[0, 5, 11] : [0.] : 55
[0, 5, 12] : [0.] : 60
[0, 5, 13] : [0.] : 65
[0, 5, 14] : [0.] : 70
[0, 5, 15] : [0.] : 75
[0, 5, 16] : [0.] : 80
[0, 5, 17] : [0.] : 85
[0, 5, 18] : [0.] : 90
[0, 5, 19] : [0.] : 95
[0, 6, 0] : [0.] : 0
[0, 6, 1] : [0.] : 6
[0, 6, 2] : [0.] : 12
[0, 6, 3] : [0.] : 18
[0, 6, 4] : [0.] : 24
[0, 6, 5] : [0.] : 30
[0, 6, 6] : [0.] : 36
[0, 6, 7] : [0.] : 42
[0, 6, 8] : [0.] : 48
[0, 6, 9] : [0.] : 54
[0, 6, 10] : [0.] : 60
[0, 6, 11] : [0.] : 66
[0, 6, 12] : [0.] : 72
[0, 6, 13] : [0.] : 78
[0, 6, 14] : [0.] : 84
[0, 6, 15] : [0.] : 90
[0, 6, 16] : [0.] : 96
[0, 6, 17] : [0.] : 102
[0, 6, 18] : [0.] : 108
[0, 6, 19] : [0.] : 114
[0, 7, 0] : [0.] : 0
[0, 7, 1] : [0.] : 7
[0, 7, 2] : [0.] : 14
[0, 7, 3] : [0.] : 21
[0, 7, 4] : [0.] : 28
[0, 7, 5] : [0.] : 35
[0, 7, 6] : [0.] : 42
[0, 7, 7] : [0.] : 49
[0, 7, 8] : [0.] : 56
[0, 7, 9] : [0.] : 63
[0, 7, 10] : [0.] : 70
[0, 7, 11] : [0.] : 77
[0, 7, 12] : [0.] : 84
[0, 7, 13] : [0.] : 91
[0, 7, 14] : [0.] : 98
[0, 7, 15] : [0.] : 105
[0, 7, 16] : [0.] : 112
[0, 7, 17] : [0.] : 119
[0, 7, 18] : [0.] : 126
[0, 7, 19] : [0.] : 133
[0, 8, 0] : [0.] : 0
[0, 8, 1] : [0.] : 8
[0, 8, 2] : [0.] : 16
[0, 8, 3] : [0.] : 24
[0, 8, 4] : [0.] : 32
[0, 8, 5] : [0.] : 40
[0, 8, 6] : [0.] : 48
[0, 8, 7] : [0.] : 56
[0, 8, 8] : [0.] : 64
[0, 8, 9] : [0.] : 72
[0, 8, 10] : [0.] : 80
[0, 8, 11] : [0.] : 88
[0, 8, 12] : [0.] : 96
[0, 8, 13] : [0.] : 104
[0, 8, 14] : [0.] : 112
[0, 8, 15] : [0.] : 120
[0, 8, 16] : [0.] : 128
[0, 8, 17] : [0.] : 136
[0, 8, 18] : [0.] : 144
[0, 8, 19] : [0.] : 152
[0, 9, 0] : [0.] : 0
[0, 9, 1] : [0.] : 9
[0, 9, 2] : [0.] : 18
[0, 9, 3] : [0.] : 27
[0, 9, 4] : [0.] : 36
[0, 9, 5] : [0.] : 45
[0, 9, 6] : [0.] : 54
[0, 9, 7] : [0.] : 63
[0, 9, 8] : [0.] : 72
[0, 9, 9] : [0.] : 81
[0, 9, 10] : [0.] : 90
[0, 9, 11] : [0.] : 99
[0, 9, 12] : [0.] : 108
[0, 9, 13] : [0.] : 117
[0, 9, 14] : [0.] : 126
[0, 9, 15] : [0.] : 135
[0, 9, 16] : [0.] : 144
[0, 9, 17] : [0.] : 153
[0, 9, 18] : [0.] : 162
[0, 9, 19] : [0.] : 171
[0, 10, 0] : [0.] : 0
[0, 10, 1] : [0.] : 10
[0, 10, 2] : [0.] : 20
[0, 10, 3] : [0.] : 30
[0, 10, 4] : [0.] : 40
[0, 10, 5] : [0.] : 50
[0, 10, 6] : [0.] : 60
[0, 10, 7] : [0.] : 70
[0, 10, 8] : [0.] : 80
[0, 10, 9] : [0.] : 90
[0, 10, 10] : [0.] : 100
[0, 10, 11] : [0.] : 110
[0, 10, 12] : [0.] : 120
[0, 10, 13] : [0.] : 130
[0, 10, 14] : [0.] : 140
[0, 10, 15] : [0.] : 150
[0, 10, 16] : [0.] : 160
[0, 10, 17] : [0.] : 170
[0, 10, 18] : [0.] : 180
[0, 10, 19] : [0.] : 190
[0, 11, 0] : [0.] : 0
[0, 11, 1] : [0.] : 11
[0, 11, 2] : [0.] : 22
[0, 11, 3] : [0.] : 33
[0, 11, 4] : [0.] : 44
[0, 11, 5] : [0.] : 55
[0, 11, 6] : [0.] : 66
[0, 11, 7] : [0.] : 77
[0, 11, 8] : [0.] : 88
[0, 11, 9] : [0.] : 99
[0, 11, 10] : [0.] : 110
[0, 11, 11] : [0.] : 121
[0, 11, 12] : [0.] : 132
[0, 11, 13] : [0.] : 143
[0, 11, 14] : [0.] : 154
[0, 11, 15] : [0.] : 165
[0, 11, 16] : [0.] : 176
[0, 11, 17] : [0.] : 187
[0, 11, 18] : [0.] : 198
[0, 11, 19] : [0.] : 209
[0, 12, 0] : [0.] : 0
[0, 12, 1] : [0.] : 12
[0, 12, 2] : [0.] : 24
[0, 12, 3] : [0.] : 36
[0, 12, 4] : [0.] : 48
[0, 12, 5] : [0.] : 60
[0, 12, 6] : [0.] : 72
[0, 12, 7] : [0.] : 84
[0, 12, 8] : [0.] : 96
[0, 12, 9] : [0.] : 108
[0, 12, 10] : [0.] : 120
[0, 12, 11] : [0.] : 132
[0, 12, 12] : [0.] : 144
[0, 12, 13] : [0.] : 156
[0, 12, 14] : [0.] : 168
[0, 12, 15] : [0.] : 180
[0, 12, 16] : [0.] : 192
[0, 12, 17] : [0.] : 204
[0, 12, 18] : [0.] : 216
[0, 12, 19] : [0.] : 228
[0, 13, 0] : [0.] : 0
[0, 13, 1] : [0.] : 13
[0, 13, 2] : [0.] : 26
[0, 13, 3] : [0.] : 39
[0, 13, 4] : [0.] : 52
[0, 13, 5] : [0.] : 65
[0, 13, 6] : [0.] : 78
[0, 13, 7] : [0.] : 91
[0, 13, 8] : [0.] : 104
[0, 13, 9] : [0.] : 117
[0, 13, 10] : [0.] : 130
[0, 13, 11] : [0.] : 143
[0, 13, 12] : [0.] : 156
[0, 13, 13] : [0.] : 169
[0, 13, 14] : [0.] : 182
[0, 13, 15] : [0.] : 195
[0, 13, 16] : [0.] : 208
[0, 13, 17] : [0.] : 221
[0, 13, 18] : [0.] : 234
[0, 13, 19] : [0.] : 247
[0, 14, 0] : [0.] : 0
[0, 14, 1] : [0.] : 14
[0, 14, 2] : [0.] : 28
[0, 14, 3] : [0.] : 42
[0, 14, 4] : [0.] : 56
[0, 14, 5] : [0.] : 70
[0, 14, 6] : [0.] : 84
[0, 14, 7] : [0.] : 98
[0, 14, 8] : [0.] : 112
[0, 14, 9] : [0.] : 126
[0, 14, 10] : [0.] : 140
[0, 14, 11] : [0.] : 154
[0, 14, 12] : [0.] : 168
[0, 14, 13] : [0.] : 182
[0, 14, 14] : [0.] : 196
[0, 14, 15] : [0.] : 210
[0, 14, 16] : [0.] : 224
[0, 14, 17] : [0.] : 238
[0, 14, 18] : [0.] : 252
[0, 14, 19] : [0.] : 266
[0, 15, 0] : [0.] : 0
[0, 15, 1] : [0.] : 15
[0, 15, 2] : [0.] : 30
[0, 15, 3] : [0.] : 45
[0, 15, 4] : [0.] : 60
[0, 15, 5] : [0.] : 75
[0, 15, 6] : [0.] : 90
[0, 15, 7] : [0.] : 105
[0, 15, 8] : [0.] : 120
[0, 15, 9] : [0.] : 135
[0, 15, 10] : [0.] : 150
[0, 15, 11] : [0.] : 165
[0, 15, 12] : [0.] : 180
[0, 15, 13] : [0.] : 195
[0, 15, 14] : [0.] : 210
[0, 15, 15] : [0.] : 225
[0, 15, 16] : [0.] : 240
[0, 15, 17] : [0.] : 255
[0, 15, 18] : [0.] : 270
[0, 15, 19] : [0.] : 285
[0, 16, 0] : [0.] : 0
[0, 16, 1] : [0.] : 16
[0, 16, 2] : [0.] : 32
[0, 16, 3] : [0.] : 48
[0, 16, 4] : [0.] : 64
[0, 16, 5] : [0.] : 80
[0, 16, 6] : [0.] : 96
[0, 16, 7] : [0.] : 112
[0, 16, 8] : [0.] : 128
[0, 16, 9] : [0.] : 144
[0, 16, 10] : [0.] : 160
[0, 16, 11] : [0.] : 176
[0, 16, 12] : [0.] : 192
[0, 16, 13] : [0.] : 208
[0, 16, 14] : [0.] : 224
[0, 16, 15] : [0.] : 240
[0, 16, 16] : [0.] : 256
[0, 16, 17] : [0.] : 272
[0, 16, 18] : [0.] : 288
[0, 16, 19] : [0.] : 304
[0, 17, 0] : [0.] : 0
[0, 17, 1] : [0.] : 17
[0, 17, 2] : [0.] : 34
[0, 17, 3] : [0.] : 51
[0, 17, 4] : [0.] : 68
[0, 17, 5] : [0.] : 85
[0, 17, 6] : [0.] : 102
[0, 17, 7] : [0.] : 119
[0, 17, 8] : [0.] : 136
[0, 17, 9] : [0.] : 153
[0, 17, 10] : [0.] : 170
[0, 17, 11] : [0.] : 187
[0, 17, 12] : [0.] : 204
[0, 17, 13] : [0.] : 221
[0, 17, 14] : [0.] : 238
[0, 17, 15] : [0.] : 255
[0, 17, 16] : [0.] : 272
[0, 17, 17] : [0.] : 289
[0, 17, 18] : [0.] : 306
[0, 17, 19] : [0.] : 323
[0, 18, 0] : [0.] : 0
[0, 18, 1] : [0.] : 18
[0, 18, 2] : [0.] : 36
[0, 18, 3] : [0.] : 54
[0, 18, 4] : [0.] : 72
[0, 18, 5] : [0.] : 90
[0, 18, 6] : [0.] : 108
[0, 18, 7] : [0.] : 126
[0, 18, 8] : [0.] : 144
[0, 18, 9] : [0.] : 162
[0, 18, 10] : [0.] : 180
[0, 18, 11] : [0.] : 198
[0, 18, 12] : [0.] : 216
[0, 18, 13] : [0.] : 234
[0, 18, 14] : [0.] : 252
[0, 18, 15] : [0.] : 270
[0, 18, 16] : [0.] : 288
[0, 18, 17] : [0.] : 306
[0, 18, 18] : [0.] : 324
[0, 18, 19] : [0.] : 342
[0, 19, 0] : [0.] : 0
[0, 19, 1] : [0.] : 19
[0, 19, 2] : [0.] : 38
[0, 19, 3] : [0.] : 57
[0, 19, 4] : [0.] : 76
[0, 19, 5] : [0.] : 95
[0, 19, 6] : [0.] : 114
[0, 19, 7] : [0.] : 133
[0, 19, 8] : [0.] : 152
[0, 19, 9] : [0.] : 171
[0, 19, 10] : [0.] : 190
[0, 19, 11] : [0.] : 209
[0, 19, 12] : [0.] : 228
[0, 19, 13] : [0.] : 247
[0, 19, 14] : [0.] : 266
[0, 19, 15] : [0.] : 285
[0, 19, 16] : [0.] : 304
[0, 19, 17] : [0.] : 323
[0, 19, 18] : [0.] : 342
[0, 19, 19] : [0.] : 361
[1, 0, 0] : [0.] : inf
[1, 0, 1] : [0.] : 0.0
[1, 0, 2] : [0.] : 0.0
[1, 0, 3] : [0.] : 0.0
[1, 0, 4] : [0.] : 0.0
[1, 0, 5] : [0.] : 0.0
[1, 0, 6] : [0.] : 0.0
[1, 0, 7] : [0.] : 0.0
[1, 0, 8] : [0.] : 0.0
[1, 0, 9] : [0.] : 0.0
[1, 0, 10] : [0.] : 0.0
[1, 0, 11] : [0.] : 0.0
[1, 0, 12] : [0.] : 0.0
[1, 0, 13] : [0.] : 0.0
[1, 0, 14] : [0.] : 0.0
[1, 0, 15] : [0.] : 0.0
[1, 0, 16] : [0.] : 0.0
[1, 0, 17] : [0.] : 0.0
[1, 0, 18] : [0.] : 0.0
[1, 0, 19] : [0.] : 0.0
[1, 1, 0] : [0.] : inf
[1, 1, 1] : [0.] : 1.0
[1, 1, 2] : [0.] : 0.5
[1, 1, 3] : [0.] : 0.3333333333333333
[1, 1, 4] : [0.] : 0.25
[1, 1, 5] : [0.] : 0.2
[1, 1, 6] : [0.] : 0.16666666666666666
[1, 1, 7] : [0.] : 0.14285714285714285
[1, 1, 8] : [0.] : 0.125
[1, 1, 9] : [0.] : 0.1111111111111111
[1, 1, 10] : [0.] : 0.1
[1, 1, 11] : [0.] : 0.09090909090909091
[1, 1, 12] : [0.] : 0.08333333333333333
[1, 1, 13] : [0.] : 0.07692307692307693
[1, 1, 14] : [0.] : 0.07142857142857142
[1, 1, 15] : [0.] : 0.06666666666666667
[1, 1, 16] : [0.] : 0.0625
[1, 1, 17] : [0.] : 0.058823529411764705
[1, 1, 18] : [0.] : 0.05555555555555555
[1, 1, 19] : [0.] : 0.05263157894736842
[1, 2, 0] : [0.] : inf
[1, 2, 1] : [0.] : 2.0
[1, 2, 2] : [0.] : 1.0
[1, 2, 3] : [0.] : 0.6666666666666666
[1, 2, 4] : [0.] : 0.5
[1, 2, 5] : [0.] : 0.4
[1, 2, 6] : [0.] : 0.3333333333333333
[1, 2, 7] : [0.] : 0.2857142857142857
[1, 2, 8] : [0.] : 0.25
[1, 2, 9] : [0.] : 0.2222222222222222
[1, 2, 10] : [0.] : 0.2
[1, 2, 11] : [0.] : 0.18181818181818182
[1, 2, 12] : [0.] : 0.16666666666666666
[1, 2, 13] : [0.] : 0.15384615384615385
[1, 2, 14] : [0.] : 0.14285714285714285
[1, 2, 15] : [0.] : 0.13333333333333333
[1, 2, 16] : [0.] : 0.125
[1, 2, 17] : [0.] : 0.11764705882352941
[1, 2, 18] : [0.] : 0.1111111111111111
[1, 2, 19] : [0.] : 0.10526315789473684
[1, 3, 0] : [0.] : inf
[1, 3, 1] : [0.] : 3.0
[1, 3, 2] : [0.] : 1.5
[1, 3, 3] : [0.] : 1.0
[1, 3, 4] : [0.] : 0.75
[1, 3, 5] : [0.] : 0.6
[1, 3, 6] : [0.] : 0.5
[1, 3, 7] : [0.] : 0.42857142857142855
[1, 3, 8] : [0.] : 0.375
[1, 3, 9] : [0.] : 0.3333333333333333
[1, 3, 10] : [0.] : 0.3
[1, 3, 11] : [0.] : 0.2727272727272727
[1, 3, 12] : [0.] : 0.25
[1, 3, 13] : [0.] : 0.23076923076923078
[1, 3, 14] : [0.] : 0.21428571428571427
[1, 3, 15] : [0.] : 0.2
[1, 3, 16] : [0.] : 0.1875
[1, 3, 17] : [0.] : 0.17647058823529413
[1, 3, 18] : [0.] : 0.16666666666666666
[1, 3, 19] : [0.] : 0.15789473684210525
[1, 4, 0] : [0.] : inf
[1, 4, 1] : [0.] : 4.0
[1, 4, 2] : [0.] : 2.0
[1, 4, 3] : [0.] : 1.3333333333333333
[1, 4, 4] : [0.] : 1.0
[1, 4, 5] : [0.] : 0.8
[1, 4, 6] : [0.] : 0.6666666666666666
[1, 4, 7] : [0.] : 0.5714285714285714
[1, 4, 8] : [0.] : 0.5
[1, 4, 9] : [0.] : 0.4444444444444444
[1, 4, 10] : [0.] : 0.4
[1, 4, 11] : [0.] : 0.36363636363636365
[1, 4, 12] : [0.] : 0.3333333333333333
[1, 4, 13] : [0.] : 0.3076923076923077
[1, 4, 14] : [0.] : 0.2857142857142857
[1, 4, 15] : [0.] : 0.26666666666666666
[1, 4, 16] : [0.] : 0.25
[1, 4, 17] : [0.] : 0.23529411764705882
[1, 4, 18] : [0.] : 0.2222222222222222
[1, 4, 19] : [0.] : 0.21052631578947367
[1, 5, 0] : [0.] : inf
[1, 5, 1] : [0.] : 5.0
[1, 5, 2] : [0.] : 2.5
[1, 5, 3] : [0.] : 1.6666666666666667
[1, 5, 4] : [0.] : 1.25
[1, 5, 5] : [0.] : 1.0
[1, 5, 6] : [0.] : 0.8333333333333334
[1, 5, 7] : [0.] : 0.7142857142857143
[1, 5, 8] : [0.] : 0.625
[1, 5, 9] : [0.] : 0.5555555555555556
[1, 5, 10] : [0.] : 0.5
[1, 5, 11] : [0.] : 0.45454545454545453
[1, 5, 12] : [0.] : 0.4166666666666667
[1, 5, 13] : [0.] : 0.38461538461538464
[1, 5, 14] : [0.] : 0.35714285714285715
[1, 5, 15] : [0.] : 0.3333333333333333
[1, 5, 16] : [0.] : 0.3125
[1, 5, 17] : [0.] : 0.29411764705882354
[1, 5, 18] : [0.] : 0.2777777777777778
[1, 5, 19] : [0.] : 0.2631578947368421
[1, 6, 0] : [0.] : inf
[1, 6, 1] : [0.] : 6.0
[1, 6, 2] : [0.] : 3.0
[1, 6, 3] : [0.] : 2.0
[1, 6, 4] : [0.] : 1.5
[1, 6, 5] : [0.] : 1.2
[1, 6, 6] : [0.] : 1.0
[1, 6, 7] : [0.] : 0.8571428571428571
[1, 6, 8] : [0.] : 0.75
[1, 6, 9] : [0.] : 0.6666666666666666
[1, 6, 10] : [0.] : 0.6
[1, 6, 11] : [0.] : 0.5454545454545454
[1, 6, 12] : [0.] : 0.5
[1, 6, 13] : [0.] : 0.46153846153846156
[1, 6, 14] : [0.] : 0.42857142857142855
[1, 6, 15] : [0.] : 0.4
[1, 6, 16] : [0.] : 0.375
[1, 6, 17] : [0.] : 0.35294117647058826
[1, 6, 18] : [0.] : 0.3333333333333333
[1, 6, 19] : [0.] : 0.3157894736842105
[1, 7, 0] : [0.] : inf
[1, 7, 1] : [0.] : 7.0
[1, 7, 2] : [0.] : 3.5
[1, 7, 3] : [0.] : 2.3333333333333335
[1, 7, 4] : [0.] : 1.75
[1, 7, 5] : [0.] : 1.4
[1, 7, 6] : [0.] : 1.1666666666666667
[1, 7, 7] : [0.] : 1.0
[1, 7, 8] : [0.] : 0.875
[1, 7, 9] : [0.] : 0.7777777777777778
[1, 7, 10] : [0.] : 0.7
[1, 7, 11] : [0.] : 0.6363636363636364
[1, 7, 12] : [0.] : 0.5833333333333334
[1, 7, 13] : [0.] : 0.5384615384615384
[1, 7, 14] : [0.] : 0.5
[1, 7, 15] : [0.] : 0.4666666666666667
[1, 7, 16] : [0.] : 0.4375
[1, 7, 17] : [0.] : 0.4117647058823529
[1, 7, 18] : [0.] : 0.3888888888888889
[1, 7, 19] : [0.] : 0.3684210526315789
[1, 8, 0] : [0.] : inf
[1, 8, 1] : [0.] : 8.0
[1, 8, 2] : [0.] : 4.0
[1, 8, 3] : [0.] : 2.6666666666666665
[1, 8, 4] : [0.] : 2.0
[1, 8, 5] : [0.] : 1.6
[1, 8, 6] : [0.] : 1.3333333333333333
[1, 8, 7] : [0.] : 1.1428571428571428
[1, 8, 8] : [0.] : 1.0
[1, 8, 9] : [0.] : 0.8888888888888888
[1, 8, 10] : [0.] : 0.8
[1, 8, 11] : [0.] : 0.7272727272727273
[1, 8, 12] : [0.] : 0.6666666666666666
[1, 8, 13] : [0.] : 0.6153846153846154
[1, 8, 14] : [0.] : 0.5714285714285714
[1, 8, 15] : [0.] : 0.5333333333333333
[1, 8, 16] : [0.] : 0.5
[1, 8, 17] : [0.] : 0.47058823529411764
[1, 8, 18] : [0.] : 0.4444444444444444
[1, 8, 19] : [0.] : 0.42105263157894735
[1, 9, 0] : [0.] : inf
[1, 9, 1] : [0.] : 9.0
[1, 9, 2] : [0.] : 4.5
[1, 9, 3] : [0.] : 3.0
[1, 9, 4] : [0.] : 2.25
[1, 9, 5] : [0.] : 1.8
[1, 9, 6] : [0.] : 1.5
[1, 9, 7] : [0.] : 1.2857142857142858
[1, 9, 8] : [0.] : 1.125
[1, 9, 9] : [0.] : 1.0
[1, 9, 10] : [0.] : 0.9
[1, 9, 11] : [0.] : 0.8181818181818182
[1, 9, 12] : [0.] : 0.75
[1, 9, 13] : [0.] : 0.6923076923076923
[1, 9, 14] : [0.] : 0.6428571428571429
[1, 9, 15] : [0.] : 0.6
[1, 9, 16] : [0.] : 0.5625
[1, 9, 17] : [0.] : 0.5294117647058824
[1, 9, 18] : [0.] : 0.5
[1, 9, 19] : [0.] : 0.47368421052631576
[1, 10, 0] : [0.] : inf
[1, 10, 1] : [0.] : 10.0
[1, 10, 2] : [0.] : 5.0
[1, 10, 3] : [0.] : 3.3333333333333335
[1, 10, 4] : [0.] : 2.5
[1, 10, 5] : [0.] : 2.0
[1, 10, 6] : [0.] : 1.6666666666666667
[1, 10, 7] : [0.] : 1.4285714285714286
[1, 10, 8] : [0.] : 1.25
[1, 10, 9] : [0.] : 1.1111111111111112
[1, 10, 10] : [0.] : 1.0
[1, 10, 11] : [0.] : 0.9090909090909091
[1, 10, 12] : [0.] : 0.8333333333333334
[1, 10, 13] : [0.] : 0.7692307692307693
[1, 10, 14] : [0.] : 0.7142857142857143
[1, 10, 15] : [0.] : 0.6666666666666666
[1, 10, 16] : [0.] : 0.625
[1, 10, 17] : [0.] : 0.5882352941176471
[1, 10, 18] : [0.] : 0.5555555555555556
[1, 10, 19] : [0.] : 0.5263157894736842
[1, 11, 0] : [0.] : inf
[1, 11, 1] : [0.] : 11.0
[1, 11, 2] : [0.] : 5.5
[1, 11, 3] : [0.] : 3.6666666666666665
[1, 11, 4] : [0.] : 2.75
[1, 11, 5] : [0.] : 2.2
[1, 11, 6] : [0.] : 1.8333333333333333
[1, 11, 7] : [0.] : 1.5714285714285714
[1, 11, 8] : [0.] : 1.375
[1, 11, 9] : [0.] : 1.2222222222222223
[1, 11, 10] : [0.] : 1.1
[1, 11, 11] : [0.] : 1.0
[1, 11, 12] : [0.] : 0.9166666666666666
[1, 11, 13] : [0.] : 0.8461538461538461
[1, 11, 14] : [0.] : 0.7857142857142857
[1, 11, 15] : [0.] : 0.7333333333333333
[1, 11, 16] : [0.] : 0.6875
[1, 11, 17] : [0.] : 0.6470588235294118
[1, 11, 18] : [0.] : 0.6111111111111112
[1, 11, 19] : [0.] : 0.5789473684210527
[1, 12, 0] : [0.] : inf
[1, 12, 1] : [0.] : 12.0
[1, 12, 2] : [0.] : 6.0
[1, 12, 3] : [0.] : 4.0
[1, 12, 4] : [0.] : 3.0
[1, 12, 5] : [0.] : 2.4
[1, 12, 6] : [0.] : 2.0
[1, 12, 7] : [0.] : 1.7142857142857142
[1, 12, 8] : [0.] : 1.5
[1, 12, 9] : [0.] : 1.3333333333333333
[1, 12, 10] : [0.] : 1.2
[1, 12, 11] : [0.] : 1.0909090909090908
[1, 12, 12] : [0.] : 1.0
[1, 12, 13] : [0.] : 0.9230769230769231
[1, 12, 14] : [0.] : 0.8571428571428571
[1, 12, 15] : [0.] : 0.8
[1, 12, 16] : [0.] : 0.75
[1, 12, 17] : [0.] : 0.7058823529411765
[1, 12, 18] : [0.] : 0.6666666666666666
[1, 12, 19] : [0.] : 0.631578947368421
[1, 13, 0] : [0.] : inf
[1, 13, 1] : [0.] : 13.0
[1, 13, 2] : [0.] : 6.5
[1, 13, 3] : [0.] : 4.333333333333333
[1, 13, 4] : [0.] : 3.25
[1, 13, 5] : [0.] : 2.6
[1, 13, 6] : [0.] : 2.1666666666666665
[1, 13, 7] : [0.] : 1.8571428571428572
[1, 13, 8] : [0.] : 1.625
[1, 13, 9] : [0.] : 1.4444444444444444
[1, 13, 10] : [0.] : 1.3
[1, 13, 11] : [0.] : 1.1818181818181819
[1, 13, 12] : [0.] : 1.0833333333333333
[1, 13, 13] : [0.] : 1.0
[1, 13, 14] : [0.] : 0.9285714285714286
[1, 13, 15] : [0.] : 0.8666666666666667
[1, 13, 16] : [0.] : 0.8125
[1, 13, 17] : [0.] : 0.7647058823529411
[1, 13, 18] : [0.] : 0.7222222222222222
[1, 13, 19] : [0.] : 0.6842105263157895
[1, 14, 0] : [0.] : inf
[1, 14, 1] : [0.] : 14.0
[1, 14, 2] : [0.] : 7.0
[1, 14, 3] : [0.] : 4.666666666666667
[1, 14, 4] : [0.] : 3.5
[1, 14, 5] : [0.] : 2.8
[1, 14, 6] : [0.] : 2.3333333333333335
[1, 14, 7] : [0.] : 2.0
[1, 14, 8] : [0.] : 1.75
[1, 14, 9] : [0.] : 1.5555555555555556
[1, 14, 10] : [0.] : 1.4
[1, 14, 11] : [0.] : 1.2727272727272727
[1, 14, 12] : [0.] : 1.1666666666666667
[1, 14, 13] : [0.] : 1.0769230769230769
[1, 14, 14] : [0.] : 1.0
[1, 14, 15] : [0.] : 0.9333333333333333
[1, 14, 16] : [0.] : 0.875
[1, 14, 17] : [0.] : 0.8235294117647058
[1, 14, 18] : [0.] : 0.7777777777777778
[1, 14, 19] : [0.] : 0.7368421052631579
[1, 15, 0] : [0.] : inf
[1, 15, 1] : [0.] : 15.0
[1, 15, 2] : [0.] : 7.5
[1, 15, 3] : [0.] : 5.0
[1, 15, 4] : [0.] : 3.75
[1, 15, 5] : [0.] : 3.0
[1, 15, 6] : [0.] : 2.5
[1, 15, 7] : [0.] : 2.142857142857143
[1, 15, 8] : [0.] : 1.875
[1, 15, 9] : [0.] : 1.6666666666666667
[1, 15, 10] : [0.] : 1.5
[1, 15, 11] : [0.] : 1.3636363636363635
[1, 15, 12] : [0.] : 1.25
[1, 15, 13] : [0.] : 1.1538461538461537
[1, 15, 14] : [0.] : 1.0714285714285714
[1, 15, 15] : [0.] : 1.0
[1, 15, 16] : [0.] : 0.9375
[1, 15, 17] : [0.] : 0.8823529411764706
[1, 15, 18] : [0.] : 0.8333333333333334
[1, 15, 19] : [0.] : 0.7894736842105263
[1, 16, 0] : [0.] : inf
[1, 16, 1] : [0.] : 16.0
[1, 16, 2] : [0.] : 8.0
[1, 16, 3] : [0.] : 5.333333333333333
[1, 16, 4] : [0.] : 4.0
[1, 16, 5] : [0.] : 3.2
[1, 16, 6] : [0.] : 2.6666666666666665
[1, 16, 7] : [0.] : 2.2857142857142856
[1, 16, 8] : [0.] : 2.0
[1, 16, 9] : [0.] : 1.7777777777777777
[1, 16, 10] : [0.] : 1.6
[1, 16, 11] : [0.] : 1.4545454545454546
[1, 16, 12] : [0.] : 1.3333333333333333
[1, 16, 13] : [0.] : 1.2307692307692308
[1, 16, 14] : [0.] : 1.1428571428571428
[1, 16, 15] : [0.] : 1.0666666666666667
[1, 16, 16] : [0.] : 1.0
[1, 16, 17] : [0.] : 0.9411764705882353
[1, 16, 18] : [0.] : 0.8888888888888888
[1, 16, 19] : [0.] : 0.8421052631578947
[1, 17, 0] : [0.] : inf
[1, 17, 1] : [0.] : 17.0
[1, 17, 2] : [0.] : 8.5
[1, 17, 3] : [0.] : 5.666666666666667
[1, 17, 4] : [0.] : 4.25
[1, 17, 5] : [0.] : 3.4
[1, 17, 6] : [0.] : 2.8333333333333335
[1, 17, 7] : [0.] : 2.4285714285714284
[1, 17, 8] : [0.] : 2.125
[1, 17, 9] : [0.] : 1.8888888888888888
[1, 17, 10] : [0.] : 1.7
[1, 17, 11] : [0.] : 1.5454545454545454
[1, 17, 12] : [0.] : 1.4166666666666667
[1, 17, 13] : [0.] : 1.3076923076923077
[1, 17, 14] : [0.] : 1.2142857142857142
[1, 17, 15] : [0.] : 1.1333333333333333
[1, 17, 16] : [0.] : 1.0625
[1, 17, 17] : [0.] : 1.0
[1, 17, 18] : [0.] : 0.9444444444444444
[1, 17, 19] : [0.] : 0.8947368421052632
[1, 18, 0] : [0.] : inf
[1, 18, 1] : [0.] : 18.0
[1, 18, 2] : [0.] : 9.0
[1, 18, 3] : [0.] : 6.0
[1, 18, 4] : [0.] : 4.5
[1, 18, 5] : [0.] : 3.6
[1, 18, 6] : [0.] : 3.0
[1, 18, 7] : [0.] : 2.5714285714285716
[1, 18, 8] : [0.] : 2.25
[1, 18, 9] : [0.] : 2.0
[1, 18, 10] : [0.] : 1.8
[1, 18, 11] : [0.] : 1.6363636363636365
[1, 18, 12] : [0.] : 1.5
[1, 18, 13] : [0.] : 1.3846153846153846
[1, 18, 14] : [0.] : 1.2857142857142858
[1, 18, 15] : [0.] : 1.2
[1, 18, 16] : [0.] : 1.125
[1, 18, 17] : [0.] : 1.0588235294117647
[1, 18, 18] : [0.] : 1.0
[1, 18, 19] : [0.] : 0.9473684210526315
[1, 19, 0] : [0.] : inf
[1, 19, 1] : [0.] : 19.0
[1, 19, 2] : [0.] : 9.5
[1, 19, 3] : [0.] : 6.333333333333333
[1, 19, 4] : [0.] : 4.75
[1, 19, 5] : [0.] : 3.8
[1, 19, 6] : [0.] : 3.1666666666666665
[1, 19, 7] : [0.] : 2.7142857142857144
[1, 19, 8] : [0.] : 2.375
[1, 19, 9] : [0.] : 2.111111111111111
[1, 19, 10] : [0.] : 1.9
[1, 19, 11] : [0.] : 1.7272727272727273
[1, 19, 12] : [0.] : 1.5833333333333333
[1, 19, 13] : [0.] : 1.4615384615384615
[1, 19, 14] : [0.] : 1.3571428571428572
[1, 19, 15] : [0.] : 1.2666666666666666
[1, 19, 16] : [0.] : 1.1875
[1, 19, 17] : [0.] : 1.1176470588235294
[1, 19, 18] : [0.] : 1.0555555555555556
[1, 19, 19] : [0.] : 1.0
[2, 0, 0] : [0.] : inf
[2, 0, 1] : [0.] : inf
[2, 0, 2] : [0.] : inf
[2, 0, 3] : [0.] : inf
[2, 0, 4] : [0.] : inf
[2, 0, 5] : [0.] : inf
[2, 0, 6] : [0.] : inf
[2, 0, 7] : [0.] : inf
[2, 0, 8] : [0.] : inf
[2, 0, 9] : [0.] : inf
[2, 0, 10] : [0.] : inf
[2, 0, 11] : [0.] : inf
[2, 0, 12] : [0.] : inf
[2, 0, 13] : [0.] : inf
[2, 0, 14] : [0.] : inf
[2, 0, 15] : [0.] : inf
[2, 0, 16] : [0.] : inf
[2, 0, 17] : [0.] : inf
[2, 0, 18] : [0.] : inf
[2, 0, 19] : [0.] : inf
[2, 1, 0] : [0.] : 0.0
[2, 1, 1] : [0.] : 1.0
[2, 1, 2] : [0.] : 2.0
[2, 1, 3] : [0.] : 3.0
[2, 1, 4] : [0.] : 4.0
[2, 1, 5] : [0.] : 5.0
[2, 1, 6] : [0.] : 6.0
[2, 1, 7] : [0.] : 7.0
[2, 1, 8] : [0.] : 8.0
[2, 1, 9] : [0.] : 9.0
[2, 1, 10] : [0.] : 10.0
[2, 1, 11] : [0.] : 11.0
[2, 1, 12] : [0.] : 12.0
[2, 1, 13] : [0.] : 13.0
[2, 1, 14] : [0.] : 14.0
[2, 1, 15] : [0.] : 15.0
[2, 1, 16] : [0.] : 16.0
[2, 1, 17] : [0.] : 17.0
[2, 1, 18] : [0.] : 18.0
[2, 1, 19] : [0.] : 19.0
[2, 2, 0] : [0.] : 0.0
[2, 2, 1] : [0.] : 0.5
[2, 2, 2] : [0.] : 1.0
[2, 2, 3] : [0.] : 1.5
[2, 2, 4] : [0.] : 2.0
[2, 2, 5] : [0.] : 2.5
[2, 2, 6] : [0.] : 3.0
[2, 2, 7] : [0.] : 3.5
[2, 2, 8] : [0.] : 4.0
[2, 2, 9] : [0.] : 4.5
[2, 2, 10] : [0.] : 5.0
[2, 2, 11] : [0.] : 5.5
[2, 2, 12] : [0.] : 6.0
[2, 2, 13] : [0.] : 6.5
[2, 2, 14] : [0.] : 7.0
[2, 2, 15] : [0.] : 7.5
[2, 2, 16] : [0.] : 8.0
[2, 2, 17] : [0.] : 8.5
[2, 2, 18] : [0.] : 9.0
[2, 2, 19] : [0.] : 9.5
[2, 3, 0] : [0.] : 0.0
[2, 3, 1] : [0.] : 0.3333333333333333
[2, 3, 2] : [0.] : 0.6666666666666666
[2, 3, 3] : [0.] : 1.0
[2, 3, 4] : [0.] : 1.3333333333333333
[2, 3, 5] : [0.] : 1.6666666666666667
[2, 3, 6] : [0.] : 2.0
[2, 3, 7] : [0.] : 2.3333333333333335
[2, 3, 8] : [0.] : 2.6666666666666665
[2, 3, 9] : [0.] : 3.0
[2, 3, 10] : [0.] : 3.3333333333333335
[2, 3, 11] : [0.] : 3.6666666666666665
[2, 3, 12] : [0.] : 4.0
[2, 3, 13] : [0.] : 4.333333333333333
[2, 3, 14] : [0.] : 4.666666666666667
[2, 3, 15] : [0.] : 5.0
[2, 3, 16] : [0.] : 5.333333333333333
[2, 3, 17] : [0.] : 5.666666666666667
[2, 3, 18] : [0.] : 6.0
[2, 3, 19] : [0.] : 6.333333333333333
[2, 4, 0] : [0.] : 0.0
[2, 4, 1] : [0.] : 0.25
[2, 4, 2] : [0.] : 0.5
[2, 4, 3] : [0.] : 0.75
[2, 4, 4] : [0.] : 1.0
[2, 4, 5] : [0.] : 1.25
[2, 4, 6] : [0.] : 1.5
[2, 4, 7] : [0.] : 1.75
[2, 4, 8] : [0.] : 2.0
[2, 4, 9] : [0.] : 2.25
[2, 4, 10] : [0.] : 2.5
[2, 4, 11] : [0.] : 2.75
[2, 4, 12] : [0.] : 3.0
[2, 4, 13] : [0.] : 3.25
[2, 4, 14] : [0.] : 3.5
[2, 4, 15] : [0.] : 3.75
[2, 4, 16] : [0.] : 4.0
[2, 4, 17] : [0.] : 4.25
[2, 4, 18] : [0.] : 4.5
[2, 4, 19] : [0.] : 4.75
[2, 5, 0] : [0.] : 0.0
[2, 5, 1] : [0.] : 0.2
[2, 5, 2] : [0.] : 0.4
[2, 5, 3] : [0.] : 0.6
[2, 5, 4] : [0.] : 0.8
[2, 5, 5] : [0.] : 1.0
[2, 5, 6] : [0.] : 1.2
[2, 5, 7] : [0.] : 1.4
[2, 5, 8] : [0.] : 1.6
[2, 5, 9] : [0.] : 1.8
[2, 5, 10] : [0.] : 2.0
[2, 5, 11] : [0.] : 2.2
[2, 5, 12] : [0.] : 2.4
[2, 5, 13] : [0.] : 2.6
[2, 5, 14] : [0.] : 2.8
[2, 5, 15] : [0.] : 3.0
[2, 5, 16] : [0.] : 3.2
[2, 5, 17] : [0.] : 3.4
[2, 5, 18] : [0.] : 3.6
[2, 5, 19] : [0.] : 3.8
[2, 6, 0] : [0.] : 0.0
[2, 6, 1] : [0.] : 0.16666666666666666
[2, 6, 2] : [0.] : 0.3333333333333333
[2, 6, 3] : [0.] : 0.5
[2, 6, 4] : [0.] : 0.6666666666666666
[2, 6, 5] : [0.] : 0.8333333333333334
[2, 6, 6] : [0.] : 1.0
[2, 6, 7] : [0.] : 1.1666666666666667
[2, 6, 8] : [0.] : 1.3333333333333333
[2, 6, 9] : [0.] : 1.5
[2, 6, 10] : [0.] : 1.6666666666666667
[2, 6, 11] : [0.] : 1.8333333333333333
[2, 6, 12] : [0.] : 2.0
[2, 6, 13] : [0.] : 2.1666666666666665
[2, 6, 14] : [0.] : 2.3333333333333335
[2, 6, 15] : [0.] : 2.5
[2, 6, 16] : [0.] : 2.6666666666666665
[2, 6, 17] : [0.] : 2.8333333333333335
[2, 6, 18] : [0.] : 3.0
[2, 6, 19] : [0.] : 3.1666666666666665
[2, 7, 0] : [0.] : 0.0
[2, 7, 1] : [0.] : 0.14285714285714285
[2, 7, 2] : [0.] : 0.2857142857142857
[2, 7, 3] : [0.] : 0.42857142857142855
[2, 7, 4] : [0.] : 0.5714285714285714
[2, 7, 5] : [0.] : 0.7142857142857143
[2, 7, 6] : [0.] : 0.8571428571428571
[2, 7, 7] : [0.] : 1.0
[2, 7, 8] : [0.] : 1.1428571428571428
[2, 7, 9] : [0.] : 1.2857142857142858
[2, 7, 10] : [0.] : 1.4285714285714286
[2, 7, 11] : [0.] : 1.5714285714285714
[2, 7, 12] : [0.] : 1.7142857142857142
[2, 7, 13] : [0.] : 1.8571428571428572
[2, 7, 14] : [0.] : 2.0
[2, 7, 15] : [0.] : 2.142857142857143
[2, 7, 16] : [0.] : 2.2857142857142856
[2, 7, 17] : [0.] : 2.4285714285714284
[2, 7, 18] : [0.] : 2.5714285714285716
[2, 7, 19] : [0.] : 2.7142857142857144
[2, 8, 0] : [0.] : 0.0
[2, 8, 1] : [0.] : 0.125
[2, 8, 2] : [0.] : 0.25
[2, 8, 3] : [0.] : 0.375
[2, 8, 4] : [0.] : 0.5
[2, 8, 5] : [0.] : 0.625
[2, 8, 6] : [0.] : 0.75
[2, 8, 7] : [0.] : 0.875
[2, 8, 8] : [0.] : 1.0
[2, 8, 9] : [0.] : 1.125
[2, 8, 10] : [0.] : 1.25
[2, 8, 11] : [0.] : 1.375
[2, 8, 12] : [0.] : 1.5
[2, 8, 13] : [0.] : 1.625
[2, 8, 14] : [0.] : 1.75
[2, 8, 15] : [0.] : 1.875
[2, 8, 16] : [0.] : 2.0
[2, 8, 17] : [0.] : 2.125
[2, 8, 18] : [0.] : 2.25
[2, 8, 19] : [0.] : 2.375
[2, 9, 0] : [0.] : 0.0
[2, 9, 1] : [0.] : 0.1111111111111111
[2, 9, 2] : [0.] : 0.2222222222222222
[2, 9, 3] : [0.] : 0.3333333333333333
[2, 9, 4] : [0.] : 0.4444444444444444
[2, 9, 5] : [0.] : 0.5555555555555556
[2, 9, 6] : [0.] : 0.6666666666666666
[2, 9, 7] : [0.] : 0.7777777777777778
[2, 9, 8] : [0.] : 0.8888888888888888
[2, 9, 9] : [0.] : 1.0
[2, 9, 10] : [0.] : 1.1111111111111112
[2, 9, 11] : [0.] : 1.2222222222222223
[2, 9, 12] : [0.] : 1.3333333333333333
[2, 9, 13] : [0.] : 1.4444444444444444
[2, 9, 14] : [0.] : 1.5555555555555556
[2, 9, 15] : [0.] : 1.6666666666666667
[2, 9, 16] : [0.] : 1.7777777777777777
[2, 9, 17] : [0.] : 1.8888888888888888
[2, 9, 18] : [0.] : 2.0
[2, 9, 19] : [0.] : 2.111111111111111
[2, 10, 0] : [0.] : 0.0
[2, 10, 1] : [0.] : 0.1
[2, 10, 2] : [0.] : 0.2
[2, 10, 3] : [0.] : 0.3
[2, 10, 4] : [0.] : 0.4
[2, 10, 5] : [0.] : 0.5
[2, 10, 6] : [0.] : 0.6
[2, 10, 7] : [0.] : 0.7
[2, 10, 8] : [0.] : 0.8
[2, 10, 9] : [0.] : 0.9
[2, 10, 10] : [0.] : 1.0
[2, 10, 11] : [0.] : 1.1
[2, 10, 12] : [0.] : 1.2
[2, 10, 13] : [0.] : 1.3
[2, 10, 14] : [0.] : 1.4
[2, 10, 15] : [0.] : 1.5
[2, 10, 16] : [0.] : 1.6
[2, 10, 17] : [0.] : 1.7
[2, 10, 18] : [0.] : 1.8
[2, 10, 19] : [0.] : 1.9
[2, 11, 0] : [0.] : 0.0
[2, 11, 1] : [0.] : 0.09090909090909091
[2, 11, 2] : [0.] : 0.18181818181818182
[2, 11, 3] : [0.] : 0.2727272727272727
[2, 11, 4] : [0.] : 0.36363636363636365
[2, 11, 5] : [0.] : 0.45454545454545453
[2, 11, 6] : [0.] : 0.5454545454545454
[2, 11, 7] : [0.] : 0.6363636363636364
[2, 11, 8] : [0.] : 0.7272727272727273
[2, 11, 9] : [0.] : 0.8181818181818182
[2, 11, 10] : [0.] : 0.9090909090909091
[2, 11, 11] : [0.] : 1.0
[2, 11, 12] : [0.] : 1.0909090909090908
[2, 11, 13] : [0.] : 1.1818181818181819
[2, 11, 14] : [0.] : 1.2727272727272727
[2, 11, 15] : [0.] : 1.3636363636363635
[2, 11, 16] : [0.] : 1.4545454545454546
[2, 11, 17] : [0.] : 1.5454545454545454
[2, 11, 18] : [0.] : 1.6363636363636365
[2, 11, 19] : [0.] : 1.7272727272727273
[2, 12, 0] : [0.] : 0.0
[2, 12, 1] : [0.] : 0.08333333333333333
[2, 12, 2] : [0.] : 0.16666666666666666
[2, 12, 3] : [0.] : 0.25
[2, 12, 4] : [0.] : 0.3333333333333333
[2, 12, 5] : [0.] : 0.4166666666666667
[2, 12, 6] : [0.] : 0.5
[2, 12, 7] : [0.] : 0.5833333333333334
[2, 12, 8] : [0.] : 0.6666666666666666
[2, 12, 9] : [0.] : 0.75
[2, 12, 10] : [0.] : 0.8333333333333334
[2, 12, 11] : [0.] : 0.9166666666666666
[2, 12, 12] : [0.] : 1.0
[2, 12, 13] : [0.] : 1.0833333333333333
[2, 12, 14] : [0.] : 1.1666666666666667
[2, 12, 15] : [0.] : 1.25
[2, 12, 16] : [0.] : 1.3333333333333333
[2, 12, 17] : [0.] : 1.4166666666666667
[2, 12, 18] : [0.] : 1.5
[2, 12, 19] : [0.] : 1.5833333333333333
[2, 13, 0] : [0.] : 0.0
[2, 13, 1] : [0.] : 0.07692307692307693
[2, 13, 2] : [0.] : 0.15384615384615385
[2, 13, 3] : [0.] : 0.23076923076923078
[2, 13, 4] : [0.] : 0.3076923076923077
[2, 13, 5] : [0.] : 0.38461538461538464
[2, 13, 6] : [0.] : 0.46153846153846156
[2, 13, 7] : [0.] : 0.5384615384615384
[2, 13, 8] : [0.] : 0.6153846153846154
[2, 13, 9] : [0.] : 0.6923076923076923
[2, 13, 10] : [0.] : 0.7692307692307693
[2, 13, 11] : [0.] : 0.8461538461538461
[2, 13, 12] : [0.] : 0.9230769230769231
[2, 13, 13] : [0.] : 1.0
[2, 13, 14] : [0.] : 1.0769230769230769
[2, 13, 15] : [0.] : 1.1538461538461537
[2, 13, 16] : [0.] : 1.2307692307692308
[2, 13, 17] : [0.] : 1.3076923076923077
[2, 13, 18] : [0.] : 1.3846153846153846
[2, 13, 19] : [0.] : 1.4615384615384615
[2, 14, 0] : [0.] : 0.0
[2, 14, 1] : [0.] : 0.07142857142857142
[2, 14, 2] : [0.] : 0.14285714285714285
[2, 14, 3] : [0.] : 0.21428571428571427
[2, 14, 4] : [0.] : 0.2857142857142857
[2, 14, 5] : [0.] : 0.35714285714285715
[2, 14, 6] : [0.] : 0.42857142857142855
[2, 14, 7] : [0.] : 0.5
[2, 14, 8] : [0.] : 0.5714285714285714
[2, 14, 9] : [0.] : 0.6428571428571429
[2, 14, 10] : [0.] : 0.7142857142857143
[2, 14, 11] : [0.] : 0.7857142857142857
[2, 14, 12] : [0.] : 0.8571428571428571
[2, 14, 13] : [0.] : 0.9285714285714286
[2, 14, 14] : [0.] : 1.0
[2, 14, 15] : [0.] : 1.0714285714285714
[2, 14, 16] : [0.] : 1.1428571428571428
[2, 14, 17] : [0.] : 1.2142857142857142
[2, 14, 18] : [0.] : 1.2857142857142858
[2, 14, 19] : [0.] : 1.3571428571428572
[2, 15, 0] : [0.] : 0.0
[2, 15, 1] : [0.] : 0.06666666666666667
[2, 15, 2] : [0.] : 0.13333333333333333
[2, 15, 3] : [0.] : 0.2
[2, 15, 4] : [0.] : 0.26666666666666666
[2, 15, 5] : [0.] : 0.3333333333333333
[2, 15, 6] : [0.] : 0.4
[2, 15, 7] : [0.] : 0.4666666666666667
[2, 15, 8] : [0.] : 0.5333333333333333
[2, 15, 9] : [0.] : 0.6
[2, 15, 10] : [0.] : 0.6666666666666666
[2, 15, 11] : [0.] : 0.7333333333333333
[2, 15, 12] : [0.] : 0.8
[2, 15, 13] : [0.] : 0.8666666666666667
[2, 15, 14] : [0.] : 0.9333333333333333
[2, 15, 15] : [0.] : 1.0
[2, 15, 16] : [0.] : 1.0666666666666667
[2, 15, 17] : [0.] : 1.1333333333333333
[2, 15, 18] : [0.] : 1.2
[2, 15, 19] : [0.] : 1.2666666666666666
[2, 16, 0] : [0.] : 0.0
[2, 16, 1] : [0.] : 0.0625
[2, 16, 2] : [0.] : 0.125
[2, 16, 3] : [0.] : 0.1875
[2, 16, 4] : [0.] : 0.25
[2, 16, 5] : [0.] : 0.3125
[2, 16, 6] : [0.] : 0.375
[2, 16, 7] : [0.] : 0.4375
[2, 16, 8] : [0.] : 0.5
[2, 16, 9] : [0.] : 0.5625
[2, 16, 10] : [0.] : 0.625
[2, 16, 11] : [0.] : 0.6875
[2, 16, 12] : [0.] : 0.75
[2, 16, 13] : [0.] : 0.8125
[2, 16, 14] : [0.] : 0.875
[2, 16, 15] : [0.] : 0.9375
[2, 16, 16] : [0.] : 1.0
[2, 16, 17] : [0.] : 1.0625
[2, 16, 18] : [0.] : 1.125
[2, 16, 19] : [0.] : 1.1875
[2, 17, 0] : [0.] : 0.0
[2, 17, 1] : [0.] : 0.058823529411764705
[2, 17, 2] : [0.] : 0.11764705882352941
[2, 17, 3] : [0.] : 0.17647058823529413
[2, 17, 4] : [0.] : 0.23529411764705882
[2, 17, 5] : [0.] : 0.29411764705882354
[2, 17, 6] : [0.] : 0.35294117647058826
[2, 17, 7] : [0.] : 0.4117647058823529
[2, 17, 8] : [0.] : 0.47058823529411764
[2, 17, 9] : [0.] : 0.5294117647058824
[2, 17, 10] : [0.] : 0.5882352941176471
[2, 17, 11] : [0.] : 0.6470588235294118
[2, 17, 12] : [0.] : 0.7058823529411765
[2, 17, 13] : [0.] : 0.7647058823529411
[2, 17, 14] : [0.] : 0.8235294117647058
[2, 17, 15] : [0.] : 0.8823529411764706
[2, 17, 16] : [0.] : 0.9411764705882353
[2, 17, 17] : [0.] : 1.0
[2, 17, 18] : [0.] : 1.0588235294117647
[2, 17, 19] : [0.] : 1.1176470588235294
[2, 18, 0] : [0.] : 0.0
[2, 18, 1] : [0.] : 0.05555555555555555
[2, 18, 2] : [0.] : 0.1111111111111111
[2, 18, 3] : [0.] : 0.16666666666666666
[2, 18, 4] : [0.] : 0.2222222222222222
[2, 18, 5] : [0.] : 0.2777777777777778
[2, 18, 6] : [0.] : 0.3333333333333333
[2, 18, 7] : [0.] : 0.3888888888888889
[2, 18, 8] : [0.] : 0.4444444444444444
[2, 18, 9] : [0.] : 0.5
[2, 18, 10] : [0.] : 0.5555555555555556
[2, 18, 11] : [0.] : 0.6111111111111112
[2, 18, 12] : [0.] : 0.6666666666666666
[2, 18, 13] : [0.] : 0.7222222222222222
[2, 18, 14] : [0.] : 0.7777777777777778
[2, 18, 15] : [0.] : 0.8333333333333334
[2, 18, 16] : [0.] : 0.8888888888888888
[2, 18, 17] : [0.] : 0.9444444444444444
[2, 18, 18] : [0.] : 1.0
[2, 18, 19] : [0.] : 1.0555555555555556
[2, 19, 0] : [0.] : 0.0
[2, 19, 1] : [0.] : 0.05263157894736842
[2, 19, 2] : [0.] : 0.10526315789473684
[2, 19, 3] : [0.] : 0.15789473684210525
[2, 19, 4] : [0.] : 0.21052631578947367
[2, 19, 5] : [0.] : 0.2631578947368421
[2, 19, 6] : [0.] : 0.3157894736842105
[2, 19, 7] : [0.] : 0.3684210526315789
[2, 19, 8] : [0.] : 0.42105263157894735
[2, 19, 9] : [0.] : 0.47368421052631576
[2, 19, 10] : [0.] : 0.5263157894736842
[2, 19, 11] : [0.] : 0.5789473684210527
[2, 19, 12] : [0.] : 0.631578947368421
[2, 19, 13] : [0.] : 0.6842105263157895
[2, 19, 14] : [0.] : 0.7368421052631579
[2, 19, 15] : [0.] : 0.7894736842105263
[2, 19, 16] : [0.] : 0.8421052631578947
[2, 19, 17] : [0.] : 0.8947368421052632
[2, 19, 18] : [0.] : 0.9473684210526315
[2, 19, 19] : [0.] : 1.0

In [ ]: