Example 3: Build a Combinatorial Library

This notebook briefly introduces the molli combine workflow which allows to substitute attachment points on the molecules in a combinatorial fashion.

Hardware Specification for Rerun

Desktop workstation with 2x (AMD EPYC 7702 64-Core) with total of 128 physical and 256 logical cores, 1024 GB DDR4 with Ubuntu 22.04 LTS operating system.

[1]:
import molli as ml
ml.visual.configure()

Overview.

We start with the file phosphorus_core.mol2, in which we define the three attached pseudoatoms labeled AP1, AP2 and AP3. These are the “attachment points”: the pseudoatoms that define the direction of the substitution. These atoms need to be replaced with the groups found in another file: substituents.cdxml. We will be generating two libraries: achiral and chiral phosphines.

[2]:
mol = ml.load("phosphorus_core.mol2")
for a in mol.atoms:
    print(a)
mol
Atom(element=P, isotope=None, label='P', formal_charge=0, formal_spin=0)
Atom(element=Unknown, isotope=None, label='AP1', formal_charge=0, formal_spin=0)
Atom(element=Unknown, isotope=None, label='AP2', formal_charge=0, formal_spin=0)
Atom(element=Unknown, isotope=None, label='AP3', formal_charge=0, formal_spin=0)

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

[2]:
Molecule(name='P', formula='P1 Unknown3')

Import prerequisite molecules as molli collections

[3]:
!molli compile phosphorus_core.mol2 -o P.mlib --overwrite
Matched 1 files for importing.
Importing molecules: 100%|██████████████████████| 1/1 [00:00<00:00, 2411.91it/s]
[4]:
!molli parse substituents.cdxml -o substituents.mlib --hadd --overwrite
Parsing substituents.cdxml: 100%|██████████████| 21/21 [00:00<00:00, 497.99it/s]

Achiral phosphine ligands

The objective here is to create a library of phosphines in which the P atom is not stereogenic, which means that at least two substituents need to be identical. We are going to achieve this by using molli’s command line interface.

Create a disubstituted phosphine library with --mode same

This ensures that two substituents will be identical

[5]:
!molli combine --help
usage: molli combine [-h] -s <substituents.mlib>
                     [-m {same,permutns,combns,combns_repl}]
                     [-a ATTACHMENT_POINTS] [-n 1] [-b 1] -o <combined.mlib>
                     [-sep SEPARATOR] [--hadd]
                     [--obopt [ff maxiter tol disp ...]] [--overwrite]
                     cores

Combines two lists of molecules together

positional arguments:
  cores                 Base library file to combine wth substituents

options:
  -h, --help            show this help message and exit
  -s <substituents.mlib>, --substituents <substituents.mlib>
                        Substituents to add at each attachment of a core file
  -m {same,permutns,combns,combns_repl}, --mode {same,permutns,combns,combns_repl}
                        Method for combining substituents
  -a ATTACHMENT_POINTS, --attachment_points ATTACHMENT_POINTS
                        Label used to find attachment points
  -n 1, --nprocs 1      Number of processes to be used in parallel
  -b 1, --batchsize 1   Number of molecules to be processed at a time on a
                        single core
  -o <combined.mlib>, --output <combined.mlib>
                        File to be written to
  -sep SEPARATOR, --separator SEPARATOR
                        Name separator
  --hadd                Add implicit hydrogen atoms wherever possible.
  --obopt [ff maxiter tol disp ...]
                        Perform openbabel optimization on the fly. This
                        accepts up to 4 arguments. Arg 1: the forcefield
                        (uff/mmff94/gaff/ghemical). Arg 2: is the max number
                        of steps (default=500). Arg 3: energy convergence
                        criterion (default=1e-4) Arg 4: geometry displacement
                        (default=False) but values ~0.01-0.1 can help escape
                        planarity.
  --overwrite           Overwrite the target files if they exist (default is
                        false)
[6]:
!molli combine P.mlib -s substituents.mlib -a AP1 -a AP2 -m same -o R2P.mlib --hadd --overwrite
Will create a library of size 21
100%|█████████████████████████████████████████████| 1/1 [00:00<00:00, 18.76it/s]

Finally, we can attach the last remaining substituent to finish the achiral phosphine library.

[7]:
!molli combine R2P.mlib -a AP3 -s substituents.mlib --hadd --obopt UFF 1000 1e-4 0.02 --overwrite -n1 -b8 -o R3P_achiral.mlib
Will create a library of size 441
100%|███████████████████████████████████████████| 63/63 [02:50<00:00,  2.70s/it]

In order to make the calculation faster, some of molli workflows (eventually, all of them) implement parallelization. See the acceleration for yourself!

[8]:
!molli combine R2P.mlib -a AP3 -s substituents.mlib --hadd --obopt UFF 1000 1e-4 0.02 --overwrite -n8 -b8 -o R3P_achiral.mlib
Will create a library of size 441
100%|███████████████████████████████████████████| 63/63 [00:25<00:00,  2.49it/s]

Chiral phosphine ligands

The objective here is to create a library of phosphines in which the P atom is stereogenic, which means that all substituents need to be different. We are going to achieve this by using molli’s command line interface.

The magic here is in the use of -m combns parameter of the molli combine workflow. This means that for each

[9]:
!molli combine P.mlib -s substituents.mlib -a AP1 -a AP2 -a AP3 -m combns -o R3P_chiral.mlib --hadd --obopt UFF 1000 1e-4 0.02 --overwrite -n1 -b8
Will create a library of size 1330
100%|█████████████████████████████████████████| 167/167 [08:35<00:00,  3.09s/it]

