-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsolver_H4lv1v2ks1.m
456 lines (344 loc) · 44.8 KB
/
solver_H4lv1v2ks1.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
% Generated using GBSolver generator Copyright Martin Bujnak,
% Zuzana Kukelova, Tomas Pajdla CTU Prague 2008.
%
% Please refer to the following paper, when using this code :
% Kukelova Z., Bujnak M., Pajdla T., Automatic Generator of Minimal Problem Solvers,
% ECCV 2008, Marseille, France, October 12-18, 2008
function [u1, u2, u3, l1, l2, k, s, v1, v2, v3] = solver_H4lv1v2ks1(x11, x1p1, x21, x2p1, x31, x3p1, x41, x4p1)
v1 = 10000;
v2 = 10000;
v3 = 10000;
l1 = 10000;
l2 = 10000;
k = 10000;
u1 = 10000;
u2 = 10000;
u3 = 10000;
s = 10000;
% precalculate polynomial equations coefficients
c(1) = x11(1)*x1p1(2);
c(2) = -x11(2)*x1p1(2);
c(3) = x11(1)*x1p1(1);
c(4) = -x11(2)*x1p1(1);
c(5) = x11(1)*x1p1(1)^2 + x11(1)*x1p1(2)^2;
c(6) = - x11(2)*x1p1(1)^2 - x11(2)*x1p1(2)^2;
c(7) = x11(1);
c(8) = -x11(2);
c(9) = x11(1)*x1p1(2) - x11(2)*x1p1(1);
c(10) = x21(1)*x2p1(2);
c(11) = -x21(2)*x2p1(2);
c(12) = x21(1)*x2p1(1);
c(13) = -x21(2)*x2p1(1);
c(14) = x21(1)*x2p1(1)^2 + x21(1)*x2p1(2)^2;
c(15) = - x21(2)*x2p1(1)^2 - x21(2)*x2p1(2)^2;
c(16) = x21(1);
c(17) = -x21(2);
c(18) = x21(1)*x2p1(2) - x21(2)*x2p1(1);
c(19) = x11(1)^2*x1p1(2) + x11(2)^2*x1p1(2);
c(20) = x11(1)^2*x1p1(1) + x11(2)^2*x1p1(1);
c(21) = x11(1)^2*x1p1(1)^2 + x11(1)^2*x1p1(2)^2 + x11(2)^2*x1p1(1)^2 + x11(2)^2*x1p1(2)^2;
c(22) = -x11(1)*x1p1(2);
c(23) = -x11(1)*x1p1(1);
c(24) = x1p1(2);
c(25) = x1p1(1);
c(26) = - x11(1)*x1p1(1)^2 - x11(1)*x1p1(2)^2;
c(27) = x11(1)^2 + x11(2)^2 + x1p1(1)^2 + x1p1(2)^2;
c(28) = -x11(1);
c(29) = 1;
c(30) = x11(1)^2*x1p1(1) - x11(1)*x1p1(1)^2 - x11(1)*x1p1(2)^2 + x11(2)^2*x1p1(1);
c(31) = x1p1(1) - x11(1);
c(32) = x21(1)^2*x2p1(2) + x21(2)^2*x2p1(2);
c(33) = x21(1)^2*x2p1(1) + x21(2)^2*x2p1(1);
c(34) = x21(1)^2*x2p1(1)^2 + x21(1)^2*x2p1(2)^2 + x21(2)^2*x2p1(1)^2 + x21(2)^2*x2p1(2)^2;
c(35) = -x21(1)*x2p1(2);
c(36) = -x21(1)*x2p1(1);
c(37) = x2p1(2);
c(38) = x2p1(1);
c(39) = - x21(1)*x2p1(1)^2 - x21(1)*x2p1(2)^2;
c(40) = x21(1)^2 + x21(2)^2 + x2p1(1)^2 + x2p1(2)^2;
c(41) = -x21(1);
c(42) = 1;
c(43) = x21(1)^2*x2p1(1) - x21(1)*x2p1(1)^2 - x21(1)*x2p1(2)^2 + x21(2)^2*x2p1(1);
c(44) = x2p1(1) - x21(1);
c(45) = 1;
c(46) = 1;
c(47) = 1;
c(48) = x31(1)*x3p1(2);
c(49) = -x31(2)*x3p1(2);
c(50) = x31(1)*x3p1(1);
c(51) = -x31(2)*x3p1(1);
c(52) = x31(1)*x3p1(1)^2 + x31(1)*x3p1(2)^2;
c(53) = - x31(2)*x3p1(1)^2 - x31(2)*x3p1(2)^2;
c(54) = x31(1);
c(55) = -x31(2);
c(56) = x31(1)*x3p1(2) - x31(2)*x3p1(1);
c(57) = x31(1)^2*x3p1(2) + x31(2)^2*x3p1(2);
c(58) = x31(1)^2*x3p1(1) + x31(2)^2*x3p1(1);
c(59) = x31(1)^2*x3p1(1)^2 + x31(1)^2*x3p1(2)^2 + x31(2)^2*x3p1(1)^2 + x31(2)^2*x3p1(2)^2;
c(60) = -x31(1)*x3p1(2);
c(61) = -x31(1)*x3p1(1);
c(62) = x3p1(2);
c(63) = x3p1(1);
c(64) = - x31(1)*x3p1(1)^2 - x31(1)*x3p1(2)^2;
c(65) = x31(1)^2 + x31(2)^2 + x3p1(1)^2 + x3p1(2)^2;
c(66) = -x31(1);
c(67) = 1;
c(68) = x31(1)^2*x3p1(1) - x31(1)*x3p1(1)^2 - x31(1)*x3p1(2)^2 + x31(2)^2*x3p1(1);
c(69) = x3p1(1) - x31(1);
c(70) = x41(1)*x4p1(2);
c(71) = -x41(2)*x4p1(2);
c(72) = x41(1)*x4p1(1);
c(73) = -x41(2)*x4p1(1);
c(74) = x41(1)*x4p1(1)^2 + x41(1)*x4p1(2)^2;
c(75) = - x41(2)*x4p1(1)^2 - x41(2)*x4p1(2)^2;
c(76) = x41(1);
c(77) = -x41(2);
c(78) = x41(1)*x4p1(2) - x41(2)*x4p1(1);
c(79) = x41(1)^2*x4p1(2) + x41(2)^2*x4p1(2);
c(80) = x41(1)^2*x4p1(1) + x41(2)^2*x4p1(1);
c(81) = -x41(1)*x4p1(2);
c(82) = -x41(1)*x4p1(1);
c(83) = x4p1(2);
c(84) = x4p1(1);
c(85) = - x41(1)*x4p1(1)^2 - x41(1)*x4p1(2)^2;
c(86) = x41(1)^2 + x41(2)^2 + x4p1(1)^2 + x4p1(2)^2;
c(87) = x41(1)^2*x4p1(1)^2 + x41(1)^2*x4p1(2)^2 + x41(2)^2*x4p1(1)^2 + x41(2)^2*x4p1(2)^2;
c(88) = -x41(1);
c(89) = 1;
c(90) = x41(1)^2*x4p1(1) - x41(1)*x4p1(1)^2 - x41(1)*x4p1(2)^2 + x41(2)^2*x4p1(1);
c(91) = x4p1(1) - x41(1);
c(92) = 1;
c(93) = 1;
c(94) = 1;
M = zeros(730, 734);
ci = [182689, 184880, 185611, 194372, 195833, 196564, 199485, 200216, 200947, 215548, 237449, 238180, 238911, 239642, 242563, 243294, 244025, 245486, 292937, 293668, 294399, 295130, 298051, 298782, 299513, 364053, 364784, 365515, 366246, 369167, 369898, 370629, 375740, 376471, 377202, 385233, 385964, 386695, 391806, 397647, 398378, 399109, 399840, 400571, 404222, 435613, 436344, 437075, 437806, 438537, 442188, 481023, 481754, 482485, 486136, 490517, 494898, 524861];
M(ci) = c(1);
ci = [130859, 133050, 133781, 142542, 144003, 144734, 147655, 148386, 149117, 161528, 208249, 208980, 209711, 210442, 214093, 214824, 215555, 217016, 271037, 271768, 272499, 273230, 276151, 276882, 277613, 329743, 330474, 331205, 331936, 334857, 335588, 336319, 341430, 342161, 342892, 350193, 350924, 351655, 356766, 385237, 385968, 386699, 387430, 388161, 391812, 423203, 423934, 424665, 425396, 426127, 429778, 463503, 464234, 464965, 468616, 472997, 477378, 494899, 509500, 520481];
M(ci) = c(2);
ci = [181229, 183420, 184151, 192182, 193643, 194374, 197295, 198026, 198757, 212628, 235259, 235990, 236721, 237452, 240373, 241104, 241835, 244756, 290747, 291478, 292209, 292940, 295861, 296592, 297323, 361863, 362594, 363325, 364056, 366977, 367708, 368439, 373550, 374281, 375012, 382313, 383044, 383775, 391076, 394727, 395458, 396189, 396920, 399841, 403492, 432693, 433424, 434155, 434886, 437807, 441458, 478833, 479564, 480295, 485406, 489787, 494168, 524131];
M(ci) = c(3);
ci = [129399, 131590, 132321, 140352, 141813, 142544, 145465, 146196, 146927, 159338, 206059, 206790, 207521, 208252, 211173, 211904, 212635, 216286, 268847, 269578, 270309, 271040, 273961, 274692, 275423, 327553, 328284, 329015, 329746, 332667, 333398, 334129, 339240, 339971, 340702, 348003, 348734, 349465, 356036, 382317, 383048, 383779, 384510, 387431, 391082, 420283, 421014, 421745, 422476, 425397, 429048, 461313, 462044, 462775, 467886, 472267, 476648, 494169, 508770, 519751];
M(ci) = c(4);
ci = [185609, 186340, 187071, 198752, 200213, 200944, 201675, 202406, 203137, 219198, 241829, 242560, 243291, 244022, 246213, 246944, 247675, 297317, 298048, 298779, 299510, 300241, 300972, 368433, 369164, 369895, 370626, 371357, 372088, 372819, 377930, 378661, 379392, 388883, 389614, 390345, 392536, 401297, 402028, 402759, 403490, 404221, 439263, 439994, 440725, 441456, 442187, 483213, 483944, 484675, 486866, 491247, 495628, 525591];
M(ci) = c(5);
ci = [133779, 134510, 135241, 146922, 148383, 149114, 149845, 150576, 151307, 165178, 212629, 214090, 214821, 215552, 217743, 218474, 219205, 220666, 275417, 276148, 276879, 277610, 278341, 279072, 279803, 334123, 334854, 335585, 336316, 337047, 337778, 338509, 343620, 344351, 345082, 353843, 354574, 355305, 357496, 388887, 389618, 390349, 391080, 391811, 392542, 426853, 427584, 428315, 429046, 429777, 430508, 465693, 466424, 467155, 469346, 473727, 478108, 495629, 510230, 521211];
M(ci) = c(6);
ci = [369569, 371030, 371761, 374682, 376143, 376874, 377605, 378336, 379067, 390018, 395859, 397320, 398051, 398782, 400973, 401704, 402435, 403896, 433827, 435288, 436019, 436750, 438941, 439672, 440403, 480123, 480854, 481585, 482316, 483047, 483778, 484509, 487430, 488161, 488892, 491813, 492544, 493275, 495466, 496197, 521903, 522634, 523365, 525556, 534351];
M(ci) = c(7);
ci = [335259, 336720, 337451, 340372, 341833, 342564, 343295, 344026, 344757, 354978, 383449, 384910, 385641, 386372, 388563, 389294, 390025, 391486, 421417, 422878, 423609, 424340, 426531, 427262, 427993, 462603, 463334, 464065, 464796, 465527, 466258, 466989, 469910, 470641, 471372, 474293, 475024, 475755, 477946, 491817, 492548, 493279, 494010, 494741, 495472, 507883, 508616, 509347, 510078, 517523, 518254, 518985, 521176, 533621];
M(ci) = c(8);
ci = [452059, 452790, 453521, 455712, 457173, 457904, 458635, 459366, 460097, 466668, 479809, 480540, 481271, 482002, 482733, 483464, 484195, 485656, 498067, 498798, 499529, 500260, 500991, 501722, 502453, 512243, 512974, 513705, 514436, 515167, 515898, 516629, 517363, 518094, 518825, 521016, 521747, 522478, 523209, 523940, 524671, 525402, 526133, 526864, 527595, 528326, 529057, 529788, 530663, 531394, 532125, 532856, 533588, 534319, 535050, 535811];
M(ci) = c(9);
ci = [52561, 73732, 88334, 90525, 91256, 92717, 182714, 184905, 185636, 194397, 195858, 196589, 199510, 200241, 200972, 210463, 214114, 214845, 215576, 225067, 225798, 226529, 227990, 231641, 237482, 238213, 238944, 239675, 242596, 243327, 244058, 245519, 250630, 251361, 292974, 293705, 294436, 295167, 298088, 298819, 299550, 303931, 364079, 364810, 365541, 366272, 369193, 369924, 370655, 375766, 376497, 377228, 380879, 385260, 385991, 386722, 388183, 391834, 394025, 397676, 398407, 399138, 399869, 400600, 404251, 435643, 436374, 437105, 437836, 438567, 442218, 481031, 481762, 482493, 486144, 490525, 494906, 524862];
M(ci) = c(10);
ci = [18981, 37232, 69354, 73005, 73736, 75197, 130884, 133075, 133806, 142567, 144028, 144759, 147680, 148411, 149142, 157173, 160094, 160825, 161556, 170317, 171048, 171779, 173240, 176891, 208282, 209013, 209744, 210475, 214126, 214857, 215588, 217049, 225080, 225811, 226542, 228003, 271074, 271805, 272536, 273267, 276188, 276919, 277650, 283491, 284222, 284954, 285685, 287876, 329769, 330500, 331231, 331962, 334883, 335614, 336345, 341456, 342187, 342918, 346569, 350220, 350951, 351682, 353143, 356794, 358985, 385266, 385997, 386728, 387459, 388190, 391841, 394032, 423233, 423964, 424695, 425426, 426157, 429808, 431999, 463511, 464242, 464973, 468624, 473005, 477386, 494907, 509508, 520482];
M(ci) = c(11);
ci = [51101, 70812, 71543, 86874, 89065, 89796, 91987, 181254, 183445, 184176, 192207, 193668, 194399, 197320, 198051, 198782, 208273, 211194, 211925, 212656, 222147, 222878, 223609, 227260, 230911, 235292, 236023, 236754, 237485, 240406, 241137, 241868, 244789, 248440, 249171, 249902, 252093, 290784, 291515, 292246, 292977, 295898, 296629, 297360, 301741, 302472, 303204, 304666, 361889, 362620, 363351, 364082, 367003, 367734, 368465, 373576, 374307, 375038, 380149, 382340, 383071, 383802, 387453, 391104, 393295, 394756, 395487, 396218, 396949, 399870, 403521, 432723, 433454, 434185, 434916, 437837, 441488, 478841, 479572, 480303, 485414, 489795, 494176, 524132];
M(ci) = c(12);
ci = [17521, 35042, 35773, 67894, 70085, 70816, 74467, 129424, 131615, 132346, 140377, 141838, 142569, 145490, 146221, 146952, 156443, 157904, 158635, 159366, 168127, 168858, 169589, 172510, 176161, 206092, 206823, 207554, 208285, 211206, 211937, 212668, 216319, 222160, 222891, 223622, 227273, 268884, 269615, 270346, 271077, 273998, 274729, 275460, 280571, 281302, 282033, 282764, 284955, 287146, 327579, 328310, 329041, 329772, 332693, 333424, 334155, 339266, 339997, 340728, 345839, 348030, 348761, 349492, 352413, 356064, 358255, 382346, 383077, 383808, 384539, 387460, 391111, 393302, 420313, 421044, 421775, 422506, 425427, 429078, 431269, 461321, 462052, 462783, 467894, 472275, 476656, 494177, 508778, 519752];
M(ci) = c(13);
ci = [54021, 76652, 91254, 93445, 94176, 185634, 186365, 187096, 198777, 200238, 200969, 201700, 202431, 203162, 215573, 217764, 218495, 219226, 228717, 229448, 230179, 231640, 232371, 241862, 242593, 243324, 244055, 246246, 246977, 247708, 252820, 297354, 298085, 298816, 299547, 300278, 301009, 304664, 368459, 369190, 369921, 370652, 371383, 372114, 372845, 377956, 378687, 379418, 381609, 388910, 389641, 390372, 391833, 392564, 401326, 402057, 402788, 403519, 404250, 439293, 440024, 440755, 441486, 442217, 483221, 483952, 484683, 486874, 491255, 495636, 525592];
M(ci) = c(14);
ci = [20441, 40152, 73734, 75925, 76656, 78117, 133804, 134535, 135266, 146947, 148408, 149139, 149870, 150601, 151332, 161553, 163744, 164475, 165206, 173967, 174698, 175429, 176890, 177621, 212662, 214123, 214854, 215585, 217776, 218507, 219238, 220699, 228730, 229461, 230192, 231653, 275454, 276185, 276916, 277647, 278378, 279109, 279840, 286411, 287144, 287875, 288606, 334149, 334880, 335611, 336342, 337073, 337804, 338535, 343646, 344377, 345108, 347299, 353870, 354601, 355332, 356793, 357524, 388916, 389647, 390378, 391109, 391840, 392571, 426883, 427614, 428345, 429076, 429807, 430538, 465701, 466432, 467163, 469354, 473735, 478116, 495637, 510238, 521212];
M(ci) = c(15);
ci = [202211, 229222, 229953, 251124, 252585, 369594, 371055, 371786, 374707, 376168, 376899, 377630, 378361, 379092, 386393, 388584, 389315, 390046, 393700, 395892, 397353, 398084, 398815, 401006, 401737, 402468, 403929, 433864, 435325, 436056, 436787, 438978, 439709, 440440, 480149, 480880, 481611, 482342, 483073, 483804, 484535, 487456, 488187, 488918, 491109, 491840, 492571, 493302, 494763, 495494, 496226, 521911, 522642, 523373, 525564, 534352];
M(ci) = c(16);
ci = [150381, 174472, 175203, 225574, 228495, 229226, 231417, 335284, 336745, 337476, 340397, 341858, 342589, 343320, 344051, 344782, 351353, 353544, 354275, 355006, 358660, 383482, 384943, 385674, 386405, 388596, 389327, 390058, 391519, 393713, 421454, 422915, 423646, 424377, 426568, 427299, 428030, 430954, 431685, 462629, 463360, 464091, 464822, 465553, 466284, 467015, 469936, 470667, 471398, 473589, 474320, 475051, 475782, 477243, 477974, 491846, 492577, 493308, 494039, 494770, 495501, 507913, 508646, 509377, 510108, 517531, 518262, 518993, 521184, 533622];
M(ci) = c(17);
ci = [324121, 343832, 344563, 375954, 377415, 378146, 380337, 452084, 452815, 453546, 455737, 457198, 457929, 458660, 459391, 460122, 464503, 465234, 465965, 466696, 469617, 470348, 471079, 472540, 473271, 479842, 480573, 481304, 482035, 482766, 483497, 484228, 485689, 487150, 487881, 488612, 490073, 498104, 498835, 499566, 500297, 501028, 501759, 502490, 503221, 503952, 504683, 505414, 506145, 506876, 512269, 513000, 513731, 514462, 515193, 515924, 516655, 517390, 518121, 518852, 520313, 521044, 521776, 522507, 523238, 523969, 524700, 525431, 526163, 526894, 527625, 528356, 529087, 529818, 530671, 531402, 532133, 532864, 533596, 534327, 535058, 535812];
M(ci) = c(18);
ci = [18258, 18989, 26290, 28481, 38702, 41623, 59144, 61335, 64986, 74477, 75208, 78129, 130197, 130928, 133119, 133850, 147721, 148452, 149183, 160134, 160865, 161596, 163057, 166708, 176929, 214160, 214891, 215622, 216353, 217084, 220735, 231686, 276217, 276948, 277679, 287900, 334910, 335641, 336372, 346593, 356814, 391855, 429816, 468653];
M(ci) = c(19);
ci = [16798, 17529, 24830, 27751, 37972, 40893, 56954, 59145, 62796, 72287, 74478, 77399, 128737, 129468, 131659, 132390, 145531, 146262, 146993, 157944, 158675, 159406, 162327, 165978, 176199, 211240, 211971, 212702, 213433, 216354, 220005, 230956, 274027, 274758, 275489, 287170, 332720, 333451, 334182, 345863, 356084, 391125, 429086, 467923];
M(ci) = c(20);
ci = [19718, 20449, 28480, 29211, 41622, 42353, 62794, 64985, 77397, 78128, 78859, 133117, 133848, 134579, 135310, 149911, 150642, 151373, 163784, 164515, 165246, 166707, 167438, 177659, 217810, 218541, 219272, 220003, 220734, 221465, 232416, 278407, 279138, 279869, 288630, 337100, 337831, 338562, 347323, 357544, 392585, 430546, 469383];
M(ci) = c(21);
ci = [264268, 264999, 273030, 277411, 285442, 287633, 292744, 294935, 299316, 407597, 408328, 410519, 411250, 415631, 416362, 417093, 422934, 423665, 424396, 425857, 429508, 431699, 435350, 436081, 436812, 437543, 438274, 441925, 444117, 444848, 499160, 499891, 500622, 506463, 509384, 529243];
M(ci) = c(22);
ci = [262808, 263539, 270840, 275221, 284712, 286903, 290554, 292745, 297126, 302967, 304429, 406137, 406868, 409059, 409790, 413441, 414172, 414903, 420014, 420745, 421476, 425127, 428778, 430969, 432430, 433161, 433892, 434623, 437544, 441195, 442657, 443388, 496970, 497701, 498432, 505733, 508654, 528513];
M(ci) = c(23);
ci = [147468, 148199, 156960, 161341, 173022, 176673, 208064, 210255, 215366, 227047, 227778, 231429, 330217, 330948, 334599, 335330, 341171, 341902, 342633, 349934, 350665, 351396, 352857, 356508, 358699, 384980, 385711, 386442, 387173, 387904, 391555, 393746, 422947, 423678, 424409, 431710, 463390, 464121, 464852, 472883, 477264, 494785, 509386, 520483];
M(ci) = c(24);
ci = [145278, 146009, 156230, 159151, 172292, 175943, 205874, 208065, 212446, 224127, 227048, 230699, 328027, 328758, 332409, 333140, 338981, 339712, 340443, 347744, 348475, 349206, 352127, 355778, 357969, 382060, 382791, 383522, 384253, 387174, 390825, 393016, 420027, 420758, 421489, 430980, 461200, 461931, 462662, 472153, 476534, 494055, 508656, 519753];
M(ci) = c(25);
ci = [265728, 266459, 277410, 279601, 287632, 288363, 297124, 299315, 304427, 410517, 411248, 411979, 412710, 417821, 418552, 419283, 426584, 427315, 428046, 429507, 430238, 439000, 439731, 440462, 441193, 441924, 445577, 446308, 501350, 502081, 502812, 507193, 510114, 529973];
M(ci) = c(26);
ci = [149658, 150389, 161340, 164991, 176672, 177403, 212444, 215365, 219016, 230697, 231428, 232159, 334597, 335328, 336789, 337520, 343361, 344092, 344823, 353584, 354315, 355046, 356507, 357238, 388630, 389361, 390092, 390823, 391554, 392285, 426597, 427328, 428059, 465580, 466311, 467042, 473613, 477994, 495515, 510116, 521213];
M(ci) = c(27);
ci = [417568, 418299, 424140, 427791, 431442, 433634, 436555, 440206, 498847, 499578, 501039, 501770, 503231, 503962, 504693, 507614, 509077, 509808, 526170, 526901, 527632, 535083];
M(ci) = c(28);
ci = [343108, 343839, 351140, 354791, 358442, 383264, 386185, 389836, 392757, 393488, 463077, 463808, 465269, 466000, 469651, 470382, 471113, 474034, 474765, 475496, 476957, 477688, 491560, 492291, 493022, 493753, 494484, 495215, 507627, 517410, 518141, 518872, 533623];
M(ci) = c(29);
ci = [323398, 324129, 335810, 338001, 346032, 346763, 367934, 370125, 372316, 379617, 380348, 381079, 451397, 452128, 452859, 453590, 458701, 459432, 460163, 465274, 466005, 466736, 468197, 468928, 473309, 482800, 483531, 484262, 484993, 485724, 486455, 490836, 501057, 501788, 502519, 506900, 515220, 515951, 516682, 521064, 525445, 529826, 532893];
M(ci) = c(30);
ci = [458448, 459179, 464290, 466481, 472322, 473053, 479624, 481815, 484006, 489117, 489848, 490579, 512717, 513448, 514909, 515640, 517104, 517835, 518566, 520027, 520758, 521490, 522221, 522952, 523683, 524414, 525145, 525877, 526608, 527339, 530550, 531281, 532012, 533474, 534205, 534936, 535813];
M(ci) = c(31);
ci = [16080, 18271, 19002, 26303, 28494, 36525, 37256, 38718, 41639, 59160, 59891, 60622, 61353, 63544, 65005, 73036, 73767, 74499, 75230, 78151, 130221, 130952, 133143, 133874, 147745, 148476, 149207, 160158, 160889, 161620, 163081, 166732, 176953, 214184, 214915, 215646, 216377, 217108, 220759, 231710, 276241, 276972, 277703, 287924, 334917, 335648, 336379, 346600, 356821, 391862, 429823, 468654];
M(ci) = c(32);
ci = [14620, 16811, 17542, 24843, 27764, 34335, 35066, 35797, 37988, 40909, 56970, 57701, 58432, 59163, 62084, 62815, 70116, 70847, 71578, 72309, 74500, 77421, 128761, 129492, 131683, 132414, 145555, 146286, 147017, 157968, 158699, 159430, 162351, 166002, 176223, 211264, 211995, 212726, 213457, 216378, 220029, 230980, 274051, 274782, 275513, 287194, 332727, 333458, 334189, 345870, 356091, 391132, 429093, 467924];
M(ci) = c(33);
ci = [19000, 19731, 20462, 28493, 29224, 39445, 40176, 41638, 42369, 62810, 63541, 64272, 65003, 75956, 76687, 77419, 78150, 78881, 133141, 133872, 134603, 135334, 149935, 150666, 151397, 163808, 164539, 165270, 166731, 167462, 177683, 217834, 218565, 219296, 220027, 220758, 221489, 232440, 278431, 279162, 279893, 288654, 337107, 337838, 338569, 347330, 357551, 392592, 430553, 469384];
M(ci) = c(34);
ci = [262090, 264281, 265012, 273043, 277424, 283265, 283996, 285458, 287649, 292760, 293491, 294222, 294953, 297874, 299335, 303716, 407621, 408352, 410543, 411274, 415655, 416386, 417117, 422958, 423689, 424420, 425881, 429532, 431723, 435374, 436105, 436836, 437567, 438298, 441949, 444141, 444872, 499167, 499898, 500629, 506470, 509391, 529244];
M(ci) = c(35);
ci = [260630, 262821, 263552, 270853, 275234, 280345, 281076, 281807, 284728, 286919, 290570, 291301, 292032, 292763, 295684, 297145, 301526, 302257, 302989, 304451, 406161, 406892, 409083, 409814, 413465, 414196, 414927, 420038, 420769, 421500, 425151, 428802, 430993, 432454, 433185, 433916, 434647, 437568, 441219, 442681, 443412, 496977, 497708, 498439, 505740, 508661, 528514];
M(ci) = c(36);
ci = [143830, 147481, 148212, 156973, 161354, 170115, 170846, 171577, 173038, 176689, 208080, 208811, 209542, 210273, 213924, 215385, 224876, 225607, 226338, 227069, 227800, 231451, 330241, 330972, 334623, 335354, 341195, 341926, 342657, 349958, 350689, 351420, 352881, 356532, 358723, 385004, 385735, 386466, 387197, 387928, 391579, 393770, 422971, 423702, 424433, 431734, 463397, 464128, 464859, 472890, 477271, 494792, 509393, 520484];
M(ci) = c(37);
ci = [141640, 145291, 146022, 156243, 159164, 167925, 168656, 169387, 172308, 175959, 205890, 206621, 207352, 208083, 211004, 212465, 221956, 222687, 223418, 224149, 227070, 230721, 328051, 328782, 332433, 333164, 339005, 339736, 340467, 347768, 348499, 349230, 352151, 355802, 357993, 382084, 382815, 383546, 384277, 387198, 390849, 393040, 420051, 420782, 421513, 431004, 461207, 461938, 462669, 472160, 476541, 494062, 508663, 519754];
M(ci) = c(38);
ci = [265010, 265741, 266472, 277423, 279614, 286185, 287648, 288379, 297140, 297871, 298602, 299333, 300064, 304449, 410541, 411272, 412003, 412734, 417845, 418576, 419307, 426608, 427339, 428070, 429531, 430262, 439024, 439755, 440486, 441217, 441948, 445601, 446332, 501357, 502088, 502819, 507200, 510121, 529974];
M(ci) = c(39);
ci = [148210, 149671, 150402, 161353, 165004, 173765, 174496, 175227, 176688, 177419, 212460, 213921, 214652, 215383, 217574, 219035, 228526, 229257, 229988, 230719, 231450, 232181, 334621, 335352, 336813, 337544, 343385, 344116, 344847, 353608, 354339, 355070, 356531, 357262, 388654, 389385, 390116, 390847, 391578, 392309, 426621, 427352, 428083, 465587, 466318, 467049, 473620, 478001, 495522, 510123, 521214];
M(ci) = c(40);
ci = [416120, 417581, 418312, 424153, 427804, 431458, 433650, 435111, 435842, 436573, 438764, 440225, 498871, 499602, 501063, 501794, 503255, 503986, 504717, 507638, 509101, 509832, 526177, 526908, 527639, 535084];
M(ci) = c(41);
ci = [341660, 343121, 343852, 351153, 354804, 358458, 383280, 384741, 385472, 386203, 388394, 389855, 392779, 393510, 463101, 463832, 465293, 466024, 469675, 470406, 471137, 474058, 474789, 475520, 476981, 477712, 491584, 492315, 493046, 493777, 494508, 495239, 507651, 517417, 518148, 518879, 533624];
M(ci) = c(42);
ci = [322680, 323411, 324142, 335823, 338014, 343125, 343856, 344587, 346048, 346779, 367950, 368681, 369412, 370143, 370874, 372335, 377446, 378177, 378908, 379639, 380370, 381101, 451421, 452152, 452883, 453614, 458725, 459456, 460187, 465298, 466029, 466760, 468221, 468952, 473333, 482824, 483555, 484286, 485017, 485748, 486479, 490860, 501081, 501812, 502543, 506924, 515227, 515958, 516689, 521071, 525452, 529833, 532894];
M(ci) = c(43);
ci = [457000, 458461, 459192, 464303, 466494, 469415, 470146, 470877, 472338, 473069, 479640, 480371, 481102, 481833, 482564, 484025, 486946, 487677, 488408, 489139, 489870, 490601, 512741, 513472, 514933, 515664, 517128, 517859, 518590, 520051, 520782, 521514, 522245, 522976, 523707, 524438, 525169, 525901, 526632, 527363, 530557, 531288, 532019, 533481, 534212, 534943, 535814];
M(ci) = c(44);
ci = [52602, 61363, 65014, 69395, 73046, 73777, 75238, 78159, 88380, 90571, 91302, 92033, 92764, 182805, 184996, 185727, 194488, 195949, 196680, 199601, 200332, 201063, 208364, 210555, 214206, 214937, 215668, 217129, 220780, 225161, 225892, 226623, 228084, 231735, 237576, 238307, 239038, 239769, 242690, 243421, 244152, 244883, 245614, 250726, 251457, 252189, 293072, 293803, 294534, 295265, 298186, 298917, 299648, 364124, 364855, 365586, 366317, 369238, 369969, 370700, 375811, 376542, 377273, 380924, 385305, 386036, 386767, 388228, 391879, 394070, 397721, 398452, 399183, 399914, 400645, 404296, 435688, 436419, 437150, 437881, 438612, 442263, 481039, 481770, 482501, 486152, 490533, 494914, 524865];
M(ci) = c(45);
ci = [17562, 24863, 27784, 32165, 34356, 35087, 38008, 40929, 67940, 70131, 70862, 72323, 74514, 77435, 129515, 131706, 132437, 140468, 141929, 142660, 145581, 146312, 147043, 154344, 156535, 157996, 158727, 159458, 162379, 166030, 168221, 168952, 169683, 172604, 176255, 206186, 206917, 207648, 208379, 211300, 212031, 212762, 213493, 216414, 220065, 222256, 222987, 223718, 224449, 227370, 231021, 268982, 269713, 270444, 271175, 274096, 274827, 275558, 282859, 285050, 287241, 327624, 328355, 329086, 329817, 332738, 333469, 334200, 339311, 340042, 340773, 345884, 348075, 348806, 349537, 352458, 356109, 358300, 382391, 383122, 383853, 384584, 387505, 391156, 393347, 420358, 421089, 421820, 422551, 425472, 429123, 431314, 461329, 462060, 462791, 467902, 472283, 476664, 494185, 508786, 519755];
M(ci) = c(46);
ci = [266492, 277443, 279634, 284015, 286206, 287668, 288399, 304463, 411295, 412026, 412757, 414948, 416409, 417140, 417871, 418602, 419333, 421524, 424445, 426636, 427367, 428098, 429559, 430290, 431754, 433946, 435407, 436138, 436869, 439060, 439791, 440522, 441253, 441984, 444183, 444914, 445646, 446377, 498444, 499175, 499906, 500637, 501368, 502099, 502830, 503561, 504292, 505023, 507214, 507945, 509408, 510139, 526299, 527030, 527761, 529952, 535085];
M(ci) = c(47);
ci = [7356, 13197, 14658, 16119, 19040, 32183, 33644, 37295, 46786, 48247, 49708, 52629, 60661, 67962, 69423, 73804, 86947, 88408, 91329, 98631, 108393, 114234, 115695, 116426, 117887, 122268, 124459, 131031, 133952, 141985, 144176, 148557, 160971, 171192, 182874, 185795, 193828, 196019, 200400, 209893, 215004, 225955, 239098, 243479, 251510, 261005, 262466, 265387, 272690, 277071, 284372, 294595, 298976, 314517, 319629, 323281, 331314, 335695, 342266, 351027, 365630, 370011, 376582, 386073, 398484, 408707, 411628, 416739, 424040, 436451, 445212, 452579, 457690, 464261, 481782, 500033, 513916];
M(ci) = c(48);
ci = [6626, 12467, 13928, 15389, 18310, 25612, 31453, 32914, 36565, 46056, 47517, 48978, 51899, 59931, 67232, 68693, 73074, 83296, 86217, 87678, 90599, 97901, 106202, 113504, 114965, 115696, 117157, 121538, 123729, 130301, 133222, 141255, 143446, 147827, 160241, 170462, 182144, 185065, 193098, 195289, 199670, 209163, 214274, 225225, 238368, 242749, 250780, 260275, 261736, 264657, 271960, 276341, 283642, 293865, 298246, 304087, 310865, 315248, 318899, 320360, 322551, 330584, 334965, 341536, 350297, 364900, 369281, 375852, 385343, 397754, 407977, 410898, 416009, 423310, 435721, 444482, 451849, 456960, 463531, 481052, 499303, 513186];
M(ci) = c(49);
ci = [5896, 10277, 11738, 14659, 17580, 21961, 24152, 30723, 32184, 35105, 43866, 45327, 48248, 51169, 55550, 58471, 66502, 67963, 70884, 80375, 82566, 85487, 86948, 89869, 95710, 97171, 100092, 101553, 103014, 105472, 107663, 110584, 112045, 112776, 114237, 119348, 120809, 127380, 129571, 132492, 136873, 138334, 139795, 141986, 146367, 155860, 158781, 169002, 179223, 181414, 184335, 188716, 190177, 191638, 193829, 198210, 207703, 212084, 223035, 236908, 241289, 249320, 254431, 256623, 258084, 259545, 261006, 263927, 270500, 274881, 281452, 292405, 296786, 302627, 308675, 310136, 312327, 313788, 316709, 318170, 321821, 329124, 333505, 340076, 348837, 363440, 367821, 374392, 383153, 395564, 407247, 410168, 414549, 421120, 433531, 443752, 448197, 449658, 451119, 455500, 462071, 479592, 497843, 511726];
M(ci) = c(50);
ci = [5166, 9547, 11008, 13929, 16850, 21231, 23422, 29993, 31454, 34375, 43136, 44597, 47518, 50439, 54820, 57741, 65772, 67233, 70154, 79645, 81836, 84757, 86218, 89139, 94980, 96441, 99362, 100823, 102284, 104742, 106933, 109854, 111315, 112046, 113507, 118618, 120079, 126650, 128841, 131762, 136143, 137604, 139065, 141256, 145637, 152208, 152939, 155130, 158051, 168272, 178493, 180684, 183605, 187986, 189447, 190908, 193099, 197480, 204051, 204782, 206973, 211354, 222305, 233256, 233987, 236178, 240559, 248590, 253701, 255162, 255893, 257354, 258815, 260276, 263197, 267578, 268309, 269770, 274151, 280722, 289483, 290214, 291675, 296056, 301897, 305548, 306279, 307945, 309406, 311597, 313058, 315979, 317440, 321091, 325472, 326203, 328394, 332775, 339346, 348107, 359788, 360519, 362710, 367091, 373662, 382423, 394834, 405055, 405786, 406517, 409438, 413819, 420390, 432801, 443022, 447467, 448928, 450389, 454770, 461341, 478862, 497113, 510996];
M(ci) = c(51);
ci = [17578, 19039, 20500, 35103, 37294, 40215, 51167, 52628, 54089, 64311, 70882, 73803, 76724, 89867, 91328, 94249, 120804, 122265, 122996, 124457, 133951, 135412, 146365, 148556, 150747, 160970, 164621, 174842, 185794, 187255, 198208, 200399, 202590, 215003, 218654, 229605, 243478, 247129, 263925, 265386, 266847, 277070, 279261, 298975, 301166, 313785, 324741, 335694, 337885, 344456, 354677, 370010, 372201, 378772, 389723, 402134, 411627, 413088, 418929, 427690, 440101, 446672, 454039, 459880, 466451, 483972, 502223, 516106];
M(ci) = c(52);
ci = [8816, 16848, 18309, 19770, 34373, 36564, 39485, 50437, 51898, 53359, 63581, 70152, 73073, 75994, 89137, 90598, 93519, 108392, 120074, 121535, 122266, 123727, 125188, 125919, 133221, 134682, 145635, 147826, 150017, 160240, 163891, 174112, 185064, 186525, 197478, 199669, 201860, 214273, 217924, 228875, 242748, 246399, 252970, 263195, 264656, 266117, 276340, 278531, 286562, 298245, 300436, 313055, 314516, 324011, 334964, 337155, 343726, 353947, 369280, 371471, 378042, 388993, 401404, 410897, 412358, 418199, 426960, 439371, 445942, 453309, 459150, 465721, 483242, 501493, 515376];
M(ci) = c(53);
ci = [146058, 148249, 150440, 160662, 168693, 170884, 174535, 197897, 200088, 202279, 214691, 222722, 225643, 229294, 243166, 249007, 251198, 317904, 319365, 335431, 337622, 339815, 342006, 344197, 350770, 354421, 369754, 371945, 374138, 376329, 378520, 385823, 389474, 398238, 401889, 414305, 416496, 418687, 423800, 427451, 436215, 439866, 449565, 459791, 464174, 466365, 470746, 475127, 481700, 483891, 488272, 492653, 499957, 502148, 504339, 516089, 518281, 522662, 527043, 531436];
M(ci) = c(54);
ci = [124886, 145328, 147519, 149710, 159932, 167963, 170154, 173805, 197167, 199358, 201549, 213961, 221992, 224913, 228564, 242436, 248277, 250468, 252659, 314252, 317174, 318635, 319366, 320097, 334701, 336892, 339085, 341276, 343467, 350040, 353691, 369024, 371215, 373408, 375599, 377790, 385093, 388744, 397508, 401159, 413575, 415766, 417957, 423070, 426721, 435485, 439136, 448835, 459061, 463444, 465635, 470016, 474397, 480970, 483161, 487542, 491923, 496304, 499227, 501418, 503609, 507990, 515359, 517551, 521932, 526313, 530706];
M(ci) = c(55);
ci = [323446, 343157, 345348, 346079, 346810, 353381, 356302, 357763, 358494, 377476, 379667, 380398, 381129, 388430, 391351, 392812, 393543, 400845, 403766, 411800, 417641, 426402, 438813, 445384, 452222, 452953, 455874, 456605, 457336, 458067, 458798, 460259, 465370, 468291, 469022, 469753, 471214, 471945, 472676, 473407, 474138, 475599, 477060, 477791, 482903, 485824, 486555, 487286, 488747, 489478, 490209, 490940, 491671, 493132, 494593, 495324, 496056, 501171, 502632, 503363, 504824, 505555, 506286, 507017, 507748, 509210, 509941, 512345, 513806, 515267, 516728, 517462, 518923, 520384, 521115, 521848, 523309, 524770, 525501, 526235, 527696, 529157, 529888, 530687, 532148, 532879, 533611, 534342, 535073, 535816];
M(ci) = c(56);
ci = [3005, 3736, 6657, 7388, 12499, 13230, 13961, 15422, 18343, 23456, 25647, 46088, 46819, 47550, 49011, 51932, 57775, 59966, 63617, 81870, 83331, 97934, 98665, 104800, 106261, 108453, 121594, 122325, 123786, 128899, 130360, 133281, 147882, 160293, 180736, 182197, 185118, 199719, 214320, 242791, 264694, 276375, 298276, 314544, 315275, 322576, 334987, 369298, 410909, 451867];
M(ci) = c(57);
ci = [815, 1546, 5197, 5928, 9579, 10310, 11041, 13962, 16883, 21264, 21995, 22726, 23457, 43168, 43899, 44630, 47551, 50472, 54853, 55584, 56315, 57776, 62157, 79678, 80409, 81140, 81871, 95012, 95743, 96474, 97205, 99396, 100127, 100858, 101589, 102320, 103051, 104070, 104801, 106992, 107723, 118674, 119405, 120136, 126707, 127438, 128169, 128900, 131821, 145692, 158103, 178544, 179275, 180006, 180737, 183658, 197529, 211400, 240601, 253742, 254473, 263234, 274185, 296086, 311623, 312354, 313085, 321116, 332797, 367108, 409449, 450407];
M(ci) = c(58);
ci = [6655, 7386, 8847, 16881, 18342, 19803, 27106, 50470, 51931, 53392, 62155, 63616, 84060, 107720, 108451, 125244, 125976, 131819, 133280, 134741, 150072, 163943, 183656, 185117, 186578, 201909, 217970, 246441, 266154, 278565, 300466, 324036, 337177, 371488, 412369, 453327];
M(ci) = c(59);
ci = [116885, 117616, 123457, 124188, 142441, 144632, 149013, 156316, 157047, 194280, 196471, 200852, 208155, 210346, 215457, 237360, 239551, 315042, 320154, 329649, 331840, 336221, 342792, 351553, 363966, 366157, 370538, 377109, 386600, 399011, 417264, 424565, 436976, 458356, 464927, 482448, 500699, 514647];
M(ci) = c(60);
ci = [113235, 113966, 119807, 120538, 137329, 138060, 140251, 142442, 146823, 152664, 154126, 156317, 189168, 189899, 192090, 194281, 198662, 204503, 205965, 208156, 212537, 233708, 235170, 237361, 254882, 257074, 257805, 268026, 289928, 305990, 308470, 312852, 313583, 317234, 317965, 325997, 327459, 329650, 334031, 340602, 349363, 360314, 361776, 363967, 368348, 374919, 383680, 396091, 405582, 415074, 421645, 434056, 448863, 449594, 456166, 462737, 480258, 498509, 512457];
M(ci) = c(61);
ci = [114695, 115426, 121267, 121998, 140981, 143172, 147553, 154856, 192820, 195011, 199392, 206695, 208886, 213997, 235900, 238091, 309200, 314313, 318694, 319425, 320156, 328189, 330380, 334761, 341332, 350093, 362506, 364697, 369078, 375649, 385140, 397551, 415804, 423105, 435516, 456896, 463467, 480988, 499239, 513187];
M(ci) = c(62);
ci = [111045, 111776, 118347, 119078, 135869, 136600, 138791, 140982, 145363, 151934, 153396, 154857, 187708, 188439, 190630, 192821, 197202, 203773, 205235, 206696, 211077, 232978, 234440, 235901, 253422, 254153, 255614, 256345, 267296, 289198, 305260, 307010, 309201, 311392, 312123, 315774, 316505, 317236, 325267, 326729, 328190, 332571, 339142, 347903, 359584, 361046, 362507, 366888, 373459, 382220, 394631, 404852, 413614, 420185, 432596, 447403, 448134, 448865, 454706, 461277, 478798, 497049, 510997];
M(ci) = c(63);
ci = [123455, 124186, 125647, 146821, 149012, 151203, 159236, 161427, 198660, 200851, 203042, 212535, 215456, 219107, 241740, 243931, 313580, 334029, 336220, 338411, 344982, 355203, 368346, 370537, 372728, 379299, 390250, 402661, 419454, 428215, 440626, 460546, 467117, 484638, 502889, 516837];
M(ci) = c(64);
ci = [121265, 121996, 124917, 145361, 147552, 149743, 157776, 159967, 197200, 199391, 201582, 211075, 213996, 217647, 240280, 242471, 312120, 314311, 332569, 334760, 336951, 343522, 353743, 366886, 369077, 371268, 377839, 388790, 401201, 417994, 426755, 439166, 459086, 465657, 483178, 501429, 515377];
M(ci) = c(65);
ci = [319825, 340271, 342462, 344653, 349036, 351227, 374590, 376781, 378972, 383355, 386276, 389927, 395770, 398691, 449360, 462509, 464700, 466891, 471272, 475653, 480036, 482227, 484418, 488799, 493180, 504864, 518947, 523328, 527709, 532167];
M(ci) = c(66);
ci = [318365, 319096, 338811, 341002, 343193, 347576, 349767, 373130, 375321, 377512, 381895, 384816, 388467, 394310, 397231, 447900, 461049, 463240, 465431, 469812, 474193, 478576, 480767, 482958, 487339, 491720, 496101, 503404, 507785, 517487, 521868, 526249, 530707];
M(ci) = c(67);
ci = [322015, 322746, 323477, 324208, 343189, 343920, 345381, 346112, 346843, 353414, 354145, 355606, 356337, 377508, 378239, 379700, 380431, 381162, 388463, 389194, 390655, 391386, 392117, 400878, 401609, 403070, 403801, 411832, 412563, 417674, 418405, 426436, 427167, 438848, 439579, 445420, 446151, 450820, 452281, 453012, 453743, 458854, 459585, 460316, 465427, 466158, 467619, 468350, 469081, 473462, 477843, 482954, 483685, 485146, 485877, 486608, 490989, 495370, 501212, 501943, 507054, 509975, 515293, 516024, 516755, 521137, 525518, 529899, 532897];
M(ci) = c(68);
ci = [456335, 457066, 458527, 459258, 469479, 470210, 471671, 472402, 473133, 473864, 474595, 476056, 476787, 487008, 487739, 489200, 489931, 490662, 491393, 492124, 493585, 494316, 495047, 495778, 500892, 501623, 503084, 503815, 507466, 511410, 513601, 515062, 515793, 517257, 517988, 519449, 520180, 520911, 521644, 522375, 523836, 524567, 525298, 526032, 526763, 530623, 531354, 532085, 533547, 534278, 535009, 535817];
M(ci) = c(69);
ci = [3772, 4503, 7424, 13265, 14726, 16187, 19108, 32249, 33710, 37361, 46852, 48313, 49774, 52695, 68026, 69487, 73868, 87009, 88470, 91391, 98692, 114317, 115778, 116509, 117970, 122351, 124542, 142065, 144256, 148637, 171268, 193901, 196092, 200473, 226024, 251575, 261068, 262529, 265450, 284431, 319660, 323312, 342293, 376604, 416755, 457708];
M(ci) = c(70);
ci = [3042, 3773, 6694, 12535, 13996, 15457, 18378, 31519, 32980, 36631, 46122, 47583, 49044, 51965, 67296, 68757, 73138, 86279, 87740, 90661, 97962, 113587, 115048, 115779, 117240, 121621, 123812, 141335, 143526, 147907, 170538, 193171, 195362, 199743, 225294, 250845, 260338, 261799, 264720, 283701, 304142, 318930, 320391, 322582, 341563, 375874, 416025, 456978];
M(ci) = c(71);
ci = [1582, 2313, 5964, 10345, 11806, 14727, 17648, 30789, 32250, 35171, 43932, 45393, 48314, 51235, 66566, 68027, 70948, 85549, 87010, 89931, 97232, 110667, 112128, 112859, 114320, 119431, 120892, 136953, 138414, 139875, 142066, 146447, 169078, 188789, 190250, 191711, 193902, 198283, 223104, 249385, 256686, 258147, 259608, 261069, 263990, 281511, 302682, 316740, 318201, 321852, 340103, 374414, 414565, 455518];
M(ci) = c(72);
ci = [852, 1583, 5234, 9615, 11076, 13997, 16918, 30059, 31520, 34441, 43202, 44663, 47584, 50505, 65836, 67297, 70218, 84819, 86280, 89201, 96502, 109937, 111398, 112129, 113590, 118701, 120162, 136223, 137684, 139145, 141336, 145717, 168348, 188059, 189520, 190981, 193172, 197553, 222374, 248655, 255956, 257417, 258878, 260339, 263260, 280781, 301952, 316010, 317471, 321122, 339373, 373684, 413835, 454788];
M(ci) = c(73);
ci = [7422, 8153, 17646, 19107, 20568, 35169, 37360, 40281, 51233, 52694, 54155, 70946, 73867, 76788, 89929, 91390, 94311, 120887, 122348, 123079, 124540, 146445, 148636, 150827, 174918, 198281, 200472, 202663, 229674, 263988, 265449, 266910, 324772, 344483, 378794, 418945, 459898];
M(ci) = c(74);
ci = [6692, 7423, 8884, 16916, 18377, 19838, 34439, 36630, 39551, 50503, 51964, 53425, 70216, 73137, 76058, 89199, 90660, 93581, 120157, 121618, 122349, 123810, 125271, 126002, 145715, 147906, 150097, 174188, 197551, 199742, 201933, 228944, 253035, 263258, 264719, 266180, 286621, 324042, 343753, 378064, 418215, 459168];
M(ci) = c(75);
ci = [122032, 122763, 146126, 148317, 150508, 168759, 170950, 174601, 197963, 200154, 202345, 222786, 225707, 229358, 249069, 251260, 317987, 319448, 339895, 342086, 344277, 374211, 376402, 378593, 414368, 416559, 418750, 459822, 470773, 488294, 504355];
M(ci) = c(76);
ci = [121302, 122033, 124954, 145396, 147587, 149778, 168029, 170220, 173871, 197233, 199424, 201615, 222056, 224977, 228628, 248339, 250530, 252721, 317257, 318718, 319449, 320180, 339165, 341356, 343547, 373481, 375672, 377863, 413638, 415829, 418020, 459092, 470043, 487564, 503625];
M(ci) = c(77);
ci = [451262, 451993, 452724, 465135, 467326, 468057, 468788, 476089, 476820, 477551, 482662, 484853, 485584, 486315, 493616, 494347, 495078, 500922, 512167, 512898, 513629, 514360, 515091, 516552, 517283, 518744, 519475, 520206, 520937, 521669, 523130, 523861, 524592, 525323, 526056, 527517, 528248, 528979, 529710, 530630, 532091, 532822, 533553, 534284, 535015, 535818];
M(ci) = c(78);
ci = [1603, 3064, 3795, 6716, 7447, 12558, 13289, 14020, 15481, 18402, 46143, 46874, 47605, 49066, 51987, 97978, 98709, 121643, 122374, 123835, 147926, 199757, 264728, 322659];
M(ci) = c(79);
ci = [143, 874, 1605, 5256, 5987, 9638, 10369, 11100, 14021, 16942, 43223, 43954, 44685, 47606, 50527, 96518, 97249, 118723, 119454, 120185, 145736, 197567, 263268, 321199];
M(ci) = c(80);
ci = [114023, 116944, 117675, 123516, 124247, 142500, 144691, 149072, 194335, 196526, 200907, 320203, 342836, 377147, 417298, 458439];
M(ci) = c(81);
ci = [110373, 113294, 114025, 119866, 120597, 137388, 138119, 140310, 142501, 146882, 189223, 189954, 192145, 194336, 198717, 257118, 257849, 317283, 318014, 340646, 374957, 415108, 456249];
M(ci) = c(82);
ci = [111833, 114754, 115485, 121326, 122057, 141040, 143231, 147612, 192875, 195066, 199447, 318743, 319474, 320205, 341376, 375687, 415838, 456979];
M(ci) = c(83);
ci = [108913, 111104, 111835, 118406, 119137, 135928, 136659, 138850, 141041, 145422, 187763, 188494, 190685, 192876, 197257, 255658, 256389, 315823, 316554, 317285, 339186, 373497, 413648, 454789];
M(ci) = c(84);
ci = [120593, 123514, 124245, 125706, 146880, 149071, 151262, 198715, 200906, 203097, 345026, 379337, 419488, 460629];
M(ci) = c(85);
ci = [119133, 121324, 122055, 124976, 145420, 147611, 149802, 197255, 199446, 201637, 343566, 377877, 418028, 459169];
M(ci) = c(86);
ci = [5983, 6714, 7445, 8906, 16940, 18401, 19862, 50525, 51986, 53447, 125293, 126025, 150116, 201947, 266188, 324119];
M(ci) = c(87);
ci = [317693, 319884, 340330, 342521, 344712, 374645, 376836, 379027, 471316, 488837, 504898];
M(ci) = c(88);
ci = [316233, 318424, 319155, 338870, 341061, 343252, 373185, 375376, 377567, 469856, 487377, 503438];
M(ci) = c(89);
ci = [450553, 451284, 452015, 452746, 453477, 465158, 465889, 467350, 468081, 468812, 482683, 483414, 484875, 485606, 486337, 500938, 501669, 515113, 515844, 516575, 520956, 525337, 529718, 532899];
M(ci) = c(90);
ci = [511143, 512604, 513335, 514796, 515527, 516988, 517719, 519180, 519911, 520642, 521373, 522104, 523565, 524296, 525027, 525758, 526489, 530443, 531174, 531905, 533366, 534097, 534828, 535819];
M(ci) = c(91);
ci = [2350, 3811, 4542, 7463, 8194, 14765, 16226, 19147, 24258, 32291, 33752, 37403, 48354, 49815, 52736, 58577, 60768, 64419, 68070, 69531, 73912, 82673, 87056, 88517, 91438, 105589, 112892, 114353, 115814, 116545, 118006, 122387, 123118, 124579, 129690, 131151, 134072, 142103, 144294, 148675, 155976, 161088, 171309, 181530, 182991, 185912, 193943, 196134, 200515, 207816, 210007, 215118, 226069, 237020, 239211, 243592, 251623, 261114, 262575, 265496, 272797, 277178, 284479, 294700, 299081, 310176, 319672, 323325, 329166, 331357, 335738, 342309, 351070, 363481, 365672, 370053, 376624, 386115, 398526, 408747, 411668, 416779, 424080, 436491, 445252, 452586, 457697, 464268, 481789, 500040, 513920];
M(ci) = c(92);
ci = [160, 891, 1622, 5273, 6004, 11115, 14036, 16957, 22798, 23529, 27180, 30101, 31562, 34483, 44704, 47625, 50546, 56387, 57848, 62229, 65880, 67341, 70262, 81213, 81944, 84135, 84866, 86327, 89248, 104129, 104860, 107781, 109242, 109973, 111434, 112165, 113626, 118737, 119468, 120199, 128230, 128961, 131882, 139183, 141374, 145755, 153786, 155247, 158168, 168389, 180070, 180801, 183722, 191023, 193214, 197595, 205626, 207087, 211468, 222419, 234830, 236291, 240672, 248703, 258924, 260385, 263306, 269877, 274258, 280829, 291780, 296161, 302002, 307256, 307987, 309448, 310909, 312370, 313101, 316022, 316753, 317484, 321135, 326976, 328437, 332818, 339389, 348150, 361291, 362752, 367133, 373704, 382465, 394876, 406557, 409478, 413859, 420430, 432841, 443062, 448204, 448935, 450396, 454777, 461348, 478869, 497120, 511000];
M(ci) = c(93);
ci = [120610, 123531, 124262, 125723, 146895, 149086, 151277, 159308, 161499, 165150, 169531, 171722, 175373, 198734, 200925, 203116, 212607, 215528, 219179, 223560, 226481, 230132, 241813, 244004, 247655, 249846, 313639, 318022, 320214, 334090, 336281, 338472, 340663, 342854, 345045, 349426, 351617, 355268, 368410, 370601, 372792, 374983, 377174, 379365, 383746, 386667, 390318, 396160, 399081, 402732, 415144, 417335, 419526, 424637, 428288, 437050, 440701, 449606, 460565, 462756, 464947, 467138, 471519, 475900, 480281, 482472, 484663, 489044, 493425, 500727, 502918, 505109, 516826, 519018, 523399, 527780, 532170];
M(ci) = c(94);
M = gj(M);
A = zeros(4);
amcols = [734 733 732 731];
A(1, :) = -M(727, amcols);
A(2, :) = -M(721, amcols);
A(3, :) = -M(715, amcols);
A(4, :) = -M(709, amcols);
[V D] = eig(A);
sol = V([4, 3, 2],:)./(ones(3, 1)*V(1,:));
%if (find(isnan(sol(:))) > 0)
% v1 = 10000;
% v2 = 10000;
% v3 = 10000;
% l1 = 10000;
% l2 = 10000;
% k = 10000;
% u1 = 10000;
% u2 = 10000;
% u3 = 10000;
% s = 10000;
%else
%WARNING: cannot extract all unknowns at once. A back-substitution required (not implemented/automatized)
ev = diag(D);
I = find(not(imag( sol(1,:) )) & not(isnan( sol(1,:) )) & not(imag( ev' )));
if isempty(I) == 0
u1 = ev(I);
v1 = sol(1,I)';
v2 = sol(2,I)';
v3 = sol(3,I)';
ms = [];
for i = 1:size(v1,1)
ms = [v1(i), v2(i), v3(i), 1]';
uu1(i,1) = -M(727,731:end)*ms;
u2(i,1) = -M(728,731:end)*ms;
u3(i,1) = -M(729,731:end)*ms;
k(i,1) = -M(730,731:end)*ms;
l2(i,1) = (u3(i,1)*v1(i,1) - u1(i,1)*v3(i,1))/ (u1(i,1)*v2(i,1) - u2(i,1)*v1(i,1));
l1(i,1) = (-l2(i,1)*v2(i,1)-v3(i,1)) /v1(i,1);
s(i,1) = (-x41(1)*x4p1(2) + x41(2)*x4p1(1))/ ( - (k(i,1)*(x4p1(1)^2 + x4p1(2)^2) + 1)*(u1(i,1)*x41(2) - u2(i,1)*x41(1)) - x4p1(1)*(l1(i,1)*u1(i,1)*x41(2) - l1(i,1)*u2(i,1)*x41(1)) - x4p1(2)*(l2(i,1)*u1(i,1)*x41(2) - l2(i,1)*u2(i,1)*x41(1)));
end
end
%end
end