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