Jupyter also allows for special commands, so the command %mlib_view allows for direct visualization of molecules in a MoleculeLibrary without needing to run a full command to open it. The syntax is as follows:

%mlib_view <LIB_PATH> <KEY>

[10]:
%mlib_view R3P_chiral.mlib P_15_17_14

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

[11]:
!molli ls R3P_chiral.mlib
    0  P_16_6_9
    1  P_9_13_12
    2  P_9_5_14
    3  P_3_20_12
    4  P_16_5_7
    5  P_4_2_10
    6  P_21_10_12
    7  P_3_17_20
    8  P_17_8_18
    9  P_4_17_9
   10  P_1_18_19
   11  P_16_13_18
   12  P_11_1_13
   13  P_3_17_13
   14  P_16_20_18
   15  P_3_17_5
   16  P_6_17_18
   17  P_4_17_12
   18  P_3_2_14
   19  P_21_20_18
   20  P_15_21_9
   21  P_8_5_19
   22  P_3_6_12
   23  P_15_20_5
   24  P_3_4_19
   25  P_16_15_18
   26  P_3_21_19
   27  P_21_1_8
   28  P_21_18_2
   29  P_6_13_18
   30  P_8_13_2
   31  P_3_19_10
   32  P_21_2_10
   33  P_21_5_12
   34  P_3_9_2
   35  P_5_18_19
   36  P_3_15_6
   37  P_21_5_13
   38  P_17_8_7
   39  P_11_20_14
   40  P_16_18_19
   41  P_19_10_7
   42  P_11_13_2
   43  P_13_2_12
   44  P_11_5_2
   45  P_4_11_20
   46  P_16_5_14
   47  P_21_20_9
   48  P_6_5_12
   49  P_4_9_2
   50  P_16_21_19
   51  P_4_18_7
   52  P_21_4_14
   53  P_11_5_14
   54  P_3_18_2
   55  P_1_2_19
   56  P_3_6_18
   57  P_4_5_12
   58  P_4_20_14
   59  P_6_2_7
   60  P_11_17_18
   61  P_11_17_19
   62  P_21_4_20
   63  P_1_6_19
   64  P_21_11_8
   65  P_5_2_14
   66  P_20_9_18
   67  P_21_11_6
   68  P_6_13_2
   69  P_16_1_19
   70  P_3_5_19
   71  P_4_11_5
   72  P_16_11_12
   73  P_15_20_9
   74  P_16_21_17
   75  P_15_9_18
   76  P_11_1_17
   77  P_21_4_7
   78  P_17_20_9
   79  P_15_11_18
   80  P_16_1_9
   81  P_18_2_10
   82  P_11_5_7
   83  P_8_18_14
   84  P_21_4_11
   85  P_16_21_7
   86  P_3_6_5
   87  P_13_19_12
   88  P_13_12_7
   89  P_17_2_7
   90  P_20_5_2
   91  P_6_10_12
   92  P_11_17_13
   93  P_11_17_2
   94  P_4_20_5
   95  P_4_8_5
   96  P_11_17_9
   97  P_11_17_7
   98  P_4_9_5
   99  P_11_2_19
  100  P_21_12_7
  101  P_11_17_12
  102  P_17_14_7
  103  P_1_6_5
  104  P_21_8_20
  105  P_3_17_12
  106  P_3_17_7
  107  P_20_10_7
  108  P_21_6_2
  109  P_11_17_10
  110  P_15_17_8
  111  P_15_4_7
  112  P_1_6_9
  113  P_1_13_12
  114  P_16_8_12
  115  P_11_8_19
  116  P_20_9_5
  117  P_3_13_10
  118  P_18_2_19
  119  P_20_18_14
  120  P_6_8_5
  121  P_21_6_14
  122  P_6_2_19
  123  P_11_13_14
  124  P_9_5_7
  125  P_1_17_19
  126  P_3_1_18
  127  P_17_13_18
  128  P_16_1_7
  129  P_3_15_21
  130  P_4_8_10
  131  P_21_13_2
  132  P_15_5_13
  133  P_1_2_7
  134  P_20_14_7
  135  P_15_2_14
  136  P_18_14_7
  137  P_21_9_7
  138  P_4_14_7
  139  P_20_19_10
  140  P_11_8_18
  141  P_6_8_18
  142  P_6_13_7
  143  P_21_9_18
  144  P_3_16_12
  145  P_3_21_20
  146  P_17_9_7
  147  P_16_17_14
  148  P_11_18_19
  149  P_17_8_20
  150  P_11_13_12
  151  P_3_5_14
  152  P_4_1_20
  153  P_15_8_14
  154  P_9_13_10
  155  P_4_1_10
  156  P_16_13_19
  157  P_1_18_2
  158  P_6_8_19
  159  P_3_6_10
  160  P_20_13_19
  161  P_3_15_14
  162  P_13_10_7
  163  P_15_18_14
  164  P_16_4_9
  165  P_21_6_17
  166  P_6_2_14
  167  P_3_15_7
  168  P_1_8_19
  169  P_1_8_2
  170  P_4_9_12
  171  P_11_6_9
  172  P_17_19_14
  173  P_8_18_7
  174  P_15_19_7
  175  P_21_4_19
  176  P_17_9_13
  177  P_4_10_7
  178  P_4_5_13
  179  P_21_2_7
  180  P_11_5_18
  181  P_4_20_9
  182  P_3_11_20
  183  P_4_20_19
  184  P_16_20_5
  185  P_17_20_12
  186  P_16_5_12
  187  P_9_2_19
  188  P_4_1_19
  189  P_21_8_19
  190  P_15_5_19
  191  P_8_18_19
  192  P_21_6_8
  193  P_16_4_11
  194  P_17_2_12
  195  P_15_4_13
  196  P_5_13_12
  197  P_1_6_7
  198  P_15_4_8
  199  P_5_14_7
  200  P_21_19_14
  201  P_21_6_7
  202  P_4_11_7
  203  P_16_11_8
  204  P_21_5_2
  205  P_9_5_10
  206  P_21_13_14
  207  P_17_5_2
  208  P_20_9_2
  209  P_6_5_14
  210  P_3_21_2
  211  P_11_5_19
  212  P_16_2_19
  213  P_3_15_17
  214  P_16_21_8
  215  P_9_13_7
  216  P_3_5_2
  217  P_5_2_19
  218  P_4_8_20
  219  P_17_5_13
  220  P_16_11_10
  221  P_1_17_20
  222  P_3_15_2
  223  P_4_6_9
  224  P_21_11_1
  225  P_5_18_7
  226  P_8_10_7
  227  P_1_5_12
  228  P_15_11_2
  229  P_6_14_12
  230  P_16_18_7
  231  P_4_6_2
  232  P_15_18_10
  233  P_3_16_4
  234  P_17_10_14
  235  P_20_18_7
  236  P_21_6_20
  237  P_8_5_12
  238  P_16_4_12
  239  P_11_6_19
  240  P_16_2_7
  241  P_4_9_18
  242  P_4_11_1
  243  P_17_8_9
  244  P_3_1_9
  245  P_11_6_7
  246  P_11_1_12
  247  P_1_19_7
  248  P_15_4_20
  249  P_4_6_13
  250  P_16_8_14
  251  P_21_6_9
  252  P_3_21_14
  253  P_4_13_12
  254  P_20_2_10
  255  P_15_6_7
  256  P_1_17_5
  257  P_15_11_9
  258  P_16_8_2
  259  P_17_20_13
  260  P_15_19_12
  261  P_17_20_5
  262  P_16_6_2
  263  P_18_2_7
  264  P_21_17_14
  265  P_8_9_7
  266  P_21_6_19
  267  P_1_20_12
  268  P_6_17_2
  269  P_3_21_17
  270  P_9_18_12
  271  P_15_11_13
  272  P_16_11_18
  273  P_16_17_7
  274  P_6_13_12
  275  P_3_17_2
  276  P_1_17_9
  277  P_6_9_19
  278  P_16_5_19
  279  P_21_1_10
  280  P_4_17_10
  281  P_3_19_14
  282  P_11_8_9
  283  P_8_9_10
  284  P_21_11_14
  285  P_4_2_14
  286  P_16_20_9
  287  P_8_2_10
  288  P_20_13_12
  289  P_20_18_12
  290  P_3_4_14
  291  P_6_8_12
  292  P_3_21_6
  293  P_21_1_13
  294  P_16_11_19
  295  P_15_17_19
  296  P_6_8_7
  297  P_5_19_7
  298  P_21_17_19
  299  P_16_6_5
  300  P_4_8_2
  301  P_6_18_19
  302  P_16_6_19
  303  P_11_18_12
  304  P_21_1_5
  305  P_4_19_7
  306  P_18_19_7
  307  P_16_17_19
  308  P_1_8_9
  309  P_15_14_12
  310  P_8_2_12
  311  P_1_2_10
  312  P_1_9_5
  313  P_3_8_20
  314  P_18_12_7
  315  P_8_9_18
  316  P_16_14_12
  317  P_11_18_7
  318  P_1_20_19
  319  P_16_13_7
  320  P_4_5_14
  321  P_16_15_6
  322  P_11_2_14
  323  P_16_4_10
  324  P_21_4_6
  325  P_1_13_18
  326  P_9_5_18
  327  P_21_9_12
  328  P_17_9_5
  329  P_15_1_14
  330  P_3_9_18
  331  P_6_17_13
  332  P_20_5_19
  333  P_16_4_17
  334  P_3_15_5
  335  P_11_18_2
  336  P_17_9_18
  337  P_11_6_14
  338  P_6_20_7
  339  P_16_13_12
  340  P_3_16_20
  341  P_14_12_7
  342  P_15_18_2
  343  P_1_20_9
  344  P_15_1_7
  345  P_3_13_12
  346  P_15_1_5
  347  P_15_8_20
  348  P_21_6_13
  349  P_8_9_12
  350  P_16_6_8
  351  P_21_6_10
  352  P_3_17_14
  353  P_6_20_10
  354  P_16_20_10
  355  P_21_1_20
  356  P_21_13_12
  357  P_3_8_13
  358  P_9_10_14
  359  P_16_11_20
  360  P_16_11_1
  361  P_16_9_5
  362  P_16_12_7
  363  P_3_15_10
  364  P_8_5_7
  365  P_3_8_7
  366  P_4_8_14
  367  P_21_5_14
  368  P_4_8_7
  369  P_8_20_19
  370  P_20_9_13
  371  P_11_19_7
  372  P_3_4_8
  373  P_8_13_12
  374  P_15_12_7
  375  P_3_9_7
  376  P_3_4_9
  377  P_4_13_7
  378  P_17_18_12
  379  P_16_21_5
  380  P_21_17_9
  381  P_1_2_12
  382  P_15_11_14
  383  P_1_18_12
  384  P_11_2_12
  385  P_1_8_18
  386  P_15_21_17
  387  P_15_5_10
  388  P_1_12_7
  389  P_11_6_13
  390  P_15_1_17
  391  P_9_13_14
  392  P_4_1_2
  393  P_4_8_18
  394  P_3_16_14
  395  P_17_13_10
  396  P_11_6_10
  397  P_21_2_12
  398  P_5_2_12
  399  P_8_9_14
  400  P_4_6_14
  401  P_3_5_13
  402  P_15_1_13
  403  P_8_19_14
  404  P_15_13_19
  405  P_21_9_2
  406  P_17_8_5
  407  P_11_19_10
  408  P_5_13_7
  409  P_16_21_1
  410  P_16_21_10
  411  P_16_1_5
  412  P_15_14_7
  413  P_5_19_10
  414  P_3_4_7
  415  P_21_20_19
  416  P_1_20_18
  417  P_3_21_7
  418  P_15_20_13
  419  P_9_19_14
  420  P_3_17_19
  421  P_1_14_12
  422  P_16_1_13
  423  P_21_17_8
  424  P_11_9_5
  425  P_18_10_14
  426  P_20_10_14
  427  P_15_11_19
  428  P_13_18_12
  429  P_8_19_10
  430  P_13_2_7
  431  P_4_1_13
  432  P_15_18_12
  433  P_1_13_19
  434  P_16_2_12
  435  P_11_14_7
  436  P_3_17_8
  437  P_11_17_20
  438  P_16_1_2
  439  P_5_13_2
  440  P_11_1_5
  441  P_3_20_9
  442  P_15_19_14
  443  P_21_4_13
  444  P_15_21_8
  445  P_4_11_19
  446  P_4_1_7
  447  P_13_19_7
  448  P_4_6_20
  449  P_4_11_18
  450  P_16_21_4
  451  P_15_8_18
  452  P_11_9_7
  453  P_21_13_7
  454  P_17_9_14
  455  P_4_13_10
  456  P_21_18_10
  457  P_16_20_2
  458  P_21_13_10
  459  P_16_11_7
  460  P_9_12_7
  461  P_9_10_7
  462  P_4_9_10
  463  P_15_6_13
  464  P_3_17_10
  465  P_3_13_19
  466  P_4_6_7
  467  P_20_18_10
  468  P_15_4_14
  469  P_4_20_7
  470  P_6_20_9
  471  P_16_9_2
  472  P_21_11_7
  473  P_20_5_7
  474  P_6_13_10
  475  P_4_13_18
  476  P_21_8_14
  477  P_3_16_11
  478  P_11_12_7
  479  P_3_18_7
  480  P_16_17_10
  481  P_15_21_12
  482  P_17_9_12
  483  P_16_11_17
  484  P_9_19_7
  485  P_5_2_7
  486  P_3_4_18
  487  P_8_13_14
  488  P_3_21_4
  489  P_15_6_20
  490  P_3_10_12
  491  P_16_1_12
  492  P_21_8_18
  493  P_17_2_19
  494  P_11_6_5
  495  P_15_5_18
  496  P_3_1_2
  497  P_8_13_10
  498  P_1_6_13
  499  P_4_1_12
  500  P_3_1_8
  501  P_21_9_13
  502  P_4_20_2
  503  P_15_11_17
  504  P_16_9_14
  505  P_15_5_14
  506  P_3_9_12
  507  P_21_11_18
  508  P_6_20_2
  509  P_15_1_12
  510  P_4_6_18
  511  P_15_1_6
  512  P_4_11_8
  513  P_16_1_20
  514  P_16_6_18
  515  P_17_10_12
  516  P_21_2_14
  517  P_18_19_10
  518  P_4_1_5
  519  P_5_10_7
  520  P_16_18_10
  521  P_3_5_10
  522  P_16_15_13
  523  P_6_20_12
  524  P_9_13_2
  525  P_1_17_10
  526  P_6_20_13
  527  P_2_10_14
  528  P_16_4_1
  529  P_9_13_18
  530  P_20_9_10
  531  P_16_15_9
  532  P_3_1_14
  533  P_16_11_9
  534  P_3_1_5
  535  P_4_20_10
  536  P_1_2_14
  537  P_15_1_19
  538  P_15_6_9
  539  P_9_18_19
  540  P_16_4_8
  541  P_16_19_14
  542  P_3_12_7
  543  P_15_17_18
  544  P_16_15_17
  545  P_13_18_10
  546  P_3_11_7
  547  P_9_18_14
  548  P_16_8_7
  549  P_16_11_14
  550  P_20_5_10
  551  P_3_15_12
  552  P_1_13_7
  553  P_17_9_10
  554  P_17_10_7
  555  P_3_8_9
  556  P_15_6_14
  557  P_4_18_2
  558  P_3_19_7
  559  P_15_18_7
  560  P_20_18_2
  561  P_3_1_13
  562  P_15_4_12
  563  P_16_6_13
  564  P_16_9_12
  565  P_1_20_7
  566  P_15_21_1
  567  P_11_13_10
  568  P_16_4_7
  569  P_3_1_20
  570  P_1_17_13
  571  P_1_6_18
  572  P_4_11_10
  573  P_20_13_18
  574  P_17_18_19
  575  P_3_9_14
  576  P_15_13_10
  577  P_16_6_20
  578  P_21_19_12
  579  P_16_4_20
  580  P_11_13_18
  581  P_16_19_10
  582  P_17_5_14
  583  P_15_13_14
  584  P_15_11_7
  585  P_16_20_12
  586  P_1_8_12
  587  P_1_17_18
  588  P_3_5_12
  589  P_3_21_9
  590  P_21_4_18
  591  P_20_13_7
  592  P_17_13_14
  593  P_3_13_2
  594  P_11_10_12
  595  P_3_8_2
  596  P_20_19_14
  597  P_3_11_19
  598  P_15_11_8
  599  P_16_8_20
  600  P_3_11_10
  601  P_1_9_7
  602  P_16_4_13
  603  P_3_15_1
  604  P_15_8_9
  605  P_3_6_2
  606  P_15_21_4
  607  P_3_11_9
  608  P_15_17_2
  609  P_9_2_7
  610  P_4_5_10
  611  P_8_9_13
  612  P_11_8_12
  613  P_3_18_12
  614  P_4_20_18
  615  P_1_9_10
  616  P_4_20_13
  617  P_16_5_10
  618  P_6_5_10
  619  P_16_21_2
  620  P_3_6_17
  621  P_4_19_10
  622  P_17_18_2
  623  P_13_18_14
  624  P_15_9_7
  625  P_1_8_5
  626  P_8_13_18
  627  P_1_6_2
  628  P_21_13_19
  629  P_1_9_12
  630  P_20_2_12
  631  P_3_8_14
  632  P_16_17_20
  633  P_6_18_12
  634  P_16_11_2
  635  P_3_20_5
  636  P_15_21_13
  637  P_21_17_7
  638  P_18_14_12
  639  P_3_6_14
  640  P_21_11_2
  641  P_11_20_12
  642  P_21_20_14
  643  P_4_6_19
  644  P_6_18_2
  645  P_15_6_18
  646  P_16_20_13
  647  P_4_6_10
  648  P_20_9_12
  649  P_11_19_14
  650  P_3_20_7
  651  P_3_10_7
  652  P_21_17_20
  653  P_3_8_10
  654  P_21_5_19
  655  P_15_9_13
  656  P_11_9_10
  657  P_1_8_14
  658  P_16_17_13
  659  P_3_1_12
  660  P_4_11_14
  661  P_1_20_14
  662  P_3_10_14
  663  P_4_18_19
  664  P_15_5_7
  665  P_15_6_10
  666  P_16_6_7
  667  P_15_11_10
  668  P_13_14_7
  669  P_18_19_12
  670  P_3_21_1
  671  P_20_13_14
  672  P_15_9_10
  673  P_1_19_12
  674  P_11_8_14
  675  P_15_10_14
  676  P_15_11_12
  677  P_17_9_2
  678  P_2_19_14
  679  P_4_14_12
  680  P_16_6_10
  681  P_6_17_8
  682  P_3_8_19
  683  P_16_1_17
  684  P_11_20_13
  685  P_15_9_2
  686  P_20_9_7
  687  P_3_4_20
  688  P_17_8_10
  689  P_10_12_7
  690  P_16_15_19
  691  P_1_8_13
  692  P_3_21_18
  693  P_9_5_12
  694  P_21_20_7
  695  P_3_15_4
  696  P_16_17_5
  697  P_3_9_5
  698  P_6_19_7
  699  P_16_21_18
  700  P_5_10_12
  701  P_21_9_19
  702  P_21_18_14
  703  P_15_19_10
  704  P_15_4_2
  705  P_3_16_6
  706  P_15_1_2
  707  P_9_13_19
  708  P_1_10_14
  709  P_1_13_14
  710  P_11_1_18
  711  P_3_11_17
  712  P_21_13_18
  713  P_3_16_19
  714  P_16_15_21
  715  P_17_8_13
  716  P_6_20_18
  717  P_1_8_10
  718  P_16_20_14
  719  P_6_17_20
  720  P_19_10_14
  721  P_4_17_14
  722  P_3_4_5
  723  P_6_9_2
  724  P_4_17_13
  725  P_9_14_7
  726  P_21_8_9
  727  P_3_15_9
  728  P_21_10_14
  729  P_9_5_2
  730  P_16_8_18
  731  P_16_11_5
  732  P_15_1_18
  733  P_1_19_14
  734  P_21_1_18
  735  P_8_18_12
  736  P_15_20_19
  737  P_16_18_14
  738  P_15_8_12
  739  P_11_2_7
  740  P_8_5_14
  741  P_16_8_19
  742  P_3_6_7
  743  P_15_2_10
  744  P_4_5_19
  745  P_3_15_8
  746  P_11_18_10
  747  P_16_19_12
  748  P_16_1_8
  749  P_3_1_19
  750  P_16_9_10
  751  P_17_20_2
  752  P_3_11_14
  753  P_4_12_7
  754  P_3_18_14
  755  P_16_9_19
  756  P_4_11_9
  757  P_16_15_14
  758  P_15_13_7
  759  P_20_13_2
  760  P_3_20_10
  761  P_21_11_10
  762  P_4_17_7
  763  P_15_4_5
  764  P_21_5_10
  765  P_17_18_14
  766  P_9_19_10
  767  P_15_4_9
  768  P_8_18_2
  769  P_4_10_14
  770  P_16_9_13
  771  P_21_8_2
  772  P_15_21_14
  773  P_6_8_13
  774  P_21_6_12
  775  P_4_6_17
  776  P_4_13_14
  777  P_20_5_14
  778  P_11_1_20
  779  P_3_16_5
  780  P_4_9_13
  781  P_2_14_12
  782  P_15_6_2
  783  P_16_8_10
  784  P_15_9_5
  785  P_1_17_7
  786  P_17_8_19
  787  P_1_20_5
  788  P_3_20_2
  789  P_9_2_12
  790  P_16_17_9
  791  P_5_19_12
  792  P_5_12_7
  793  P_9_2_14
  794  P_3_1_17
  795  P_16_11_6
  796  P_6_8_14
  797  P_3_13_14
  798  P_16_4_19
  799  P_1_13_10
  800  P_13_18_2
  801  P_13_18_7
  802  P_15_5_12
  803  P_11_8_7
  804  P_21_8_12
  805  P_15_17_10
  806  P_6_9_12
  807  P_18_2_12
  808  P_8_10_12
  809  P_4_1_14
  810  P_8_5_2
  811  P_19_12_7
  812  P_11_9_12
  813  P_1_17_14
  814  P_6_2_12
  815  P_8_13_19
  816  P_15_10_7
  817  P_4_18_10
  818  P_16_15_10
  819  P_21_8_10
  820  P_6_17_12
  821  P_17_20_7
  822  P_13_19_14
  823  P_17_2_10
  824  P_4_17_19
  825  P_3_18_10
  826  P_11_18_14
  827  P_17_19_10
  828  P_6_19_12
  829  P_16_20_19
  830  P_16_9_7
  831  P_8_18_10
  832  P_15_17_12
  833  P_15_6_8
  834  P_21_20_10
  835  P_21_4_17
  836  P_21_20_12
  837  P_17_5_7
  838  P_1_20_13
  839  P_4_9_14
  840  P_8_20_10
  841  P_15_17_7
  842  P_15_21_5
  843  P_11_17_5
  844  P_4_17_18
  845  P_15_17_9
  846  P_21_11_13
  847  P_8_13_7
  848  P_3_13_7
  849  P_4_8_12
  850  P_21_4_10
  851  P_17_20_14
  852  P_9_19_12
  853  P_8_20_2
  854  P_16_15_1
  855  P_15_9_14
  856  P_16_13_14
  857  P_21_9_5
  858  P_1_5_19
  859  P_11_1_14
  860  P_3_1_10
  861  P_1_19_10
  862  P_11_8_10
  863  P_6_9_14
  864  P_16_18_2
  865  P_15_6_5
  866  P_21_17_12
  867  P_11_2_10
  868  P_15_8_19
  869  P_20_5_12
  870  P_16_13_10
  871  P_21_17_10
  872  P_4_19_14
  873  P_4_11_6
  874  P_5_2_10
  875  P_1_6_8
  876  P_11_1_7
  877  P_3_21_11
  878  P_15_2_12
  879  P_20_13_10
  880  P_21_4_9
  881  P_21_11_19
  882  P_4_13_2
  883  P_3_8_12
  884  P_3_16_18
  885  P_3_16_2
  886  P_3_6_20
  887  P_1_6_10
  888  P_15_21_7
  889  P_3_21_13
  890  P_15_11_6
  891  P_16_11_13
  892  P_4_10_12
  893  P_21_11_17
  894  P_3_4_13
  895  P_21_1_14
  896  P_8_9_19
  897  P_18_2_14
  898  P_21_4_5
  899  P_3_9_13
  900  P_16_17_8
  901  P_16_21_13
  902  P_6_18_7
  903  P_17_5_12
  904  P_8_20_18
  905  P_15_20_12
  906  P_8_5_10
  907  P_11_5_10
  908  P_1_9_14
  909  P_13_2_10
  910  P_3_17_9
  911  P_15_11_5
  912  P_11_19_12
  913  P_16_1_18
  914  P_11_20_18
  915  P_6_17_9
  916  P_11_6_20
  917  P_4_11_2
  918  P_21_20_5
  919  P_15_6_17
  920  P_20_5_13
  921  P_3_21_10
  922  P_3_6_8
  923  P_3_11_18
  924  P_8_20_9
  925  P_8_19_12
  926  P_21_1_6
  927  P_4_17_20
  928  P_5_18_2
  929  P_16_15_2
  930  P_17_9_19
  931  P_8_14_12
  932  P_4_5_18
  933  P_13_14_12
  934  P_3_21_12
  935  P_21_8_5
  936  P_3_5_18
  937  P_11_8_2
  938  P_5_10_14
  939  P_21_5_18
  940  P_11_9_2
  941  P_11_6_12
  942  P_3_16_8
  943  P_3_20_19
  944  P_6_18_14
  945  P_16_10_14
  946  P_17_13_2
  947  P_11_5_13
  948  P_1_5_10
  949  P_6_20_14
  950  P_11_20_5
  951  P_21_10_7
  952  P_6_9_18
  953  P_4_19_12
  954  P_16_21_11
  955  P_20_2_19
  956  P_15_21_20
  957  P_20_9_19
  958  P_20_12_7
  959  P_4_5_2
  960  P_1_20_2
  961  P_17_5_10
  962  P_15_20_14
  963  P_4_8_19
  964  P_6_20_5
  965  P_11_20_19
  966  P_4_1_9
  967  P_1_8_7
  968  P_6_14_7
  969  P_20_14_12
  970  P_21_14_12
  971  P_15_4_1
  972  P_15_20_7
  973  P_3_2_7
  974  P_8_20_5
  975  P_8_20_12
  976  P_1_18_10
  977  P_20_5_18
  978  P_16_21_12
  979  P_11_20_9
  980  P_1_18_14
  981  P_15_13_12
  982  P_4_1_17
  983  P_21_11_20
  984  P_13_10_12
  985  P_3_18_19
  986  P_1_10_12
  987  P_16_6_12
  988  P_3_2_19
  989  P_9_5_13
  990  P_17_20_18
  991  P_4_17_5
  992  P_3_4_2
  993  P_11_14_12
  994  P_4_18_12
  995  P_4_6_8
  996  P_20_10_12
  997  P_11_8_20
  998  P_1_5_14
  999  P_5_13_10
 1000  P_11_1_8
 1001  P_21_6_5
 1002  P_11_13_19
 1003  P_5_18_12
 1004  P_16_5_13
 1005  P_6_9_5
 1006  P_8_19_7
 1007  P_21_2_19
 1008  P_21_1_19
 1009  P_21_11_5
 1010  P_11_8_5
 1011  P_3_6_13
 1012  P_21_19_7
 1013  P_3_4_17
 1014  P_3_1_6
 1015  P_21_1_7
 1016  P_3_9_19
 1017  P_17_19_7
 1018  P_1_6_20
 1019  P_2_10_7
 1020  P_3_16_7
 1021  P_11_13_7
 1022  P_3_4_11
 1023  P_5_13_18
 1024  P_16_2_10
 1025  P_15_11_20
 1026  P_21_17_18
 1027  P_4_8_13
 1028  P_11_6_2
 1029  P_3_14_7
 1030  P_6_18_10
 1031  P_3_9_10
 1032  P_11_1_10
 1033  P_15_13_18
 1034  P_3_11_2
 1035  P_11_8_13
 1036  P_1_6_14
 1037  P_16_5_2
 1038  P_16_8_9
 1039  P_16_10_7
 1040  P_15_21_2
 1041  P_1_9_13
 1042  P_4_13_19
 1043  P_11_9_13
 1044  P_1_17_12
 1045  P_2_19_7
 1046  P_16_1_6
 1047  P_21_8_7
 1048  P_5_13_14
 1049  P_21_9_10
 1050  P_11_6_8
 1051  P_4_20_12
 1052  P_15_21_11
 1053  P_6_17_5
 1054  P_3_20_13
 1055  P_3_20_18
 1056  P_3_8_5
 1057  P_8_9_2
 1058  P_9_10_12
 1059  P_4_6_12
 1060  P_15_20_2
 1061  P_6_9_10
 1062  P_6_9_13
 1063  P_3_2_12
 1064  P_19_14_7
 1065  P_16_21_20
 1066  P_11_17_8
 1067  P_11_9_14
 1068  P_4_5_7
 1069  P_1_5_2
 1070  P_16_15_4
 1071  P_16_4_14
 1072  P_16_15_12
 1073  P_13_19_10
 1074  P_3_16_13
 1075  P_15_8_2
 1076  P_3_4_10
 1077  P_21_5_7
 1078  P_16_21_6
 1079  P_16_20_7
 1080  P_16_19_7
 1081  P_15_20_10
 1082  P_9_18_2
 1083  P_3_2_10
 1084  P_2_10_12
 1085  P_6_5_19
 1086  P_6_17_10
 1087  P_20_2_14
 1088  P_4_6_5
 1089  P_3_21_5
 1090  P_3_11_8
 1091  P_8_20_14
 1092  P_11_1_2
 1093  P_11_1_19
 1094  P_15_1_20
 1095  P_15_8_5
 1096  P_1_6_12
 1097  P_16_15_8
 1098  P_15_1_10
 1099  P_3_15_13
 1100  P_15_4_10
 1101  P_11_20_7
 1102  P_3_11_13
 1103  P_3_16_17
 1104  P_4_17_8
 1105  P_4_9_19
 1106  P_3_15_20
 1107  P_20_19_12
 1108  P_1_5_13
 1109  P_16_4_18
 1110  P_11_9_19
 1111  P_17_13_7
 1112  P_16_1_10
 1113  P_15_1_9
 1114  P_11_6_17
 1115  P_6_8_10
 1116  P_6_19_14
 1117  P_21_19_10
 1118  P_6_17_14
 1119  P_6_17_7
 1120  P_15_1_8
 1121  P_1_14_7
 1122  P_16_17_18
 1123  P_3_11_12
 1124  P_17_19_12
 1125  P_11_20_2
 1126  P_3_6_9
 1127  P_1_9_18
 1128  P_15_21_18
 1129  P_15_17_5
 1130  P_21_18_12
 1131  P_16_15_5
 1132  P_21_11_12
 1133  P_15_4_19
 1134  P_19_14_12
 1135  P_3_15_18
 1136  P_13_2_14
 1137  P_6_8_9
 1138  P_21_1_9
 1139  P_6_13_19
 1140  P_15_2_7
 1141  P_15_20_18
 1142  P_9_14_12
 1143  P_15_17_14
 1144  P_15_8_13
 1145  P_21_17_13
 1146  P_2_14_7
 1147  P_8_12_7
 1148  P_21_9_14
 1149  P_3_15_11
 1150  P_1_5_18
 1151  P_3_13_18
 1152  P_18_19_14
 1153  P_3_1_7
 1154  P_16_9_18
 1155  P_16_8_13
 1156  P_3_16_10
 1157  P_3_4_12
 1158  P_4_17_2
 1159  P_1_13_2
 1160  P_16_14_7
 1161  P_16_5_18
 1162  P_6_9_7
 1163  P_15_21_19
 1164  P_8_10_14
 1165  P_11_10_7
 1166  P_15_4_18
 1167  P_11_1_6
 1168  P_6_5_2
 1169  P_4_11_12
 1170  P_20_9_14
 1171  P_16_4_5
 1172  P_17_8_14
 1173  P_17_13_12
 1174  P_21_4_8
 1175  P_15_8_10
 1176  P_15_8_7
 1177  P_6_8_2
 1178  P_17_8_12
 1179  P_11_17_14
 1180  P_21_1_12
 1181  P_8_5_13
 1182  P_17_20_19
 1183  P_21_18_7
 1184  P_17_5_19
 1185  P_1_5_7
 1186  P_4_2_7
 1187  P_11_10_14
 1188  P_9_18_7
 1189  P_3_16_9
 1190  P_3_16_15
 1191  P_2_12_7
 1192  P_3_4_1
 1193  P_1_9_19
 1194  P_6_2_10
 1195  P_21_8_13
 1196  P_15_17_20
 1197  P_21_1_17
 1198  P_16_21_9
 1199  P_10_14_7
 1200  P_15_4_11
 1201  P_17_13_19
 1202  P_1_8_20
 1203  P_3_11_1
 1204  P_21_20_2
 1205  P_8_2_19
 1206  P_4_11_13
 1207  P_8_2_7
 1208  P_8_20_7
 1209  P_21_4_1
 1210  P_17_12_7
 1211  P_5_13_19
 1212  P_3_21_8
 1213  P_15_11_1
 1214  P_16_10_12
 1215  P_4_9_7
 1216  P_3_19_12
 1217  P_15_21_6
 1218  P_17_18_7
 1219  P_3_14_12
 1220  P_6_13_14
 1221  P_3_11_6
 1222  P_15_2_19
 1223  P_4_18_14
 1224  P_5_18_10
 1225  P_4_1_18
 1226  P_5_19_14
 1227  P_16_15_20
 1228  P_1_18_7
 1229  P_21_14_7
 1230  P_10_14_12
 1231  P_16_2_14
 1232  P_1_17_2
 1233  P_3_5_7
 1234  P_2_19_12
 1235  P_17_14_12
 1236  P_4_8_9
 1237  P_4_1_6
 1238  P_15_6_19
 1239  P_6_17_19
 1240  P_17_20_10
 1241  P_1_6_17
 1242  P_15_6_12
 1243  P_9_18_10
 1244  P_11_6_18
 1245  P_15_5_2
 1246  P_15_17_13
 1247  P_19_10_12
 1248  P_11_9_18
 1249  P_8_14_7
 1250  P_20_2_7
 1251  P_15_9_12
 1252  P_15_10_12
 1253  P_3_11_5
 1254  P_21_11_9
 1255  P_9_5_19
 1256  P_21_20_13
 1257  P_21_1_2
 1258  P_16_15_11
 1259  P_3_20_14
 1260  P_20_19_7
 1261  P_6_10_7
 1262  P_6_8_20
 1263  P_15_4_6
 1264  P_16_13_2
 1265  P_3_4_6
 1266  P_21_18_19
 1267  P_8_20_13
 1268  P_13_10_14
 1269  P_13_18_19
 1270  P_4_1_8
 1271  P_21_4_12
 1272  P_16_17_2
 1273  P_16_17_12
 1274  P_1_17_8
 1275  P_21_17_2
 1276  P_2_19_10
 1277  P_17_8_2
 1278  P_15_18_19
 1279  P_8_2_14
 1280  P_1_20_10
 1281  P_11_1_9
 1282  P_17_18_10
 1283  P_15_13_2
 1284  P_17_5_18
 1285  P_6_20_19
 1286  P_6_5_18
 1287  P_3_6_19
 1288  P_3_16_21
 1289  P_16_8_5
 1290  P_21_4_2
 1291  P_6_12_7
 1292  P_6_5_13
 1293  P_3_8_18
 1294  P_16_6_14
 1295  P_16_6_17
 1296  P_16_18_12
 1297  P_15_21_10
 1298  P_1_9_2
 1299  P_5_18_14
 1300  P_20_18_19
 1301  P_15_9_19
 1302  P_5_14_12
 1303  P_21_6_18
 1304  P_13_2_19
 1305  P_6_19_10
 1306  P_17_2_14
 1307  P_8_9_5
 1308  P_3_17_18
 1309  P_16_1_14
 1310  P_4_11_17
 1311  P_3_16_1
 1312  P_16_4_2
 1313  P_4_2_19
 1314  P_18_10_12
 1315  P_21_17_5
 1316  P_16_15_7
 1317  P_15_4_17
 1318  P_8_5_18
 1319  P_4_2_12
 1320  P_6_5_7
 1321  P_11_5_12
 1322  P_11_20_10
 1323  P_9_2_10
 1324  P_3_15_19
 1325  P_16_4_6
 1326  P_18_10_7
 1327  P_6_10_14
 1328  P_16_21_14
 1329  P_1_10_7