Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagesmc
Path: blob/master/src/sage/combinat/designs/steiner_quadruple_systems.py
8818 views
1
r"""
2
Steiner Quadruple Systems
3
4
A Steiner Quadruple System on `n` points is a family `SQS_n \subset \binom {[n]}
5
4` of `4`-sets, such that any set `S\subset [n]` of size three is a subset of
6
exactly one member of `SQS_n`.
7
8
This module implements Haim Hanani's constructive proof that a Steiner Quadruple
9
System exists if and only if `n\equiv 2,4 \pmod 6`. Hanani's proof consists in 6
10
different constructions that build a large Steiner Quadruple System from a smaller
11
one, and though it does not give a very clear understanding of why it works (to say the
12
least)... it does !
13
14
The constructions have been implemented while reading two papers simultaneously,
15
for one of them sometimes provides the informations that the other one does
16
not. The first one is Haim Hanani's original paper [Hanani60]_, and the other
17
one is a paper from Horan and Hurlbert which goes through all constructions
18
[HH12]_.
19
20
It can be used through the ``designs`` object::
21
22
sage: designs.steiner_quadruple_system(8)
23
((0, 1, 2, 3), (0, 1, 6, 7), (0, 5, 2, 7), (0, 5, 6, 3), (4, 1, 2, 7),
24
(4, 1, 6, 3), (4, 5, 2, 3), (4, 5, 6, 7), (0, 1, 4, 5), (0, 2, 4, 6),
25
(0, 3, 4, 7), (1, 2, 5, 6), (1, 3, 5, 7), (2, 3, 6, 7))
26
27
REFERENCES:
28
29
.. [Hanani60] Haim Hanani,
30
On quadruple systems,
31
pages 145--157, vol. 12,
32
Canadadian Journal of Mathematics,
33
1960
34
http://cms.math.ca/cjm/v12/cjm1960v12.0145-0157.pdf
35
36
.. [HH12] Victoria Horan and Glenn Hurlbert,
37
Overlap Cycles for Steiner Quadruple Systems,
38
2012,
39
http://arxiv.org/abs/1204.3215
40
41
AUTHORS:
42
43
- Nathann Cohen (May 2013, while listening to "*Le Blues Du Pauvre Delahaye*")
44
45
Index
46
-----
47
48
This module's main function is the following :
49
50
.. csv-table::
51
:class: contentstable
52
:widths: 15, 20, 65
53
:delim: |
54
55
| :func:`steiner_quadruple_system` | Returns a Steiner Quadruple System on `n` points
56
57
This function redistributes its work among 6 constructions :
58
59
.. csv-table::
60
:class: contentstable
61
:widths: 15, 20, 65
62
:delim: |
63
64
Construction `1` | :func:`two_n` | Returns a Steiner Quadruple System on `2n` points
65
Construction `2` | :func:`three_n_minus_two` | Returns a Steiner Quadruple System on `3n-2` points
66
Construction `3` | :func:`three_n_minus_eight` | Returns a Steiner Quadruple System on `3n-8` points
67
Construction `4` | :func:`three_n_minus_four` | Returns a Steiner Quadruple System on `3n-4` points
68
Construction `5` | :func:`four_n_minus_six` | Returns a Steiner Quadruple System on `4n-6` points
69
Construction `6` | :func:`twelve_n_minus_ten` | Returns a Steiner Quadruple System on `12n-10` points
70
71
It also defines two specific Steiner Quadruple Systems that the constructions
72
require, i.e.`SQS_{14}` and `SQS_{38}` as well as the systems of pairs
73
`P_{\alpha}(m)` and `\overline P_{\alpha}(m)` (see [Hanani60]_).
74
75
Functions
76
---------
77
"""
78
from sage.misc.cachefunc import cached_function
79
80
# Construction 1
81
def two_n(n,B):
82
r"""
83
Returns a Steiner Quadruple System on `2n` points.
84
85
INPUT:
86
87
- ``n`` (integer)
88
89
- ``B`` -- A Steiner Quadruple System on `n` points.
90
91
EXAMPLES::
92
93
sage: from sage.combinat.designs.steiner_quadruple_systems import two_n, is_steiner_quadruple_system
94
sage: for n in xrange(4, 30):
95
....: if (n%6) in [2,4]:
96
....: sqs = designs.steiner_quadruple_system(n)
97
....: if not is_steiner_quadruple_system(2*n, two_n(n, sqs)):
98
....: print "Something is wrong !"
99
100
"""
101
Y = []
102
103
# Line 1
104
for x,y,z,t in B:
105
for a in xrange(2):
106
for b in xrange(2):
107
for c in xrange(2):
108
d = (a+b+c)%2
109
Y.append((x+a*n,y+b*n,z+c*n,t+d*n))
110
111
# Line 2
112
for j in xrange(n):
113
for jj in xrange(j+1,n):
114
Y.append((j,jj,n+j,n+jj))
115
116
return tuple(Y)
117
118
# Construction 2
119
def three_n_minus_two(n,B):
120
"""
121
Returns a Steiner Quadruple System on `3n-2` points.
122
123
INPUT:
124
125
- ``n`` (integer)
126
127
- ``B`` -- A Steiner Quadruple System on `n` points.
128
129
EXAMPLES::
130
131
sage: from sage.combinat.designs.steiner_quadruple_systems import three_n_minus_two, is_steiner_quadruple_system
132
sage: for n in xrange(4, 30):
133
....: if (n%6) in [2,4]:
134
....: sqs = designs.steiner_quadruple_system(n)
135
....: if not is_steiner_quadruple_system(3*n-2, three_n_minus_two(n, sqs)):
136
....: print "Something is wrong !"
137
138
"""
139
A = n-1
140
Y = []
141
# relabel function
142
r = lambda i,x : (i%3)*(n-1)+x
143
for x,y,z,t in B:
144
if t == A:
145
# Line 2.
146
for a in xrange(3):
147
for b in xrange(3):
148
c = -(a+b)%3
149
Y.append((r(a,x),r(b,y),r(c,z),3*n-3))
150
151
# Line 3.
152
Y.extend([(r(i,x),r(i,y),r(i+1,z),r(i+2,z)) for i in xrange(3)])
153
Y.extend([(r(i,x),r(i,z),r(i+1,y),r(i+2,y)) for i in xrange(3)])
154
Y.extend([(r(i,y),r(i,z),r(i+1,x),r(i+2,x)) for i in xrange(3)])
155
156
else:
157
# Line 1.
158
for a in xrange(3):
159
for b in xrange(3):
160
for c in xrange(3):
161
d = -(a+b+c)%3
162
Y.append((r(a,x),r(b,y),r(c,z),r(d,t)))
163
164
# Line 4.
165
for j in xrange(n-1):
166
for jj in xrange(j+1,n-1):
167
Y.extend([(r(i,j),r(i,jj),r(i+1,j),r(i+1,jj)) for i in xrange(3)])
168
169
# Line 5.
170
for j in xrange(n-1):
171
Y.append((r(0,j),r(1,j),r(2,j),3*n-3))
172
173
Y = tuple(map(tuple,map(sorted,Y)))
174
return Y
175
176
# Construction 3
177
def three_n_minus_eight(n, B):
178
"""
179
Returns a Steiner Quadruple System on `3n-8` points.
180
181
INPUT:
182
183
- ``n`` -- an integer such that `n\equiv 2 \pmod{12}`.
184
185
- ``B`` -- A Steiner Quadruple System on `n` points.
186
187
EXAMPLES::
188
189
sage: from sage.combinat.designs.steiner_quadruple_systems import three_n_minus_eight, is_steiner_quadruple_system
190
sage: for n in xrange(4, 30):
191
....: if (n%12) == 2:
192
....: sqs = designs.steiner_quadruple_system(n)
193
....: if not is_steiner_quadruple_system(3*n-8, three_n_minus_eight(n, sqs)):
194
....: print "Something is wrong !"
195
196
"""
197
198
if (n%12) != 2:
199
raise ValueError("n must be equal to 2 mod 12")
200
201
B = relabel_system(n, B)
202
r = lambda i,x : (i%3)*(n-4)+(x%(n-4))
203
204
# Line 1.
205
Y = [[x+2*(n-4) for x in B[0]]]
206
207
# Line 2.
208
for s in B[1:]:
209
for i in xrange(3):
210
Y.append([r(i,x) if x<= n-5 else x+2*(n-4) for x in s])
211
212
213
# Line 3.
214
for a in xrange(4):
215
for aa in xrange(n-4):
216
for aaa in xrange(n-4):
217
aaaa = -(a+aa+aaa)%(n-4)
218
Y.append((r(0,aa),r(1,aaa), r(2,aaaa),3*(n-4)+a))
219
220
221
# Line 4.
222
k = (n-14)/12
223
for i in xrange(3):
224
for b in xrange(n-4):
225
for bb in xrange(n-4):
226
bbb = -(b+bb)%(n-4)
227
for d in xrange(2*k+1):
228
Y.append((r(i+2,bbb), r(i, b+2*k+1+i*(4*k+2)-d) , r(i, b+2*k+2+i*(4*k+2)+d), r(i+1,bb)))
229
230
231
232
# Line 5.
233
for i in xrange(3):
234
for alpha in xrange(4*k+2, 12*k+9):
235
for ra,sa in P(alpha,6*k+5):
236
for raa,saa in P(alpha,6*k+5):
237
Y.append(tuple(sorted((r(i,ra),r(i,sa),r(i+1,raa), r(i+1,saa)))))
238
239
240
Y = tuple(map(tuple,map(sorted,Y)))
241
return Y
242
243
# Construction 4
244
def three_n_minus_four(n, B):
245
"""
246
Returns a Steiner Quadruple System on `3n-4` points.
247
248
INPUT:
249
250
- ``n`` -- an integer such that `n\equiv 10\pmod{12}`
251
252
- ``B`` -- A Steiner Quadruple System on `n` points.
253
254
EXAMPLES::
255
256
sage: from sage.combinat.designs.steiner_quadruple_systems import three_n_minus_four, is_steiner_quadruple_system
257
sage: for n in xrange(4, 30):
258
....: if n%12 == 10:
259
....: sqs = designs.steiner_quadruple_system(n)
260
....: if not is_steiner_quadruple_system(3*n-4, three_n_minus_four(n, sqs)):
261
....: print "Something is wrong !"
262
263
"""
264
if n%12 != 10:
265
raise ValueError("n must be equal to 10 mod 12")
266
267
B = relabel_system(n, B)
268
r = lambda i,x : (i%3)*(n-2)+(x%(n-2))
269
270
# Line 1/2.
271
Y = []
272
for s in B:
273
for i in xrange(3):
274
Y.append(tuple(r(i,x) if x<= n-3 else x+2*(n-2) for x in s ))
275
276
# Line 3.
277
for a in xrange(2):
278
for aa in xrange(n-2):
279
for aaa in xrange(n-2):
280
aaaa= -(a+aa+aaa)%(n-2)
281
Y.append((r(0,aa),r(1,aaa), r(2,aaaa),3*(n-2)+a))
282
283
# Line 4.
284
k = (n-10)/12
285
for i in xrange(3):
286
for b in xrange(n-2):
287
for bb in xrange(n-2):
288
bbb = -(b+bb)%(n-2)
289
for d in xrange(2*k+1):
290
Y.append((r(i+2,bbb), r(i, b+2*k+1+i*(4*k+2)-d) , r(i, b+2*k+2+i*(4*k+2)+d), r(i+1,bb)))
291
292
# Line 5.
293
from sage.graphs.graph_coloring import round_robin
294
one_factorization = round_robin(2*(6*k+4)).edges()
295
color_classes = [[] for j in xrange(2*(6*k+4)-1)]
296
for u,v,l in one_factorization:
297
color_classes[l].append((u,v))
298
299
for i in xrange(3):
300
for alpha in xrange(4*k+2, 12*k+6+1):
301
for ra,sa in P(alpha, 6*k+4):
302
for raa,saa in P(alpha, 6*k+4):
303
Y.append(tuple(sorted((r(i,ra),r(i,sa),r(i+1,raa), r(i+1,saa)))))
304
305
Y = tuple(map(tuple,map(sorted,Y)))
306
return Y
307
308
# Construction 5
309
def four_n_minus_six(n, B):
310
"""
311
Returns a Steiner Quadruple System on `4n-6` points.
312
313
INPUT:
314
315
- ``n`` (integer)
316
317
- ``B`` -- A Steiner Quadruple System on `n` points.
318
319
EXAMPLES::
320
321
sage: from sage.combinat.designs.steiner_quadruple_systems import four_n_minus_six, is_steiner_quadruple_system
322
sage: for n in xrange(4, 20):
323
....: if (n%6) in [2,4]:
324
....: sqs = designs.steiner_quadruple_system(n)
325
....: if not is_steiner_quadruple_system(4*n-6, four_n_minus_six(n, sqs)):
326
....: print "Something is wrong !"
327
328
"""
329
330
f = n-2
331
r = lambda i,ii,x : (2*(i%2)+(ii%2))*(n-2)+(x)%(n-2)
332
333
# Line 1.
334
Y = []
335
for s in B:
336
for i in xrange(2):
337
for ii in xrange(2):
338
Y.append(tuple(r(i,ii,x) if x<= n-3 else x+3*(n-2) for x in s ))
339
340
# Line 2/3/4/5
341
k = f/2
342
for l in xrange(2):
343
for eps in xrange(2):
344
for c in xrange(k):
345
for cc in xrange(k):
346
ccc = -(c+cc)%k
347
Y.append((4*(n-2)+l,r(0,0,2*c),r(0,1,2*cc-eps),r(1,eps,2*ccc+l)))
348
Y.append((4*(n-2)+l,r(0,0,2*c+1),r(0,1,2*cc-1-eps),r(1,eps,2*ccc+1-l)))
349
Y.append((4*(n-2)+l,r(1,0,2*c),r(1,1,2*cc-eps),r(0,eps,2*ccc+1-l)))
350
Y.append((4*(n-2)+l,r(1,0,2*c+1),r(1,1,2*cc-1-eps),r(0,eps,2*ccc+l)))
351
352
# Line 6/7
353
for h in xrange(2):
354
for eps in xrange(2):
355
for ccc in xrange(k):
356
assert len(barP(ccc,k)) == k-1
357
for rc,sc in barP(ccc,k):
358
for c in xrange(k):
359
cc = -(c+ccc)%k
360
Y.append((r(h,0,2*c+eps),r(h,1,2*cc-eps),r(h+1,0,rc),r(h+1,0,sc)))
361
Y.append((r(h,0,2*c-1+eps),r(h,1,2*cc-eps),r(h+1,1,rc),r(h+1,1,sc)))
362
363
364
365
# Line 8/9
366
for h in xrange(2):
367
for eps in xrange(2):
368
for ccc in xrange(k):
369
for rc,sc in barP(k+ccc,k):
370
for c in xrange(k):
371
cc = -(c+ccc)%k
372
Y.append((r(h,0,2*c+eps),r(h,1,2*cc-eps),r(h+1,1,rc),r(h+1,1,sc)))
373
Y.append((r(h,0,2*c-1+eps),r(h,1,2*cc-eps),r(h+1,0,rc),r(h+1,0,sc)))
374
375
376
# Line 10
377
for h in xrange(2):
378
for alpha in xrange(n-3):
379
for ra,sa in P(alpha,k):
380
for raa,saa in P(alpha,k):
381
Y.append((r(h,0,ra),r(h,0,sa),r(h,1,raa),r(h,1,saa)))
382
383
Y = tuple(map(tuple,map(sorted,Y)))
384
return Y
385
386
# Construction 6
387
def twelve_n_minus_ten(n, B):
388
"""
389
Returns a Steiner Quadruple System on `12n-6` points.
390
391
INPUT:
392
393
- ``n`` (integer)
394
395
- ``B`` -- A Steiner Quadruple System on `n` points.
396
397
EXAMPLES::
398
399
sage: from sage.combinat.designs.steiner_quadruple_systems import twelve_n_minus_ten, is_steiner_quadruple_system
400
sage: for n in xrange(4, 15):
401
....: if (n%6) in [2,4]:
402
....: sqs = designs.steiner_quadruple_system(n)
403
....: if not is_steiner_quadruple_system(12*n-10, twelve_n_minus_ten(n, sqs)):
404
....: print "Something is wrong !"
405
406
"""
407
408
B14 = steiner_quadruple_system(14)
409
r = lambda i,x : i%(n-1)+(x%12)*(n-1)
410
k = n/2
411
412
# Line 1.
413
Y = []
414
for s in B14:
415
for i in xrange(n-1):
416
Y.append(tuple(r(i,x) if x<= 11 else r(n-2,11)+x-11 for x in s ))
417
418
for s in B:
419
if s[-1] == n-1:
420
u,v,w,B = s
421
dd = {0:u,1:v,2:w}
422
d = lambda x:dd[x%3]
423
for b in xrange(12):
424
for bb in xrange(12):
425
bbb = -(b+bb)%12
426
for h in xrange(2):
427
# Line 2
428
Y.append((r(n-2,11)+1+h,r(u,b),r(v,bb),r(w,bbb+3*h)))
429
430
for i in xrange(3):
431
# Line 38.3
432
Y.append(( r(d(i),b+4+i), r(d(i),b+7+i), r(d(i+1),bb), r(d(i+2),bbb)))
433
434
for j in xrange(12):
435
for eps in xrange(2):
436
for i in xrange(3):
437
# Line 38.4-38.7
438
Y.append(( r(d(i),j), r(d(i+1),j+6*eps ), r(d(i+2),6*eps-2*j+1), r(d(i+2),6*eps-2*j-1)))
439
Y.append(( r(d(i),j), r(d(i+1),j+6*eps ), r(d(i+2),6*eps-2*j+2), r(d(i+2),6*eps-2*j-2)))
440
Y.append(( r(d(i),j), r(d(i+1),j+6*eps-3), r(d(i+2),6*eps-2*j+1), r(d(i+2),6*eps-2*j+2)))
441
Y.append(( r(d(i),j), r(d(i+1),j+6*eps+3), r(d(i+2),6*eps-2*j-1), r(d(i+2),6*eps-2*j-2)))
442
443
for j in xrange(6):
444
for i in xrange(3):
445
for eps in xrange(2):
446
# Line 38.8
447
Y.append(( r(d(i),j), r(d(i),j+6), r(d(i+1),j+3*eps), r(d(i+1),j+6+3*eps)))
448
449
for j in xrange(12):
450
for i in xrange(3):
451
for eps in xrange(4):
452
# Line 38.11
453
Y.append(( r(d(i),j), r(d(i),j+1), r(d(i+1),j+3*eps), r(d(i+1),j+3*eps+1)))
454
# Line 38.12
455
Y.append(( r(d(i),j), r(d(i),j+2), r(d(i+1),j+3*eps), r(d(i+1),j+3*eps+2)))
456
# Line 38.13
457
Y.append(( r(d(i),j), r(d(i),j+4), r(d(i+1),j+3*eps), r(d(i+1),j+3*eps+4)))
458
459
for alpha in [4,5]:
460
for ra,sa in P(alpha,6):
461
for raa,saa in P(alpha,6):
462
for i in xrange(3):
463
for ii in xrange(i+1,3):
464
# Line 38.14
465
Y.append(( r(d(i),ra), r(d(i),sa), r(d(ii),raa), r(d(ii),saa)))
466
467
for g in xrange(6):
468
for eps in xrange(2):
469
for i in xrange(3):
470
for ii in xrange(3):
471
if i == ii:
472
continue
473
# Line 38.9
474
Y.append(( r(d(i),2*g+3*eps), r(d(i),2*g+6+3*eps), r(d(ii),2*g+1), r(d(ii),2*g+5)))
475
# Line 38.10
476
Y.append(( r(d(i),2*g+3*eps), r(d(i),2*g+6+3*eps), r(d(ii),2*g+2), r(d(ii),2*g+4)))
477
478
else:
479
x,y,z,t = s
480
for a in xrange(12):
481
for aa in xrange(12):
482
for aaa in xrange(12):
483
aaaa = -(a+aa+aaa)%12
484
# Line 3
485
Y.append((r(x,a), r(y,aa), r(z,aaa), r(t,aaaa)))
486
return Y
487
488
def relabel_system(n,B):
489
r"""
490
Relabels the set so that `\{n-4, n-3, n-2, n-1\}` is in `B`.
491
492
INPUT:
493
494
- ``n`` -- an integer
495
496
- ``B`` -- a list of 4-uples on `0,...,n-1`.
497
498
EXAMPLE::
499
500
sage: from sage.combinat.designs.steiner_quadruple_systems import relabel_system
501
sage: designs.steiner_quadruple_system(8)
502
((0, 1, 2, 3), (0, 1, 6, 7), (0, 5, 2, 7), (0, 5, 6, 3), (4, 1, 2, 7),
503
(4, 1, 6, 3), (4, 5, 2, 3), (4, 5, 6, 7), (0, 1, 4, 5), (0, 2, 4, 6),
504
(0, 3, 4, 7), (1, 2, 5, 6), (1, 3, 5, 7), (2, 3, 6, 7))
505
sage: relabel_system(8,designs.steiner_quadruple_system(8))
506
((4, 5, 6, 7), (0, 1, 4, 5), (1, 2, 4, 6), (0, 2, 4, 7), (1, 3, 5, 6),
507
(0, 3, 5, 7), (2, 3, 6, 7), (0, 1, 2, 3), (2, 3, 4, 5), (0, 3, 4, 6),
508
(1, 3, 4, 7), (0, 2, 5, 6), (1, 2, 5, 7), (0, 1, 6, 7))
509
"""
510
511
label = {
512
B[0][0] : n-4,
513
B[0][1] : n-3,
514
B[0][2] : n-2,
515
B[0][3] : n-1
516
}
517
518
def get_label(x):
519
if x in label:
520
return label[x]
521
else:
522
total = len(label)-4
523
label[x] = total
524
return total
525
526
B = tuple([tuple(sorted(map(get_label,s))) for s in B])
527
return B
528
529
def P(alpha, m):
530
r"""
531
Returns the collection of pairs `P_{\alpha}(m)`
532
533
For more information on this system, see [Hanani60]_.
534
535
EXAMPLE::
536
537
sage: from sage.combinat.designs.steiner_quadruple_systems import P
538
sage: P(3,4)
539
[(0, 5), (2, 7), (4, 1), (6, 3)]
540
"""
541
if alpha >= 2*m-1:
542
raise Exception
543
if m%2==0:
544
if alpha < m:
545
if alpha%2 == 0:
546
b = alpha/2
547
return [(2*a, (2*a + 2*b + 1)%(2*m)) for a in xrange(m)]
548
else:
549
b = (alpha-1)/2
550
return [(2*a, (2*a - 2*b - 1)%(2*m)) for a in xrange(m)]
551
else:
552
y = alpha - m
553
pairs = [(b,(2*y-b)%(2*m)) for b in xrange(y)]
554
pairs += [(c,(2*m+2*y-c-2)%(2*m)) for c in xrange(2*y+1,m+y-1)]
555
pairs += [(2*m+int(-1.5-.5*(-1)**y),y),(2*m+int(-1.5+.5*(-1)**y),m+y-1)]
556
return pairs
557
else:
558
if alpha < m-1:
559
if alpha % 2 == 0:
560
b = alpha/2
561
return [(2*a,(2*a+2*b+1)%(2*m)) for a in xrange(m)]
562
else:
563
b = (alpha-1)/2
564
return [(2*a,(2*a-2*b-1)%(2*m)) for a in xrange(m)]
565
else:
566
y = alpha-m+1
567
pairs = [(b,2*y-b) for b in xrange(y)]
568
pairs += [(c,2*m+2*y-c) for c in xrange(2*y+1,m+y)]
569
pairs += [(y,m+y)]
570
return pairs
571
572
def _missing_pair(n,l):
573
r"""
574
Returns the smallest `(x,x+1)` that is not contained in `l`.
575
576
EXAMPLE::
577
578
sage: from sage.combinat.designs.steiner_quadruple_systems import _missing_pair
579
sage: _missing_pair(6, [(0,1), (4,5)])
580
(2, 3)
581
"""
582
l = [x for X in l for x in X]
583
for x in xrange(n):
584
if not x in l:
585
break
586
587
assert not x in l
588
assert not x+1 in l
589
return (x,x+1)
590
591
def barP(eps, m):
592
r"""
593
Returns the collection of pairs `\overline P_{\alpha}(m)`
594
595
For more information on this system, see [Hanani60]_.
596
597
EXAMPLE::
598
599
sage: from sage.combinat.designs.steiner_quadruple_systems import barP
600
sage: barP(3,4)
601
[(0, 4), (3, 5), (1, 2)]
602
"""
603
return barP_system(m)[eps]
604
605
@cached_function
606
def barP_system(m):
607
r"""
608
Returns the 1-factorization of `K_{2m}` `\overline P(m)`
609
610
For more information on this system, see [Hanani60]_.
611
612
EXAMPLE::
613
614
sage: from sage.combinat.designs.steiner_quadruple_systems import barP_system
615
sage: barP_system(3)
616
[[(4, 3), (2, 5)],
617
[(0, 5), (4, 1)],
618
[(0, 2), (1, 3)],
619
[(1, 5), (4, 2), (0, 3)],
620
[(0, 4), (3, 5), (1, 2)],
621
[(0, 1), (2, 3), (4, 5)]]
622
"""
623
isequal = lambda e1,e2 : e1 == e2 or e1 == tuple(reversed(e2))
624
pairs = []
625
last = []
626
627
if m % 2 == 0:
628
# The first (shorter) collections of pairs, obtained from P by removing
629
# pairs. Those are added to 'last', a new list of pairs
630
last = []
631
for n in xrange(1,(m-2)/2+1):
632
pairs.append([p for p in P(2*n,m) if not isequal(p,(2*n,(4*n+1)%(2*m)))])
633
last.append((2*n,(4*n+1)%(2*m)))
634
pairs.append([p for p in P(2*n-1,m) if not isequal(p,(2*m-2-2*n,2*m-1-4*n))])
635
last.append((2*m-2-2*n,2*m-1-4*n))
636
637
pairs.append([p for p in P(m,m) if not isequal(p,(2*m-2,0))])
638
last.append((2*m-2,0))
639
pairs.append([p for p in P(m+1,m) if not isequal(p,(2*m-1,1))])
640
last.append((2*m-1,1))
641
642
assert all(len(pp) == m-1 for pp in pairs)
643
assert len(last) == m
644
645
# Pairs of normal length
646
647
pairs.append(P(0,m))
648
pairs.append(P(m-1,m))
649
650
for alpha in xrange(m+2,2*m-1):
651
pairs.append(P(alpha,m))
652
pairs.append(last)
653
654
assert len(pairs) == 2*m
655
656
# Now the points must be relabeled
657
relabel = {}
658
for n in xrange(1,(m-2)/2+1):
659
relabel[2*n] = (4*n)%(2*m)
660
relabel[4*n+1] = (4*n+1)%(2*m)
661
relabel[2*m-2-2*n] = (4*n-2)%(2*m)
662
relabel[2*m-1-4*n] = (4*n-1)%(2*m)
663
664
relabel[2*m-2] = (1)%(2*m)
665
relabel[0] = 0
666
relabel[2*m-1] = 2*m-1
667
relabel[1] = 2*m-2
668
669
else:
670
# The first (shorter) collections of pairs, obtained from P by removing
671
# pairs. Those are added to 'last', a new list of pairs
672
673
last = []
674
for n in xrange(0,(m-3)/2+1):
675
pairs.append([p for p in P(2*n,m) if not isequal(p,(2*n,(4*n+1)%(2*m)))])
676
last.append((2*n,(4*n+1)%(2*m)))
677
pairs.append([p for p in P(2*n+1,m) if not isequal(p,(2*m-2-2*n,2*m-3-4*n))])
678
last.append((2*m-2-2*n,2*m-3-4*n))
679
680
pairs.append([p for p in P(2*m-2,m) if not isequal(p,(m-1,2*m-1))])
681
last.append((m-1,2*m-1))
682
683
assert all(len(pp) == m-1 for pp in pairs)
684
assert len(pairs) == m
685
686
# Pairs of normal length
687
688
for alpha in xrange(m-1,2*m-2):
689
pairs.append(P(alpha,m))
690
pairs.append(last)
691
692
assert len(pairs) == 2*m
693
694
# Now the points must be relabeled
695
relabel = {}
696
for n in xrange(0,(m-3)/2+1):
697
relabel[2*n] = (4*n)%(2*m)
698
relabel[4*n+1] = (4*n+1)%(2*m)
699
relabel[2*m-2-2*n] = (4*n+2)%(2*m)
700
relabel[2*m-3-4*n] = (4*n+3)%(2*m)
701
relabel[m-1] = (2*m-2)%(2*m)
702
relabel[2*m-1] = 2*m-1
703
704
assert len(relabel) == 2*m
705
assert len(pairs) == 2*m
706
707
# Relabeling the points
708
709
pairs = [[(relabel[x],relabel[y]) for x,y in pp] for pp in pairs]
710
711
# Pairs are sorted first according to their cardinality, then using the
712
# number of the smallest point that they do NOT contain.
713
pairs.sort(key=lambda x: _missing_pair(2*m+1,x))
714
715
return pairs
716
717
@cached_function
718
def steiner_quadruple_system(n, check = False):
719
r"""
720
Returns a Steiner Quadruple System on `n` points.
721
722
INPUT:
723
724
- ``n`` -- an integer such that `n\equiv 2,4\pmod 6`
725
726
- ``check`` (boolean) -- whether to check that the system is a Steiner
727
Quadruple System before returning it (`False` by default)
728
729
EXAMPLES::
730
731
sage: designs.steiner_quadruple_system(4)
732
((0, 1, 2, 3),)
733
sage: designs.steiner_quadruple_system(8)
734
((0, 1, 2, 3), (0, 1, 6, 7), (0, 5, 2, 7), (0, 5, 6, 3), (4, 1, 2, 7),
735
(4, 1, 6, 3), (4, 5, 2, 3), (4, 5, 6, 7), (0, 1, 4, 5), (0, 2, 4, 6),
736
(0, 3, 4, 7), (1, 2, 5, 6), (1, 3, 5, 7), (2, 3, 6, 7))
737
738
TESTS::
739
740
sage: for n in xrange(4, 100): # long time
741
....: if (n%6) in [2,4]: # long time
742
....: sqs = designs.steiner_quadruple_system(n, check=True) # long time
743
"""
744
n = int(n)
745
if not ((n%6) in [2, 4]):
746
raise ValueError("n mod 6 must be equal to 2 or 4")
747
elif n == 4:
748
return ((0,1,2,3),)
749
elif n == 14:
750
return _SQS14()
751
elif n == 38:
752
return _SQS38()
753
elif (n%12) in [4,8]:
754
nn = n/2
755
sqs = two_n(nn,steiner_quadruple_system(nn, check = False))
756
elif (n%18) in [4,10]:
757
nn = (n+2)/3
758
sqs = three_n_minus_two(nn,steiner_quadruple_system(nn, check = False))
759
elif (n%36) == 34:
760
nn = (n+8)/3
761
sqs = three_n_minus_eight(nn,steiner_quadruple_system(nn, check = False))
762
elif (n%36) == 26 :
763
nn = (n+4)/3
764
sqs = three_n_minus_four(nn,steiner_quadruple_system(nn, check = False))
765
elif (n%24) in [2,10]:
766
nn = (n+6)/4
767
sqs = four_n_minus_six(nn,steiner_quadruple_system(nn, check = False))
768
elif (n%72) in [14,38]:
769
nn = (n+10)/12
770
sqs = twelve_n_minus_ten(nn, steiner_quadruple_system(nn, check = False))
771
else:
772
raise ValueError("This shouldn't happen !")
773
774
if check:
775
if not is_steiner_quadruple_system(n, sqs):
776
raise RuntimeError("Something is very very wrong.")
777
778
return sqs
779
780
def is_steiner_quadruple_system(n,B):
781
r"""
782
Tests if `B` is a Steiner Quadruple System on `0,...,n-1`.
783
784
INPUT:
785
786
- ``n`` (integer)
787
788
- ``B`` -- a list of quadruples.
789
790
EXAMPLES::
791
792
sage: from sage.combinat.designs.steiner_quadruple_systems import is_steiner_quadruple_system
793
sage: is_steiner_quadruple_system(8,designs.steiner_quadruple_system(8))
794
True
795
"""
796
from sage.rings.arith import binomial
797
# Cardinality
798
if len(B)*4 != binomial(n,3):
799
return False
800
801
# Vertex set
802
V = set([])
803
for b in B:
804
for x in b:
805
V.add(x)
806
807
if V != set(range(n)):
808
return False
809
810
# No two 4-sets intersect on 3 elements.
811
from itertools import combinations
812
s = set([])
813
for b in B:
814
for e in combinations(b,3):
815
if frozenset(e) in s:
816
return False
817
s.add(frozenset(e))
818
819
return True
820
821
822
def _SQS14():
823
r"""
824
Returns a Steiner Quadruple System on 14 points.
825
826
Obtained form the La Jolla Covering Repository.
827
828
EXAMPLE::
829
830
sage: from sage.combinat.designs.steiner_quadruple_systems import is_steiner_quadruple_system, _SQS14
831
sage: is_steiner_quadruple_system(14,_SQS14())
832
True
833
"""
834
return ((0, 1, 2, 5), (0, 1, 3, 6), (0, 1, 4, 13), (0, 1, 7, 10), (0, 1, 8, 9),
835
(0, 1, 11, 12), (0, 2, 3, 4), (0, 2, 6, 12), (0, 2, 7, 9), (0, 2, 8, 11),
836
(0, 2, 10, 13), (0, 3, 5, 13), (0, 3, 7, 11), (0, 3, 8, 10), (0, 3, 9, 12),
837
(0, 4, 5, 9), (0, 4, 6, 11), (0, 4, 7, 8), (0, 4, 10, 12), (0, 5, 6, 8),
838
(0, 5, 7, 12), (0, 5, 10, 11), (0, 6, 7, 13), (0, 6, 9, 10), (0, 8, 12, 13),
839
(0, 9, 11, 13), (1, 2, 3, 13), (1, 2, 4, 12), (1, 2, 6, 9), (1, 2, 7, 11),
840
(1, 2, 8, 10), (1, 3, 4, 5), (1, 3, 7, 8), (1, 3, 9, 11), (1, 3, 10, 12),
841
(1, 4, 6, 10), (1, 4, 7, 9), (1, 4, 8, 11), (1, 5, 6, 11), (1, 5, 7, 13),
842
(1, 5, 8, 12), (1, 5, 9, 10), (1, 6, 7, 12), (1, 6, 8, 13), (1, 9, 12, 13),
843
(1, 10, 11, 13), (2, 3, 5, 11), (2, 3, 6, 7), (2, 3, 8, 12), (2, 3, 9, 10),
844
(2, 4, 5, 13), (2, 4, 6, 8), (2, 4, 7, 10), (2, 4, 9, 11), (2, 5, 6, 10),
845
(2, 5, 7, 8), (2, 5, 9, 12), (2, 6, 11, 13), (2, 7, 12, 13), (2, 8, 9, 13),
846
(2, 10, 11, 12), (3, 4, 6, 9), (3, 4, 7, 12), (3, 4, 8, 13), (3, 4, 10, 11),
847
(3, 5, 6, 12), (3, 5, 7, 10), (3, 5, 8, 9), (3, 6, 8, 11), (3, 6, 10, 13),
848
(3, 7, 9, 13), (3, 11, 12, 13), (4, 5, 6, 7), (4, 5, 8, 10), (4, 5, 11, 12),
849
(4, 6, 12, 13), (4, 7, 11, 13), (4, 8, 9, 12), (4, 9, 10, 13), (5, 6, 9, 13),
850
(5, 7, 9, 11), (5, 8, 11, 13), (5, 10, 12, 13), (6, 7, 8, 9), (6, 7, 10, 11),
851
(6, 8, 10, 12), (6, 9, 11, 12), (7, 8, 10, 13), (7, 8, 11, 12), (7, 9, 10, 12),
852
(8, 9, 10, 11))
853
854
def _SQS38():
855
r"""
856
Returns a Steiner Quadruple System on 14 points.
857
858
Obtained form the La Jolla Covering Repository.
859
860
EXAMPLE::
861
862
sage: from sage.combinat.designs.steiner_quadruple_systems import is_steiner_quadruple_system, _SQS38
863
sage: is_steiner_quadruple_system(38,_SQS38())
864
True
865
"""
866
867
# From the La Jolla Covering Repository
868
return ((0, 1, 2, 14), (0, 1, 3, 34), (0, 1, 4, 31), (0, 1, 5, 27), (0, 1, 6, 17),
869
(0, 1, 7, 12), (0, 1, 8, 36), (0, 1, 9, 10), (0, 1, 11, 18), (0, 1, 13, 37),
870
(0, 1, 15, 35), (0, 1, 16, 22), (0, 1, 19, 33), (0, 1, 20, 25), (0, 1, 21, 23),
871
(0, 1, 24, 32), (0, 1, 26, 28), (0, 1, 29, 30), (0, 2, 3, 10), (0, 2, 4, 9),
872
(0, 2, 5, 28), (0, 2, 6, 15), (0, 2, 7, 36), (0, 2, 8, 23), (0, 2, 11, 22),
873
(0, 2, 12, 13), (0, 2, 16, 25), (0, 2, 17, 18), (0, 2, 19, 30), (0, 2, 20, 35),
874
(0, 2, 21, 29), (0, 2, 24, 34), (0, 2, 26, 31), (0, 2, 27, 32), (0, 2, 33, 37),
875
(0, 3, 4, 18), (0, 3, 5, 23), (0, 3, 6, 32), (0, 3, 7, 19), (0, 3, 8, 20),
876
(0, 3, 9, 17), (0, 3, 11, 25), (0, 3, 12, 24), (0, 3, 13, 27), (0, 3, 14, 31),
877
(0, 3, 15, 22), (0, 3, 16, 28), (0, 3, 21, 33), (0, 3, 26, 36), (0, 3, 29, 35),
878
(0, 3, 30, 37), (0, 4, 5, 7), (0, 4, 6, 28), (0, 4, 8, 25), (0, 4, 10, 30),
879
(0, 4, 11, 20), (0, 4, 12, 32), (0, 4, 13, 36), (0, 4, 14, 29), (0, 4, 15, 27),
880
(0, 4, 16, 35), (0, 4, 17, 22), (0, 4, 19, 23), (0, 4, 21, 34), (0, 4, 24, 33),
881
(0, 4, 26, 37), (0, 5, 6, 24), (0, 5, 8, 26), (0, 5, 9, 29), (0, 5, 10, 20),
882
(0, 5, 11, 13), (0, 5, 12, 14), (0, 5, 15, 33), (0, 5, 16, 37), (0, 5, 17, 35),
883
(0, 5, 18, 19), (0, 5, 21, 25), (0, 5, 22, 30), (0, 5, 31, 32), (0, 5, 34, 36),
884
(0, 6, 7, 30), (0, 6, 8, 33), (0, 6, 9, 12), (0, 6, 10, 18), (0, 6, 11, 37),
885
(0, 6, 13, 31), (0, 6, 14, 35), (0, 6, 16, 29), (0, 6, 19, 25), (0, 6, 20, 27),
886
(0, 6, 21, 36), (0, 6, 22, 23), (0, 6, 26, 34), (0, 7, 8, 11), (0, 7, 9, 33),
887
(0, 7, 10, 21), (0, 7, 13, 20), (0, 7, 14, 22), (0, 7, 15, 31), (0, 7, 16, 34),
888
(0, 7, 17, 29), (0, 7, 18, 24), (0, 7, 23, 26), (0, 7, 25, 32), (0, 7, 27, 28),
889
(0, 7, 35, 37), (0, 8, 9, 37), (0, 8, 10, 27), (0, 8, 12, 18), (0, 8, 13, 30),
890
(0, 8, 14, 15), (0, 8, 16, 21), (0, 8, 17, 19), (0, 8, 22, 35), (0, 8, 24, 31),
891
(0, 8, 28, 34), (0, 8, 29, 32), (0, 9, 11, 30), (0, 9, 13, 23), (0, 9, 14, 18),
892
(0, 9, 15, 25), (0, 9, 16, 26), (0, 9, 19, 28), (0, 9, 20, 36), (0, 9, 21, 35),
893
(0, 9, 22, 24), (0, 9, 27, 31), (0, 9, 32, 34), (0, 10, 11, 36),
894
(0, 10, 12, 15), (0, 10, 13, 26), (0, 10, 14, 16), (0, 10, 17, 37),
895
(0, 10, 19, 29), (0, 10, 22, 31), (0, 10, 23, 32), (0, 10, 24, 35),
896
(0, 10, 25, 34), (0, 10, 28, 33), (0, 11, 12, 16), (0, 11, 14, 24),
897
(0, 11, 15, 26), (0, 11, 17, 31), (0, 11, 19, 21), (0, 11, 23, 34),
898
(0, 11, 27, 29), (0, 11, 28, 35), (0, 11, 32, 33), (0, 12, 17, 20),
899
(0, 12, 19, 35), (0, 12, 21, 28), (0, 12, 22, 25), (0, 12, 23, 27),
900
(0, 12, 26, 29), (0, 12, 30, 33), (0, 12, 31, 34), (0, 12, 36, 37),
901
(0, 13, 14, 33), (0, 13, 15, 29), (0, 13, 16, 24), (0, 13, 17, 21),
902
(0, 13, 18, 34), (0, 13, 19, 32), (0, 13, 22, 28), (0, 13, 25, 35),
903
(0, 14, 17, 26), (0, 14, 19, 20), (0, 14, 21, 32), (0, 14, 23, 36),
904
(0, 14, 25, 28), (0, 14, 27, 30), (0, 14, 34, 37), (0, 15, 16, 36),
905
(0, 15, 17, 23), (0, 15, 18, 20), (0, 15, 19, 34), (0, 15, 21, 37),
906
(0, 15, 24, 28), (0, 15, 30, 32), (0, 16, 17, 32), (0, 16, 18, 27),
907
(0, 16, 19, 31), (0, 16, 20, 33), (0, 16, 23, 30), (0, 17, 24, 27),
908
(0, 17, 25, 33), (0, 17, 28, 36), (0, 17, 30, 34), (0, 18, 21, 26),
909
(0, 18, 22, 29), (0, 18, 23, 28), (0, 18, 25, 31), (0, 18, 30, 35),
910
(0, 18, 32, 37), (0, 18, 33, 36), (0, 19, 22, 26), (0, 19, 24, 37),
911
(0, 19, 27, 36), (0, 20, 21, 31), (0, 20, 22, 37), (0, 20, 23, 24),
912
(0, 20, 26, 30), (0, 20, 28, 32), (0, 20, 29, 34), (0, 21, 22, 27),
913
(0, 21, 24, 30), (0, 22, 32, 36), (0, 22, 33, 34), (0, 23, 25, 29),
914
(0, 23, 31, 37), (0, 23, 33, 35), (0, 24, 25, 26), (0, 24, 29, 36),
915
(0, 25, 27, 37), (0, 25, 30, 36), (0, 26, 27, 33), (0, 26, 32, 35),
916
(0, 27, 34, 35), (0, 28, 29, 37), (0, 28, 30, 31), (0, 29, 31, 33),
917
(0, 31, 35, 36), (1, 2, 3, 15), (1, 2, 4, 35), (1, 2, 5, 32), (1, 2, 6, 28),
918
(1, 2, 7, 18), (1, 2, 8, 13), (1, 2, 9, 37), (1, 2, 10, 11), (1, 2, 12, 19),
919
(1, 2, 16, 36), (1, 2, 17, 23), (1, 2, 20, 34), (1, 2, 21, 26), (1, 2, 22, 24),
920
(1, 2, 25, 33), (1, 2, 27, 29), (1, 2, 30, 31), (1, 3, 4, 11), (1, 3, 5, 10),
921
(1, 3, 6, 29), (1, 3, 7, 16), (1, 3, 8, 37), (1, 3, 9, 24), (1, 3, 12, 23),
922
(1, 3, 13, 14), (1, 3, 17, 26), (1, 3, 18, 19), (1, 3, 20, 31), (1, 3, 21, 36),
923
(1, 3, 22, 30), (1, 3, 25, 35), (1, 3, 27, 32), (1, 3, 28, 33), (1, 4, 5, 19),
924
(1, 4, 6, 24), (1, 4, 7, 33), (1, 4, 8, 20), (1, 4, 9, 21), (1, 4, 10, 18),
925
(1, 4, 12, 26), (1, 4, 13, 25), (1, 4, 14, 28), (1, 4, 15, 32), (1, 4, 16, 23),
926
(1, 4, 17, 29), (1, 4, 22, 34), (1, 4, 27, 37), (1, 4, 30, 36), (1, 5, 6, 8),
927
(1, 5, 7, 29), (1, 5, 9, 26), (1, 5, 11, 31), (1, 5, 12, 21), (1, 5, 13, 33),
928
(1, 5, 14, 37), (1, 5, 15, 30), (1, 5, 16, 28), (1, 5, 17, 36), (1, 5, 18, 23),
929
(1, 5, 20, 24), (1, 5, 22, 35), (1, 5, 25, 34), (1, 6, 7, 25), (1, 6, 9, 27),
930
(1, 6, 10, 30), (1, 6, 11, 21), (1, 6, 12, 14), (1, 6, 13, 15), (1, 6, 16, 34),
931
(1, 6, 18, 36), (1, 6, 19, 20), (1, 6, 22, 26), (1, 6, 23, 31), (1, 6, 32, 33),
932
(1, 6, 35, 37), (1, 7, 8, 31), (1, 7, 9, 34), (1, 7, 10, 13), (1, 7, 11, 19),
933
(1, 7, 14, 32), (1, 7, 15, 36), (1, 7, 17, 30), (1, 7, 20, 26), (1, 7, 21, 28),
934
(1, 7, 22, 37), (1, 7, 23, 24), (1, 7, 27, 35), (1, 8, 9, 12), (1, 8, 10, 34),
935
(1, 8, 11, 22), (1, 8, 14, 21), (1, 8, 15, 23), (1, 8, 16, 32), (1, 8, 17, 35),
936
(1, 8, 18, 30), (1, 8, 19, 25), (1, 8, 24, 27), (1, 8, 26, 33), (1, 8, 28, 29),
937
(1, 9, 11, 28), (1, 9, 13, 19), (1, 9, 14, 31), (1, 9, 15, 16), (1, 9, 17, 22),
938
(1, 9, 18, 20), (1, 9, 23, 36), (1, 9, 25, 32), (1, 9, 29, 35), (1, 9, 30, 33),
939
(1, 10, 12, 31), (1, 10, 14, 24), (1, 10, 15, 19), (1, 10, 16, 26),
940
(1, 10, 17, 27), (1, 10, 20, 29), (1, 10, 21, 37), (1, 10, 22, 36),
941
(1, 10, 23, 25), (1, 10, 28, 32), (1, 10, 33, 35), (1, 11, 12, 37),
942
(1, 11, 13, 16), (1, 11, 14, 27), (1, 11, 15, 17), (1, 11, 20, 30),
943
(1, 11, 23, 32), (1, 11, 24, 33), (1, 11, 25, 36), (1, 11, 26, 35),
944
(1, 11, 29, 34), (1, 12, 13, 17), (1, 12, 15, 25), (1, 12, 16, 27),
945
(1, 12, 18, 32), (1, 12, 20, 22), (1, 12, 24, 35), (1, 12, 28, 30),
946
(1, 12, 29, 36), (1, 12, 33, 34), (1, 13, 18, 21), (1, 13, 20, 36),
947
(1, 13, 22, 29), (1, 13, 23, 26), (1, 13, 24, 28), (1, 13, 27, 30),
948
(1, 13, 31, 34), (1, 13, 32, 35), (1, 14, 15, 34), (1, 14, 16, 30),
949
(1, 14, 17, 25), (1, 14, 18, 22), (1, 14, 19, 35), (1, 14, 20, 33),
950
(1, 14, 23, 29), (1, 14, 26, 36), (1, 15, 18, 27), (1, 15, 20, 21),
951
(1, 15, 22, 33), (1, 15, 24, 37), (1, 15, 26, 29), (1, 15, 28, 31),
952
(1, 16, 17, 37), (1, 16, 18, 24), (1, 16, 19, 21), (1, 16, 20, 35),
953
(1, 16, 25, 29), (1, 16, 31, 33), (1, 17, 18, 33), (1, 17, 19, 28),
954
(1, 17, 20, 32), (1, 17, 21, 34), (1, 17, 24, 31), (1, 18, 25, 28),
955
(1, 18, 26, 34), (1, 18, 29, 37), (1, 18, 31, 35), (1, 19, 22, 27),
956
(1, 19, 23, 30), (1, 19, 24, 29), (1, 19, 26, 32), (1, 19, 31, 36),
957
(1, 19, 34, 37), (1, 20, 23, 27), (1, 20, 28, 37), (1, 21, 22, 32),
958
(1, 21, 24, 25), (1, 21, 27, 31), (1, 21, 29, 33), (1, 21, 30, 35),
959
(1, 22, 23, 28), (1, 22, 25, 31), (1, 23, 33, 37), (1, 23, 34, 35),
960
(1, 24, 26, 30), (1, 24, 34, 36), (1, 25, 26, 27), (1, 25, 30, 37),
961
(1, 26, 31, 37), (1, 27, 28, 34), (1, 27, 33, 36), (1, 28, 35, 36),
962
(1, 29, 31, 32), (1, 30, 32, 34), (1, 32, 36, 37), (2, 3, 4, 16),
963
(2, 3, 5, 36), (2, 3, 6, 33), (2, 3, 7, 29), (2, 3, 8, 19), (2, 3, 9, 14),
964
(2, 3, 11, 12), (2, 3, 13, 20), (2, 3, 17, 37), (2, 3, 18, 24), (2, 3, 21, 35),
965
(2, 3, 22, 27), (2, 3, 23, 25), (2, 3, 26, 34), (2, 3, 28, 30), (2, 3, 31, 32),
966
(2, 4, 5, 12), (2, 4, 6, 11), (2, 4, 7, 30), (2, 4, 8, 17), (2, 4, 10, 25),
967
(2, 4, 13, 24), (2, 4, 14, 15), (2, 4, 18, 27), (2, 4, 19, 20), (2, 4, 21, 32),
968
(2, 4, 22, 37), (2, 4, 23, 31), (2, 4, 26, 36), (2, 4, 28, 33), (2, 4, 29, 34),
969
(2, 5, 6, 20), (2, 5, 7, 25), (2, 5, 8, 34), (2, 5, 9, 21), (2, 5, 10, 22),
970
(2, 5, 11, 19), (2, 5, 13, 27), (2, 5, 14, 26), (2, 5, 15, 29), (2, 5, 16, 33),
971
(2, 5, 17, 24), (2, 5, 18, 30), (2, 5, 23, 35), (2, 5, 31, 37), (2, 6, 7, 9),
972
(2, 6, 8, 30), (2, 6, 10, 27), (2, 6, 12, 32), (2, 6, 13, 22), (2, 6, 14, 34),
973
(2, 6, 16, 31), (2, 6, 17, 29), (2, 6, 18, 37), (2, 6, 19, 24), (2, 6, 21, 25),
974
(2, 6, 23, 36), (2, 6, 26, 35), (2, 7, 8, 26), (2, 7, 10, 28), (2, 7, 11, 31),
975
(2, 7, 12, 22), (2, 7, 13, 15), (2, 7, 14, 16), (2, 7, 17, 35), (2, 7, 19, 37),
976
(2, 7, 20, 21), (2, 7, 23, 27), (2, 7, 24, 32), (2, 7, 33, 34), (2, 8, 9, 32),
977
(2, 8, 10, 35), (2, 8, 11, 14), (2, 8, 12, 20), (2, 8, 15, 33), (2, 8, 16, 37),
978
(2, 8, 18, 31), (2, 8, 21, 27), (2, 8, 22, 29), (2, 8, 24, 25), (2, 8, 28, 36),
979
(2, 9, 10, 13), (2, 9, 11, 35), (2, 9, 12, 23), (2, 9, 15, 22), (2, 9, 16, 24),
980
(2, 9, 17, 33), (2, 9, 18, 36), (2, 9, 19, 31), (2, 9, 20, 26), (2, 9, 25, 28),
981
(2, 9, 27, 34), (2, 9, 29, 30), (2, 10, 12, 29), (2, 10, 14, 20),
982
(2, 10, 15, 32), (2, 10, 16, 17), (2, 10, 18, 23), (2, 10, 19, 21),
983
(2, 10, 24, 37), (2, 10, 26, 33), (2, 10, 30, 36), (2, 10, 31, 34),
984
(2, 11, 13, 32), (2, 11, 15, 25), (2, 11, 16, 20), (2, 11, 17, 27),
985
(2, 11, 18, 28), (2, 11, 21, 30), (2, 11, 23, 37), (2, 11, 24, 26),
986
(2, 11, 29, 33), (2, 11, 34, 36), (2, 12, 14, 17), (2, 12, 15, 28),
987
(2, 12, 16, 18), (2, 12, 21, 31), (2, 12, 24, 33), (2, 12, 25, 34),
988
(2, 12, 26, 37), (2, 12, 27, 36), (2, 12, 30, 35), (2, 13, 14, 18),
989
(2, 13, 16, 26), (2, 13, 17, 28), (2, 13, 19, 33), (2, 13, 21, 23),
990
(2, 13, 25, 36), (2, 13, 29, 31), (2, 13, 30, 37), (2, 13, 34, 35),
991
(2, 14, 19, 22), (2, 14, 21, 37), (2, 14, 23, 30), (2, 14, 24, 27),
992
(2, 14, 25, 29), (2, 14, 28, 31), (2, 14, 32, 35), (2, 14, 33, 36),
993
(2, 15, 16, 35), (2, 15, 17, 31), (2, 15, 18, 26), (2, 15, 19, 23),
994
(2, 15, 20, 36), (2, 15, 21, 34), (2, 15, 24, 30), (2, 15, 27, 37),
995
(2, 16, 19, 28), (2, 16, 21, 22), (2, 16, 23, 34), (2, 16, 27, 30),
996
(2, 16, 29, 32), (2, 17, 19, 25), (2, 17, 20, 22), (2, 17, 21, 36),
997
(2, 17, 26, 30), (2, 17, 32, 34), (2, 18, 19, 34), (2, 18, 20, 29),
998
(2, 18, 21, 33), (2, 18, 22, 35), (2, 18, 25, 32), (2, 19, 26, 29),
999
(2, 19, 27, 35), (2, 19, 32, 36), (2, 20, 23, 28), (2, 20, 24, 31),
1000
(2, 20, 25, 30), (2, 20, 27, 33), (2, 20, 32, 37), (2, 21, 24, 28),
1001
(2, 22, 23, 33), (2, 22, 25, 26), (2, 22, 28, 32), (2, 22, 30, 34),
1002
(2, 22, 31, 36), (2, 23, 24, 29), (2, 23, 26, 32), (2, 24, 35, 36),
1003
(2, 25, 27, 31), (2, 25, 35, 37), (2, 26, 27, 28), (2, 28, 29, 35),
1004
(2, 28, 34, 37), (2, 29, 36, 37), (2, 30, 32, 33), (2, 31, 33, 35),
1005
(3, 4, 5, 17), (3, 4, 6, 37), (3, 4, 7, 34), (3, 4, 8, 30), (3, 4, 9, 20),
1006
(3, 4, 10, 15), (3, 4, 12, 13), (3, 4, 14, 21), (3, 4, 19, 25), (3, 4, 22, 36),
1007
(3, 4, 23, 28), (3, 4, 24, 26), (3, 4, 27, 35), (3, 4, 29, 31), (3, 4, 32, 33),
1008
(3, 5, 6, 13), (3, 5, 7, 12), (3, 5, 8, 31), (3, 5, 9, 18), (3, 5, 11, 26),
1009
(3, 5, 14, 25), (3, 5, 15, 16), (3, 5, 19, 28), (3, 5, 20, 21), (3, 5, 22, 33),
1010
(3, 5, 24, 32), (3, 5, 27, 37), (3, 5, 29, 34), (3, 5, 30, 35), (3, 6, 7, 21),
1011
(3, 6, 8, 26), (3, 6, 9, 35), (3, 6, 10, 22), (3, 6, 11, 23), (3, 6, 12, 20),
1012
(3, 6, 14, 28), (3, 6, 15, 27), (3, 6, 16, 30), (3, 6, 17, 34), (3, 6, 18, 25),
1013
(3, 6, 19, 31), (3, 6, 24, 36), (3, 7, 8, 10), (3, 7, 9, 31), (3, 7, 11, 28),
1014
(3, 7, 13, 33), (3, 7, 14, 23), (3, 7, 15, 35), (3, 7, 17, 32), (3, 7, 18, 30),
1015
(3, 7, 20, 25), (3, 7, 22, 26), (3, 7, 24, 37), (3, 7, 27, 36), (3, 8, 9, 27),
1016
(3, 8, 11, 29), (3, 8, 12, 32), (3, 8, 13, 23), (3, 8, 14, 16), (3, 8, 15, 17),
1017
(3, 8, 18, 36), (3, 8, 21, 22), (3, 8, 24, 28), (3, 8, 25, 33), (3, 8, 34, 35),
1018
(3, 9, 10, 33), (3, 9, 11, 36), (3, 9, 12, 15), (3, 9, 13, 21), (3, 9, 16, 34),
1019
(3, 9, 19, 32), (3, 9, 22, 28), (3, 9, 23, 30), (3, 9, 25, 26), (3, 9, 29, 37),
1020
(3, 10, 11, 14), (3, 10, 12, 36), (3, 10, 13, 24), (3, 10, 16, 23),
1021
(3, 10, 17, 25), (3, 10, 18, 34), (3, 10, 19, 37), (3, 10, 20, 32),
1022
(3, 10, 21, 27), (3, 10, 26, 29), (3, 10, 28, 35), (3, 10, 30, 31),
1023
(3, 11, 13, 30), (3, 11, 15, 21), (3, 11, 16, 33), (3, 11, 17, 18),
1024
(3, 11, 19, 24), (3, 11, 20, 22), (3, 11, 27, 34), (3, 11, 31, 37),
1025
(3, 11, 32, 35), (3, 12, 14, 33), (3, 12, 16, 26), (3, 12, 17, 21),
1026
(3, 12, 18, 28), (3, 12, 19, 29), (3, 12, 22, 31), (3, 12, 25, 27),
1027
(3, 12, 30, 34), (3, 12, 35, 37), (3, 13, 15, 18), (3, 13, 16, 29),
1028
(3, 13, 17, 19), (3, 13, 22, 32), (3, 13, 25, 34), (3, 13, 26, 35),
1029
(3, 13, 28, 37), (3, 13, 31, 36), (3, 14, 15, 19), (3, 14, 17, 27),
1030
(3, 14, 18, 29), (3, 14, 20, 34), (3, 14, 22, 24), (3, 14, 26, 37),
1031
(3, 14, 30, 32), (3, 14, 35, 36), (3, 15, 20, 23), (3, 15, 24, 31),
1032
(3, 15, 25, 28), (3, 15, 26, 30), (3, 15, 29, 32), (3, 15, 33, 36),
1033
(3, 15, 34, 37), (3, 16, 17, 36), (3, 16, 18, 32), (3, 16, 19, 27),
1034
(3, 16, 20, 24), (3, 16, 21, 37), (3, 16, 22, 35), (3, 16, 25, 31),
1035
(3, 17, 20, 29), (3, 17, 22, 23), (3, 17, 24, 35), (3, 17, 28, 31),
1036
(3, 17, 30, 33), (3, 18, 20, 26), (3, 18, 21, 23), (3, 18, 22, 37),
1037
(3, 18, 27, 31), (3, 18, 33, 35), (3, 19, 20, 35), (3, 19, 21, 30),
1038
(3, 19, 22, 34), (3, 19, 23, 36), (3, 19, 26, 33), (3, 20, 27, 30),
1039
(3, 20, 28, 36), (3, 20, 33, 37), (3, 21, 24, 29), (3, 21, 25, 32),
1040
(3, 21, 26, 31), (3, 21, 28, 34), (3, 22, 25, 29), (3, 23, 24, 34),
1041
(3, 23, 26, 27), (3, 23, 29, 33), (3, 23, 31, 35), (3, 23, 32, 37),
1042
(3, 24, 25, 30), (3, 24, 27, 33), (3, 25, 36, 37), (3, 26, 28, 32),
1043
(3, 27, 28, 29), (3, 29, 30, 36), (3, 31, 33, 34), (3, 32, 34, 36),
1044
(4, 5, 6, 18), (4, 5, 8, 35), (4, 5, 9, 31), (4, 5, 10, 21), (4, 5, 11, 16),
1045
(4, 5, 13, 14), (4, 5, 15, 22), (4, 5, 20, 26), (4, 5, 23, 37), (4, 5, 24, 29),
1046
(4, 5, 25, 27), (4, 5, 28, 36), (4, 5, 30, 32), (4, 5, 33, 34), (4, 6, 7, 14),
1047
(4, 6, 8, 13), (4, 6, 9, 32), (4, 6, 10, 19), (4, 6, 12, 27), (4, 6, 15, 26),
1048
(4, 6, 16, 17), (4, 6, 20, 29), (4, 6, 21, 22), (4, 6, 23, 34), (4, 6, 25, 33),
1049
(4, 6, 30, 35), (4, 6, 31, 36), (4, 7, 8, 22), (4, 7, 9, 27), (4, 7, 10, 36),
1050
(4, 7, 11, 23), (4, 7, 12, 24), (4, 7, 13, 21), (4, 7, 15, 29), (4, 7, 16, 28),
1051
(4, 7, 17, 31), (4, 7, 18, 35), (4, 7, 19, 26), (4, 7, 20, 32), (4, 7, 25, 37),
1052
(4, 8, 9, 11), (4, 8, 10, 32), (4, 8, 12, 29), (4, 8, 14, 34), (4, 8, 15, 24),
1053
(4, 8, 16, 36), (4, 8, 18, 33), (4, 8, 19, 31), (4, 8, 21, 26), (4, 8, 23, 27),
1054
(4, 8, 28, 37), (4, 9, 10, 28), (4, 9, 12, 30), (4, 9, 13, 33), (4, 9, 14, 24),
1055
(4, 9, 15, 17), (4, 9, 16, 18), (4, 9, 19, 37), (4, 9, 22, 23), (4, 9, 25, 29),
1056
(4, 9, 26, 34), (4, 9, 35, 36), (4, 10, 11, 34), (4, 10, 12, 37),
1057
(4, 10, 13, 16), (4, 10, 14, 22), (4, 10, 17, 35), (4, 10, 20, 33),
1058
(4, 10, 23, 29), (4, 10, 24, 31), (4, 10, 26, 27), (4, 11, 12, 15),
1059
(4, 11, 13, 37), (4, 11, 14, 25), (4, 11, 17, 24), (4, 11, 18, 26),
1060
(4, 11, 19, 35), (4, 11, 21, 33), (4, 11, 22, 28), (4, 11, 27, 30),
1061
(4, 11, 29, 36), (4, 11, 31, 32), (4, 12, 14, 31), (4, 12, 16, 22),
1062
(4, 12, 17, 34), (4, 12, 18, 19), (4, 12, 20, 25), (4, 12, 21, 23),
1063
(4, 12, 28, 35), (4, 12, 33, 36), (4, 13, 15, 34), (4, 13, 17, 27),
1064
(4, 13, 18, 22), (4, 13, 19, 29), (4, 13, 20, 30), (4, 13, 23, 32),
1065
(4, 13, 26, 28), (4, 13, 31, 35), (4, 14, 16, 19), (4, 14, 17, 30),
1066
(4, 14, 18, 20), (4, 14, 23, 33), (4, 14, 26, 35), (4, 14, 27, 36),
1067
(4, 14, 32, 37), (4, 15, 16, 20), (4, 15, 18, 28), (4, 15, 19, 30),
1068
(4, 15, 21, 35), (4, 15, 23, 25), (4, 15, 31, 33), (4, 15, 36, 37),
1069
(4, 16, 21, 24), (4, 16, 25, 32), (4, 16, 26, 29), (4, 16, 27, 31),
1070
(4, 16, 30, 33), (4, 16, 34, 37), (4, 17, 18, 37), (4, 17, 19, 33),
1071
(4, 17, 20, 28), (4, 17, 21, 25), (4, 17, 23, 36), (4, 17, 26, 32),
1072
(4, 18, 21, 30), (4, 18, 23, 24), (4, 18, 25, 36), (4, 18, 29, 32),
1073
(4, 18, 31, 34), (4, 19, 21, 27), (4, 19, 22, 24), (4, 19, 28, 32),
1074
(4, 19, 34, 36), (4, 20, 21, 36), (4, 20, 22, 31), (4, 20, 23, 35),
1075
(4, 20, 24, 37), (4, 20, 27, 34), (4, 21, 28, 31), (4, 21, 29, 37),
1076
(4, 22, 25, 30), (4, 22, 26, 33), (4, 22, 27, 32), (4, 22, 29, 35),
1077
(4, 23, 26, 30), (4, 24, 25, 35), (4, 24, 27, 28), (4, 24, 30, 34),
1078
(4, 24, 32, 36), (4, 25, 26, 31), (4, 25, 28, 34), (4, 27, 29, 33),
1079
(4, 28, 29, 30), (4, 30, 31, 37), (4, 32, 34, 35), (4, 33, 35, 37),
1080
(5, 6, 7, 19), (5, 6, 9, 36), (5, 6, 10, 32), (5, 6, 11, 22), (5, 6, 12, 17),
1081
(5, 6, 14, 15), (5, 6, 16, 23), (5, 6, 21, 27), (5, 6, 25, 30), (5, 6, 26, 28),
1082
(5, 6, 29, 37), (5, 6, 31, 33), (5, 6, 34, 35), (5, 7, 8, 15), (5, 7, 9, 14),
1083
(5, 7, 10, 33), (5, 7, 11, 20), (5, 7, 13, 28), (5, 7, 16, 27), (5, 7, 17, 18),
1084
(5, 7, 21, 30), (5, 7, 22, 23), (5, 7, 24, 35), (5, 7, 26, 34), (5, 7, 31, 36),
1085
(5, 7, 32, 37), (5, 8, 9, 23), (5, 8, 10, 28), (5, 8, 11, 37), (5, 8, 12, 24),
1086
(5, 8, 13, 25), (5, 8, 14, 22), (5, 8, 16, 30), (5, 8, 17, 29), (5, 8, 18, 32),
1087
(5, 8, 19, 36), (5, 8, 20, 27), (5, 8, 21, 33), (5, 9, 10, 12), (5, 9, 11, 33),
1088
(5, 9, 13, 30), (5, 9, 15, 35), (5, 9, 16, 25), (5, 9, 17, 37), (5, 9, 19, 34),
1089
(5, 9, 20, 32), (5, 9, 22, 27), (5, 9, 24, 28), (5, 10, 11, 29),
1090
(5, 10, 13, 31), (5, 10, 14, 34), (5, 10, 15, 25), (5, 10, 16, 18),
1091
(5, 10, 17, 19), (5, 10, 23, 24), (5, 10, 26, 30), (5, 10, 27, 35),
1092
(5, 10, 36, 37), (5, 11, 12, 35), (5, 11, 14, 17), (5, 11, 15, 23),
1093
(5, 11, 18, 36), (5, 11, 21, 34), (5, 11, 24, 30), (5, 11, 25, 32),
1094
(5, 11, 27, 28), (5, 12, 13, 16), (5, 12, 15, 26), (5, 12, 18, 25),
1095
(5, 12, 19, 27), (5, 12, 20, 36), (5, 12, 22, 34), (5, 12, 23, 29),
1096
(5, 12, 28, 31), (5, 12, 30, 37), (5, 12, 32, 33), (5, 13, 15, 32),
1097
(5, 13, 17, 23), (5, 13, 18, 35), (5, 13, 19, 20), (5, 13, 21, 26),
1098
(5, 13, 22, 24), (5, 13, 29, 36), (5, 13, 34, 37), (5, 14, 16, 35),
1099
(5, 14, 18, 28), (5, 14, 19, 23), (5, 14, 20, 30), (5, 14, 21, 31),
1100
(5, 14, 24, 33), (5, 14, 27, 29), (5, 14, 32, 36), (5, 15, 17, 20),
1101
(5, 15, 18, 31), (5, 15, 19, 21), (5, 15, 24, 34), (5, 15, 27, 36),
1102
(5, 15, 28, 37), (5, 16, 17, 21), (5, 16, 19, 29), (5, 16, 20, 31),
1103
(5, 16, 22, 36), (5, 16, 24, 26), (5, 16, 32, 34), (5, 17, 22, 25),
1104
(5, 17, 26, 33), (5, 17, 27, 30), (5, 17, 28, 32), (5, 17, 31, 34),
1105
(5, 18, 20, 34), (5, 18, 21, 29), (5, 18, 22, 26), (5, 18, 24, 37),
1106
(5, 18, 27, 33), (5, 19, 22, 31), (5, 19, 24, 25), (5, 19, 26, 37),
1107
(5, 19, 30, 33), (5, 19, 32, 35), (5, 20, 22, 28), (5, 20, 23, 25),
1108
(5, 20, 29, 33), (5, 20, 35, 37), (5, 21, 22, 37), (5, 21, 23, 32),
1109
(5, 21, 24, 36), (5, 21, 28, 35), (5, 22, 29, 32), (5, 23, 26, 31),
1110
(5, 23, 27, 34), (5, 23, 28, 33), (5, 23, 30, 36), (5, 24, 27, 31),
1111
(5, 25, 26, 36), (5, 25, 28, 29), (5, 25, 31, 35), (5, 25, 33, 37),
1112
(5, 26, 27, 32), (5, 26, 29, 35), (5, 28, 30, 34), (5, 29, 30, 31),
1113
(5, 33, 35, 36), (6, 7, 8, 20), (6, 7, 10, 37), (6, 7, 11, 33), (6, 7, 12, 23),
1114
(6, 7, 13, 18), (6, 7, 15, 16), (6, 7, 17, 24), (6, 7, 22, 28), (6, 7, 26, 31),
1115
(6, 7, 27, 29), (6, 7, 32, 34), (6, 7, 35, 36), (6, 8, 9, 16), (6, 8, 10, 15),
1116
(6, 8, 11, 34), (6, 8, 12, 21), (6, 8, 14, 29), (6, 8, 17, 28), (6, 8, 18, 19),
1117
(6, 8, 22, 31), (6, 8, 23, 24), (6, 8, 25, 36), (6, 8, 27, 35), (6, 8, 32, 37),
1118
(6, 9, 10, 24), (6, 9, 11, 29), (6, 9, 13, 25), (6, 9, 14, 26), (6, 9, 15, 23),
1119
(6, 9, 17, 31), (6, 9, 18, 30), (6, 9, 19, 33), (6, 9, 20, 37), (6, 9, 21, 28),
1120
(6, 9, 22, 34), (6, 10, 11, 13), (6, 10, 12, 34), (6, 10, 14, 31),
1121
(6, 10, 16, 36), (6, 10, 17, 26), (6, 10, 20, 35), (6, 10, 21, 33),
1122
(6, 10, 23, 28), (6, 10, 25, 29), (6, 11, 12, 30), (6, 11, 14, 32),
1123
(6, 11, 15, 35), (6, 11, 16, 26), (6, 11, 17, 19), (6, 11, 18, 20),
1124
(6, 11, 24, 25), (6, 11, 27, 31), (6, 11, 28, 36), (6, 12, 13, 36),
1125
(6, 12, 15, 18), (6, 12, 16, 24), (6, 12, 19, 37), (6, 12, 22, 35),
1126
(6, 12, 25, 31), (6, 12, 26, 33), (6, 12, 28, 29), (6, 13, 14, 17),
1127
(6, 13, 16, 27), (6, 13, 19, 26), (6, 13, 20, 28), (6, 13, 21, 37),
1128
(6, 13, 23, 35), (6, 13, 24, 30), (6, 13, 29, 32), (6, 13, 33, 34),
1129
(6, 14, 16, 33), (6, 14, 18, 24), (6, 14, 19, 36), (6, 14, 20, 21),
1130
(6, 14, 22, 27), (6, 14, 23, 25), (6, 14, 30, 37), (6, 15, 17, 36),
1131
(6, 15, 19, 29), (6, 15, 20, 24), (6, 15, 21, 31), (6, 15, 22, 32),
1132
(6, 15, 25, 34), (6, 15, 28, 30), (6, 15, 33, 37), (6, 16, 18, 21),
1133
(6, 16, 19, 32), (6, 16, 20, 22), (6, 16, 25, 35), (6, 16, 28, 37),
1134
(6, 17, 18, 22), (6, 17, 20, 30), (6, 17, 21, 32), (6, 17, 23, 37),
1135
(6, 17, 25, 27), (6, 17, 33, 35), (6, 18, 23, 26), (6, 18, 27, 34),
1136
(6, 18, 28, 31), (6, 18, 29, 33), (6, 18, 32, 35), (6, 19, 21, 35),
1137
(6, 19, 22, 30), (6, 19, 23, 27), (6, 19, 28, 34), (6, 20, 23, 32),
1138
(6, 20, 25, 26), (6, 20, 31, 34), (6, 20, 33, 36), (6, 21, 23, 29),
1139
(6, 21, 24, 26), (6, 21, 30, 34), (6, 22, 24, 33), (6, 22, 25, 37),
1140
(6, 22, 29, 36), (6, 23, 30, 33), (6, 24, 27, 32), (6, 24, 28, 35),
1141
(6, 24, 29, 34), (6, 24, 31, 37), (6, 25, 28, 32), (6, 26, 27, 37),
1142
(6, 26, 29, 30), (6, 26, 32, 36), (6, 27, 28, 33), (6, 27, 30, 36),
1143
(6, 29, 31, 35), (6, 30, 31, 32), (6, 34, 36, 37), (7, 8, 9, 21),
1144
(7, 8, 12, 34), (7, 8, 13, 24), (7, 8, 14, 19), (7, 8, 16, 17), (7, 8, 18, 25),
1145
(7, 8, 23, 29), (7, 8, 27, 32), (7, 8, 28, 30), (7, 8, 33, 35), (7, 8, 36, 37),
1146
(7, 9, 10, 17), (7, 9, 11, 16), (7, 9, 12, 35), (7, 9, 13, 22), (7, 9, 15, 30),
1147
(7, 9, 18, 29), (7, 9, 19, 20), (7, 9, 23, 32), (7, 9, 24, 25), (7, 9, 26, 37),
1148
(7, 9, 28, 36), (7, 10, 11, 25), (7, 10, 12, 30), (7, 10, 14, 26),
1149
(7, 10, 15, 27), (7, 10, 16, 24), (7, 10, 18, 32), (7, 10, 19, 31),
1150
(7, 10, 20, 34), (7, 10, 22, 29), (7, 10, 23, 35), (7, 11, 12, 14),
1151
(7, 11, 13, 35), (7, 11, 15, 32), (7, 11, 17, 37), (7, 11, 18, 27),
1152
(7, 11, 21, 36), (7, 11, 22, 34), (7, 11, 24, 29), (7, 11, 26, 30),
1153
(7, 12, 13, 31), (7, 12, 15, 33), (7, 12, 16, 36), (7, 12, 17, 27),
1154
(7, 12, 18, 20), (7, 12, 19, 21), (7, 12, 25, 26), (7, 12, 28, 32),
1155
(7, 12, 29, 37), (7, 13, 14, 37), (7, 13, 16, 19), (7, 13, 17, 25),
1156
(7, 13, 23, 36), (7, 13, 26, 32), (7, 13, 27, 34), (7, 13, 29, 30),
1157
(7, 14, 15, 18), (7, 14, 17, 28), (7, 14, 20, 27), (7, 14, 21, 29),
1158
(7, 14, 24, 36), (7, 14, 25, 31), (7, 14, 30, 33), (7, 14, 34, 35),
1159
(7, 15, 17, 34), (7, 15, 19, 25), (7, 15, 20, 37), (7, 15, 21, 22),
1160
(7, 15, 23, 28), (7, 15, 24, 26), (7, 16, 18, 37), (7, 16, 20, 30),
1161
(7, 16, 21, 25), (7, 16, 22, 32), (7, 16, 23, 33), (7, 16, 26, 35),
1162
(7, 16, 29, 31), (7, 17, 19, 22), (7, 17, 20, 33), (7, 17, 21, 23),
1163
(7, 17, 26, 36), (7, 18, 19, 23), (7, 18, 21, 31), (7, 18, 22, 33),
1164
(7, 18, 26, 28), (7, 18, 34, 36), (7, 19, 24, 27), (7, 19, 28, 35),
1165
(7, 19, 29, 32), (7, 19, 30, 34), (7, 19, 33, 36), (7, 20, 22, 36),
1166
(7, 20, 23, 31), (7, 20, 24, 28), (7, 20, 29, 35), (7, 21, 24, 33),
1167
(7, 21, 26, 27), (7, 21, 32, 35), (7, 21, 34, 37), (7, 22, 24, 30),
1168
(7, 22, 25, 27), (7, 22, 31, 35), (7, 23, 25, 34), (7, 23, 30, 37),
1169
(7, 24, 31, 34), (7, 25, 28, 33), (7, 25, 29, 36), (7, 25, 30, 35),
1170
(7, 26, 29, 33), (7, 27, 30, 31), (7, 27, 33, 37), (7, 28, 29, 34),
1171
(7, 28, 31, 37), (7, 30, 32, 36), (7, 31, 32, 33), (8, 9, 10, 22),
1172
(8, 9, 13, 35), (8, 9, 14, 25), (8, 9, 15, 20), (8, 9, 17, 18), (8, 9, 19, 26),
1173
(8, 9, 24, 30), (8, 9, 28, 33), (8, 9, 29, 31), (8, 9, 34, 36), (8, 10, 11, 18),
1174
(8, 10, 12, 17), (8, 10, 13, 36), (8, 10, 14, 23), (8, 10, 16, 31),
1175
(8, 10, 19, 30), (8, 10, 20, 21), (8, 10, 24, 33), (8, 10, 25, 26),
1176
(8, 10, 29, 37), (8, 11, 12, 26), (8, 11, 13, 31), (8, 11, 15, 27),
1177
(8, 11, 16, 28), (8, 11, 17, 25), (8, 11, 19, 33), (8, 11, 20, 32),
1178
(8, 11, 21, 35), (8, 11, 23, 30), (8, 11, 24, 36), (8, 12, 13, 15),
1179
(8, 12, 14, 36), (8, 12, 16, 33), (8, 12, 19, 28), (8, 12, 22, 37),
1180
(8, 12, 23, 35), (8, 12, 25, 30), (8, 12, 27, 31), (8, 13, 14, 32),
1181
(8, 13, 16, 34), (8, 13, 17, 37), (8, 13, 18, 28), (8, 13, 19, 21),
1182
(8, 13, 20, 22), (8, 13, 26, 27), (8, 13, 29, 33), (8, 14, 17, 20),
1183
(8, 14, 18, 26), (8, 14, 24, 37), (8, 14, 27, 33), (8, 14, 28, 35),
1184
(8, 14, 30, 31), (8, 15, 16, 19), (8, 15, 18, 29), (8, 15, 21, 28),
1185
(8, 15, 22, 30), (8, 15, 25, 37), (8, 15, 26, 32), (8, 15, 31, 34),
1186
(8, 15, 35, 36), (8, 16, 18, 35), (8, 16, 20, 26), (8, 16, 22, 23),
1187
(8, 16, 24, 29), (8, 16, 25, 27), (8, 17, 21, 31), (8, 17, 22, 26),
1188
(8, 17, 23, 33), (8, 17, 24, 34), (8, 17, 27, 36), (8, 17, 30, 32),
1189
(8, 18, 20, 23), (8, 18, 21, 34), (8, 18, 22, 24), (8, 18, 27, 37),
1190
(8, 19, 20, 24), (8, 19, 22, 32), (8, 19, 23, 34), (8, 19, 27, 29),
1191
(8, 19, 35, 37), (8, 20, 25, 28), (8, 20, 29, 36), (8, 20, 30, 33),
1192
(8, 20, 31, 35), (8, 20, 34, 37), (8, 21, 23, 37), (8, 21, 24, 32),
1193
(8, 21, 25, 29), (8, 21, 30, 36), (8, 22, 25, 34), (8, 22, 27, 28),
1194
(8, 22, 33, 36), (8, 23, 25, 31), (8, 23, 26, 28), (8, 23, 32, 36),
1195
(8, 24, 26, 35), (8, 25, 32, 35), (8, 26, 29, 34), (8, 26, 30, 37),
1196
(8, 26, 31, 36), (8, 27, 30, 34), (8, 28, 31, 32), (8, 29, 30, 35),
1197
(8, 31, 33, 37), (8, 32, 33, 34), (9, 10, 11, 23), (9, 10, 14, 36),
1198
(9, 10, 15, 26), (9, 10, 16, 21), (9, 10, 18, 19), (9, 10, 20, 27),
1199
(9, 10, 25, 31), (9, 10, 29, 34), (9, 10, 30, 32), (9, 10, 35, 37),
1200
(9, 11, 12, 19), (9, 11, 13, 18), (9, 11, 14, 37), (9, 11, 15, 24),
1201
(9, 11, 17, 32), (9, 11, 20, 31), (9, 11, 21, 22), (9, 11, 25, 34),
1202
(9, 11, 26, 27), (9, 12, 13, 27), (9, 12, 14, 32), (9, 12, 16, 28),
1203
(9, 12, 17, 29), (9, 12, 18, 26), (9, 12, 20, 34), (9, 12, 21, 33),
1204
(9, 12, 22, 36), (9, 12, 24, 31), (9, 12, 25, 37), (9, 13, 14, 16),
1205
(9, 13, 15, 37), (9, 13, 17, 34), (9, 13, 20, 29), (9, 13, 24, 36),
1206
(9, 13, 26, 31), (9, 13, 28, 32), (9, 14, 15, 33), (9, 14, 17, 35),
1207
(9, 14, 19, 29), (9, 14, 20, 22), (9, 14, 21, 23), (9, 14, 27, 28),
1208
(9, 14, 30, 34), (9, 15, 18, 21), (9, 15, 19, 27), (9, 15, 28, 34),
1209
(9, 15, 29, 36), (9, 15, 31, 32), (9, 16, 17, 20), (9, 16, 19, 30),
1210
(9, 16, 22, 29), (9, 16, 23, 31), (9, 16, 27, 33), (9, 16, 32, 35),
1211
(9, 16, 36, 37), (9, 17, 19, 36), (9, 17, 21, 27), (9, 17, 23, 24),
1212
(9, 17, 25, 30), (9, 17, 26, 28), (9, 18, 22, 32), (9, 18, 23, 27),
1213
(9, 18, 24, 34), (9, 18, 25, 35), (9, 18, 28, 37), (9, 18, 31, 33),
1214
(9, 19, 21, 24), (9, 19, 22, 35), (9, 19, 23, 25), (9, 20, 21, 25),
1215
(9, 20, 23, 33), (9, 20, 24, 35), (9, 20, 28, 30), (9, 21, 26, 29),
1216
(9, 21, 30, 37), (9, 21, 31, 34), (9, 21, 32, 36), (9, 22, 25, 33),
1217
(9, 22, 26, 30), (9, 22, 31, 37), (9, 23, 26, 35), (9, 23, 28, 29),
1218
(9, 23, 34, 37), (9, 24, 26, 32), (9, 24, 27, 29), (9, 24, 33, 37),
1219
(9, 25, 27, 36), (9, 26, 33, 36), (9, 27, 30, 35), (9, 27, 32, 37),
1220
(9, 28, 31, 35), (9, 29, 32, 33), (9, 30, 31, 36), (9, 33, 34, 35),
1221
(10, 11, 12, 24), (10, 11, 15, 37), (10, 11, 16, 27), (10, 11, 17, 22),
1222
(10, 11, 19, 20), (10, 11, 21, 28), (10, 11, 26, 32), (10, 11, 30, 35),
1223
(10, 11, 31, 33), (10, 12, 13, 20), (10, 12, 14, 19), (10, 12, 16, 25),
1224
(10, 12, 18, 33), (10, 12, 21, 32), (10, 12, 22, 23), (10, 12, 26, 35),
1225
(10, 12, 27, 28), (10, 13, 14, 28), (10, 13, 15, 33), (10, 13, 17, 29),
1226
(10, 13, 18, 30), (10, 13, 19, 27), (10, 13, 21, 35), (10, 13, 22, 34),
1227
(10, 13, 23, 37), (10, 13, 25, 32), (10, 14, 15, 17), (10, 14, 18, 35),
1228
(10, 14, 21, 30), (10, 14, 25, 37), (10, 14, 27, 32), (10, 14, 29, 33),
1229
(10, 15, 16, 34), (10, 15, 18, 36), (10, 15, 20, 30), (10, 15, 21, 23),
1230
(10, 15, 22, 24), (10, 15, 28, 29), (10, 15, 31, 35), (10, 16, 19, 22),
1231
(10, 16, 20, 28), (10, 16, 29, 35), (10, 16, 30, 37), (10, 16, 32, 33),
1232
(10, 17, 18, 21), (10, 17, 20, 31), (10, 17, 23, 30), (10, 17, 24, 32),
1233
(10, 17, 28, 34), (10, 17, 33, 36), (10, 18, 20, 37), (10, 18, 22, 28),
1234
(10, 18, 24, 25), (10, 18, 26, 31), (10, 18, 27, 29), (10, 19, 23, 33),
1235
(10, 19, 24, 28), (10, 19, 25, 35), (10, 19, 26, 36), (10, 19, 32, 34),
1236
(10, 20, 22, 25), (10, 20, 23, 36), (10, 20, 24, 26), (10, 21, 22, 26),
1237
(10, 21, 24, 34), (10, 21, 25, 36), (10, 21, 29, 31), (10, 22, 27, 30),
1238
(10, 22, 32, 35), (10, 22, 33, 37), (10, 23, 26, 34), (10, 23, 27, 31),
1239
(10, 24, 27, 36), (10, 24, 29, 30), (10, 25, 27, 33), (10, 25, 28, 30),
1240
(10, 26, 28, 37), (10, 27, 34, 37), (10, 28, 31, 36), (10, 29, 32, 36),
1241
(10, 30, 33, 34), (10, 31, 32, 37), (10, 34, 35, 36), (11, 12, 13, 25),
1242
(11, 12, 17, 28), (11, 12, 18, 23), (11, 12, 20, 21), (11, 12, 22, 29),
1243
(11, 12, 27, 33), (11, 12, 31, 36), (11, 12, 32, 34), (11, 13, 14, 21),
1244
(11, 13, 15, 20), (11, 13, 17, 26), (11, 13, 19, 34), (11, 13, 22, 33),
1245
(11, 13, 23, 24), (11, 13, 27, 36), (11, 13, 28, 29), (11, 14, 15, 29),
1246
(11, 14, 16, 34), (11, 14, 18, 30), (11, 14, 19, 31), (11, 14, 20, 28),
1247
(11, 14, 22, 36), (11, 14, 23, 35), (11, 14, 26, 33), (11, 15, 16, 18),
1248
(11, 15, 19, 36), (11, 15, 22, 31), (11, 15, 28, 33), (11, 15, 30, 34),
1249
(11, 16, 17, 35), (11, 16, 19, 37), (11, 16, 21, 31), (11, 16, 22, 24),
1250
(11, 16, 23, 25), (11, 16, 29, 30), (11, 16, 32, 36), (11, 17, 20, 23),
1251
(11, 17, 21, 29), (11, 17, 30, 36), (11, 17, 33, 34), (11, 18, 19, 22),
1252
(11, 18, 21, 32), (11, 18, 24, 31), (11, 18, 25, 33), (11, 18, 29, 35),
1253
(11, 18, 34, 37), (11, 19, 23, 29), (11, 19, 25, 26), (11, 19, 27, 32),
1254
(11, 19, 28, 30), (11, 20, 24, 34), (11, 20, 25, 29), (11, 20, 26, 36),
1255
(11, 20, 27, 37), (11, 20, 33, 35), (11, 21, 23, 26), (11, 21, 24, 37),
1256
(11, 21, 25, 27), (11, 22, 23, 27), (11, 22, 25, 35), (11, 22, 26, 37),
1257
(11, 22, 30, 32), (11, 23, 28, 31), (11, 23, 33, 36), (11, 24, 27, 35),
1258
(11, 24, 28, 32), (11, 25, 28, 37), (11, 25, 30, 31), (11, 26, 28, 34),
1259
(11, 26, 29, 31), (11, 29, 32, 37), (11, 30, 33, 37), (11, 31, 34, 35),
1260
(11, 35, 36, 37), (12, 13, 14, 26), (12, 13, 18, 29), (12, 13, 19, 24),
1261
(12, 13, 21, 22), (12, 13, 23, 30), (12, 13, 28, 34), (12, 13, 32, 37),
1262
(12, 13, 33, 35), (12, 14, 15, 22), (12, 14, 16, 21), (12, 14, 18, 27),
1263
(12, 14, 20, 35), (12, 14, 23, 34), (12, 14, 24, 25), (12, 14, 28, 37),
1264
(12, 14, 29, 30), (12, 15, 16, 30), (12, 15, 17, 35), (12, 15, 19, 31),
1265
(12, 15, 20, 32), (12, 15, 21, 29), (12, 15, 23, 37), (12, 15, 24, 36),
1266
(12, 15, 27, 34), (12, 16, 17, 19), (12, 16, 20, 37), (12, 16, 23, 32),
1267
(12, 16, 29, 34), (12, 16, 31, 35), (12, 17, 18, 36), (12, 17, 22, 32),
1268
(12, 17, 23, 25), (12, 17, 24, 26), (12, 17, 30, 31), (12, 17, 33, 37),
1269
(12, 18, 21, 24), (12, 18, 22, 30), (12, 18, 31, 37), (12, 18, 34, 35),
1270
(12, 19, 20, 23), (12, 19, 22, 33), (12, 19, 25, 32), (12, 19, 26, 34),
1271
(12, 19, 30, 36), (12, 20, 24, 30), (12, 20, 26, 27), (12, 20, 28, 33),
1272
(12, 20, 29, 31), (12, 21, 25, 35), (12, 21, 26, 30), (12, 21, 27, 37),
1273
(12, 21, 34, 36), (12, 22, 24, 27), (12, 22, 26, 28), (12, 23, 24, 28),
1274
(12, 23, 26, 36), (12, 23, 31, 33), (12, 24, 29, 32), (12, 24, 34, 37),
1275
(12, 25, 28, 36), (12, 25, 29, 33), (12, 26, 31, 32), (12, 27, 29, 35),
1276
(12, 27, 30, 32), (12, 32, 35, 36), (13, 14, 15, 27), (13, 14, 19, 30),
1277
(13, 14, 20, 25), (13, 14, 22, 23), (13, 14, 24, 31), (13, 14, 29, 35),
1278
(13, 14, 34, 36), (13, 15, 16, 23), (13, 15, 17, 22), (13, 15, 19, 28),
1279
(13, 15, 21, 36), (13, 15, 24, 35), (13, 15, 25, 26), (13, 15, 30, 31),
1280
(13, 16, 17, 31), (13, 16, 18, 36), (13, 16, 20, 32), (13, 16, 21, 33),
1281
(13, 16, 22, 30), (13, 16, 25, 37), (13, 16, 28, 35), (13, 17, 18, 20),
1282
(13, 17, 24, 33), (13, 17, 30, 35), (13, 17, 32, 36), (13, 18, 19, 37),
1283
(13, 18, 23, 33), (13, 18, 24, 26), (13, 18, 25, 27), (13, 18, 31, 32),
1284
(13, 19, 22, 25), (13, 19, 23, 31), (13, 19, 35, 36), (13, 20, 21, 24),
1285
(13, 20, 23, 34), (13, 20, 26, 33), (13, 20, 27, 35), (13, 20, 31, 37),
1286
(13, 21, 25, 31), (13, 21, 27, 28), (13, 21, 29, 34), (13, 21, 30, 32),
1287
(13, 22, 26, 36), (13, 22, 27, 31), (13, 22, 35, 37), (13, 23, 25, 28),
1288
(13, 23, 27, 29), (13, 24, 25, 29), (13, 24, 27, 37), (13, 24, 32, 34),
1289
(13, 25, 30, 33), (13, 26, 29, 37), (13, 26, 30, 34), (13, 27, 32, 33),
1290
(13, 28, 30, 36), (13, 28, 31, 33), (13, 33, 36, 37), (14, 15, 16, 28),
1291
(14, 15, 20, 31), (14, 15, 21, 26), (14, 15, 23, 24), (14, 15, 25, 32),
1292
(14, 15, 30, 36), (14, 15, 35, 37), (14, 16, 17, 24), (14, 16, 18, 23),
1293
(14, 16, 20, 29), (14, 16, 22, 37), (14, 16, 25, 36), (14, 16, 26, 27),
1294
(14, 16, 31, 32), (14, 17, 18, 32), (14, 17, 19, 37), (14, 17, 21, 33),
1295
(14, 17, 22, 34), (14, 17, 23, 31), (14, 17, 29, 36), (14, 18, 19, 21),
1296
(14, 18, 25, 34), (14, 18, 31, 36), (14, 18, 33, 37), (14, 19, 24, 34),
1297
(14, 19, 25, 27), (14, 19, 26, 28), (14, 19, 32, 33), (14, 20, 23, 26),
1298
(14, 20, 24, 32), (14, 20, 36, 37), (14, 21, 22, 25), (14, 21, 24, 35),
1299
(14, 21, 27, 34), (14, 21, 28, 36), (14, 22, 26, 32), (14, 22, 28, 29),
1300
(14, 22, 30, 35), (14, 22, 31, 33), (14, 23, 27, 37), (14, 23, 28, 32),
1301
(14, 24, 26, 29), (14, 24, 28, 30), (14, 25, 26, 30), (14, 25, 33, 35),
1302
(14, 26, 31, 34), (14, 27, 31, 35), (14, 28, 33, 34), (14, 29, 31, 37),
1303
(14, 29, 32, 34), (15, 16, 17, 29), (15, 16, 21, 32), (15, 16, 22, 27),
1304
(15, 16, 24, 25), (15, 16, 26, 33), (15, 16, 31, 37), (15, 17, 18, 25),
1305
(15, 17, 19, 24), (15, 17, 21, 30), (15, 17, 26, 37), (15, 17, 27, 28),
1306
(15, 17, 32, 33), (15, 18, 19, 33), (15, 18, 22, 34), (15, 18, 23, 35),
1307
(15, 18, 24, 32), (15, 18, 30, 37), (15, 19, 20, 22), (15, 19, 26, 35),
1308
(15, 19, 32, 37), (15, 20, 25, 35), (15, 20, 26, 28), (15, 20, 27, 29),
1309
(15, 20, 33, 34), (15, 21, 24, 27), (15, 21, 25, 33), (15, 22, 23, 26),
1310
(15, 22, 25, 36), (15, 22, 28, 35), (15, 22, 29, 37), (15, 23, 27, 33),
1311
(15, 23, 29, 30), (15, 23, 31, 36), (15, 23, 32, 34), (15, 24, 29, 33),
1312
(15, 25, 27, 30), (15, 25, 29, 31), (15, 26, 27, 31), (15, 26, 34, 36),
1313
(15, 27, 32, 35), (15, 28, 32, 36), (15, 29, 34, 35), (15, 30, 33, 35),
1314
(16, 17, 18, 30), (16, 17, 22, 33), (16, 17, 23, 28), (16, 17, 25, 26),
1315
(16, 17, 27, 34), (16, 18, 19, 26), (16, 18, 20, 25), (16, 18, 22, 31),
1316
(16, 18, 28, 29), (16, 18, 33, 34), (16, 19, 20, 34), (16, 19, 23, 35),
1317
(16, 19, 24, 36), (16, 19, 25, 33), (16, 20, 21, 23), (16, 20, 27, 36),
1318
(16, 21, 26, 36), (16, 21, 27, 29), (16, 21, 28, 30), (16, 21, 34, 35),
1319
(16, 22, 25, 28), (16, 22, 26, 34), (16, 23, 24, 27), (16, 23, 26, 37),
1320
(16, 23, 29, 36), (16, 24, 28, 34), (16, 24, 30, 31), (16, 24, 32, 37),
1321
(16, 24, 33, 35), (16, 25, 30, 34), (16, 26, 28, 31), (16, 26, 30, 32),
1322
(16, 27, 28, 32), (16, 27, 35, 37), (16, 28, 33, 36), (16, 29, 33, 37),
1323
(16, 30, 35, 36), (16, 31, 34, 36), (17, 18, 19, 31), (17, 18, 23, 34),
1324
(17, 18, 24, 29), (17, 18, 26, 27), (17, 18, 28, 35), (17, 19, 20, 27),
1325
(17, 19, 21, 26), (17, 19, 23, 32), (17, 19, 29, 30), (17, 19, 34, 35),
1326
(17, 20, 21, 35), (17, 20, 24, 36), (17, 20, 25, 37), (17, 20, 26, 34),
1327
(17, 21, 22, 24), (17, 21, 28, 37), (17, 22, 27, 37), (17, 22, 28, 30),
1328
(17, 22, 29, 31), (17, 22, 35, 36), (17, 23, 26, 29), (17, 23, 27, 35),
1329
(17, 24, 25, 28), (17, 24, 30, 37), (17, 25, 29, 35), (17, 25, 31, 32),
1330
(17, 25, 34, 36), (17, 26, 31, 35), (17, 27, 29, 32), (17, 27, 31, 33),
1331
(17, 28, 29, 33), (17, 29, 34, 37), (17, 31, 36, 37), (17, 32, 35, 37),
1332
(18, 19, 20, 32), (18, 19, 24, 35), (18, 19, 25, 30), (18, 19, 27, 28),
1333
(18, 19, 29, 36), (18, 20, 21, 28), (18, 20, 22, 27), (18, 20, 24, 33),
1334
(18, 20, 30, 31), (18, 20, 35, 36), (18, 21, 22, 36), (18, 21, 25, 37),
1335
(18, 21, 27, 35), (18, 22, 23, 25), (18, 23, 29, 31), (18, 23, 30, 32),
1336
(18, 23, 36, 37), (18, 24, 27, 30), (18, 24, 28, 36), (18, 25, 26, 29),
1337
(18, 26, 30, 36), (18, 26, 32, 33), (18, 26, 35, 37), (18, 27, 32, 36),
1338
(18, 28, 30, 33), (18, 28, 32, 34), (18, 29, 30, 34), (19, 20, 21, 33),
1339
(19, 20, 25, 36), (19, 20, 26, 31), (19, 20, 28, 29), (19, 20, 30, 37),
1340
(19, 21, 22, 29), (19, 21, 23, 28), (19, 21, 25, 34), (19, 21, 31, 32),
1341
(19, 21, 36, 37), (19, 22, 23, 37), (19, 22, 28, 36), (19, 23, 24, 26),
1342
(19, 24, 30, 32), (19, 24, 31, 33), (19, 25, 28, 31), (19, 25, 29, 37),
1343
(19, 26, 27, 30), (19, 27, 31, 37), (19, 27, 33, 34), (19, 28, 33, 37),
1344
(19, 29, 31, 34), (19, 29, 33, 35), (19, 30, 31, 35), (20, 21, 22, 34),
1345
(20, 21, 26, 37), (20, 21, 27, 32), (20, 21, 29, 30), (20, 22, 23, 30),
1346
(20, 22, 24, 29), (20, 22, 26, 35), (20, 22, 32, 33), (20, 23, 29, 37),
1347
(20, 24, 25, 27), (20, 25, 31, 33), (20, 25, 32, 34), (20, 26, 29, 32),
1348
(20, 27, 28, 31), (20, 28, 34, 35), (20, 30, 32, 35), (20, 30, 34, 36),
1349
(20, 31, 32, 36), (21, 22, 23, 35), (21, 22, 28, 33), (21, 22, 30, 31),
1350
(21, 23, 24, 31), (21, 23, 25, 30), (21, 23, 27, 36), (21, 23, 33, 34),
1351
(21, 25, 26, 28), (21, 26, 32, 34), (21, 26, 33, 35), (21, 27, 30, 33),
1352
(21, 28, 29, 32), (21, 29, 35, 36), (21, 31, 33, 36), (21, 31, 35, 37),
1353
(21, 32, 33, 37), (22, 23, 24, 36), (22, 23, 29, 34), (22, 23, 31, 32),
1354
(22, 24, 25, 32), (22, 24, 26, 31), (22, 24, 28, 37), (22, 24, 34, 35),
1355
(22, 26, 27, 29), (22, 27, 33, 35), (22, 27, 34, 36), (22, 28, 31, 34),
1356
(22, 29, 30, 33), (22, 30, 36, 37), (22, 32, 34, 37), (23, 24, 25, 37),
1357
(23, 24, 30, 35), (23, 24, 32, 33), (23, 25, 26, 33), (23, 25, 27, 32),
1358
(23, 25, 35, 36), (23, 27, 28, 30), (23, 28, 34, 36), (23, 28, 35, 37),
1359
(23, 29, 32, 35), (23, 30, 31, 34), (24, 25, 31, 36), (24, 25, 33, 34),
1360
(24, 26, 27, 34), (24, 26, 28, 33), (24, 26, 36, 37), (24, 28, 29, 31),
1361
(24, 29, 35, 37), (24, 30, 33, 36), (24, 31, 32, 35), (25, 26, 32, 37),
1362
(25, 26, 34, 35), (25, 27, 28, 35), (25, 27, 29, 34), (25, 29, 30, 32),
1363
(25, 31, 34, 37), (25, 32, 33, 36), (26, 27, 35, 36), (26, 28, 29, 36),
1364
(26, 28, 30, 35), (26, 30, 31, 33), (26, 33, 34, 37), (27, 28, 36, 37),
1365
(27, 29, 30, 37), (27, 29, 31, 36), (27, 31, 32, 34), (28, 30, 32, 37),
1366
(28, 32, 33, 35), (29, 33, 34, 36), (30, 34, 35, 37))
1367
1368