File size: 68,350 Bytes
82b12d0
 
 
54278af
 
 
 
2c8bb16
54278af
 
fdbf091
 
4b7244e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fdbf091
 
 
 
4b7244e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fdbf091
2c8bb16
 
82b12d0
63591dc
 
82b12d0
4b7244e
82b12d0
63591dc
4b7244e
63591dc
2c8bb16
63591dc
fdbf091
 
63591dc
fe6189b
4b7244e
fdbf091
fe6189b
 
 
4b7244e
63591dc
82b12d0
 
 
 
4b7244e
82b12d0
 
 
 
 
 
 
fe6189b
82b12d0
 
 
 
 
 
 
 
 
0315ac8
82b12d0
 
 
 
 
 
 
 
 
 
 
 
0315ac8
82b12d0
 
 
 
 
 
 
fe6189b
 
 
4b7244e
 
 
 
 
 
 
 
fdbf091
 
4b7244e
fdbf091
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b7244e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0315ac8
4b7244e
 
 
 
0315ac8
 
 
 
 
 
 
 
 
4b7244e
 
 
 
0315ac8
 
 
4b7244e
 
 
 
 
 
0315ac8
 
 
 
4b7244e
 
fe6189b
 
 
 
 
 
82b12d0
 
 
 
0315ac8
fe6189b
82b12d0
0315ac8
 
 
 
 
 
 
 
 
82b12d0
9d1f85a
 
fe6189b
9d1f85a
 
 
e5cb338
0315ac8
9d1f85a
 
 
 
 
 
 
 
 
0315ac8
 
 
9d1f85a
0315ac8
 
36a0566
9d1f85a
0315ac8
 
 
9d1f85a
 
4b7244e
 
0315ac8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b7244e
 
 
 
 
 
 
68d09e4
 
 
 
 
 
 
4b7244e
 
 
 
 
 
 
 
9d1f85a
 
68d09e4
9d1f85a
 
 
 
 
 
 
 
36a0566
 
9d1f85a
 
 
 
 
 
 
 
 
82b12d0
 
 
 
 
54278af
82b12d0
 
 
 
 
 
 
 
 
 
 
 
 
9b91cd8
82b12d0
 
 
 
 
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
457
458
459
460
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7a9aa1cb",
   "metadata": {},
   "source": [
    "## ๋ฏธ๋”” ํŒŒ์ผ์— ๋งž๋Š” ์Šคํƒ€์ผ ๋ฒกํ„ฐ ์ƒ์„ฑ์„ ์œ„ํ•œ ๊ณณ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c131428",
   "metadata": {},
   "outputs": [],
   "source": [
    "from music21 import note, chord\n",
    "from music21.stream.base import Score\n",
    "\n",
    "def score_to_style_vector(score: Score) -> dict:\n",
    "    \"\"\"MIDI ํŒŒ์ผ(music21 score)์„ ๋ถ„์„ํ•˜์—ฌ ์Šคํƒ€์ผ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜\"\"\"\n",
    "\n",
    "    score.show('midi')\n",
    "\n",
    "    # 1. Key & Mode\n",
    "    key_obj = score.analyze(\"key\")\n",
    "    key = key_obj.tonic.name # type: ignore\n",
    "    mode = key_obj.mode # type: ignore\n",
    "\n",
    "    # 2. ๋ฉœ๋กœ๋”” ์Œํ‘œ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ\n",
    "    melody_notes = [n for n in score.flat.notes if isinstance(n, note.Note)]\n",
    "    pitches = [n.pitch.midi for n in melody_notes]\n",
    "    onsets = [n.offset for n in melody_notes]\n",
    "\n",
    "    # 3. ์ฝ”๋“œ (ํ™”์„ฑ) ๋ถ„์„\n",
    "    chords = [c for c in score.flat.getElementsByClass(chord.Chord)]\n",
    "    complex_chords = sum([1 for c in chords if len(c.pitches) > 3])\n",
    "    chord_complexity = complex_chords / (len(chords) + 1e-6)  # ๋น„์œจ\n",
    "\n",
    "    # 4. ๋ฉœ๋กœ๋”” ๋ฐ€๋„ (๋‹จ์œ„ ๋ฐ•์ž๋‹น ๋…ธํŠธ ์ˆ˜)\n",
    "    melody_density = len(melody_notes) / (score.highestTime + 1e-6) # type: ignore\n",
    "\n",
    "    # 5. ์‹ฑ์ฝ”ํŽ˜์ด์…˜ (off-beat ๋น„์œจ: 1/4 ๋ฐ•์ž ๋‹จ์œ„ ๊ธฐ์ค€)\n",
    "    syncopation = sum([1 for o in onsets if (o % 1) != 0]) / (len(onsets) + 1e-6)\n",
    "\n",
    "    # 6. ํ”ผ์น˜ ๋ฒ”์œ„\n",
    "    pitch_range = max(pitches) - min(pitches) if pitches else 0\n",
    "\n",
    "    # 7. ์‚ฌ๋žŒ์ด ์ƒ๊ฐํ•˜๋Š” ๊ณก์˜ ๋ถ„์œ„๊ธฐ\n",
    "    mood = input(\"๋ถ„์œ„๊ธฐ ์ž…๋ ฅ (์ด ์ค‘์—์„œ ์„ ํƒ: Happy, Chill, Emotional, Aggressive, Dreamy, Melodic): \")\n",
    "\n",
    "    # ์Šคํƒ€์ผ ๋ฒกํ„ฐ ๊ฒฐ๊ณผ\n",
    "    style_vector = {\n",
    "        \"bpm\": 128,  # ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •\n",
    "        \"key\": key,\n",
    "        \"mode\": mode,\n",
    "        \"chord_complexity\": round(chord_complexity, 3),\n",
    "        \"melody_density\": round(melody_density, 3),\n",
    "        \"syncopation\": round(syncopation, 3),\n",
    "        \"pitch_range\": pitch_range,\n",
    "        \"mood\": mood\n",
    "    }\n",
    "\n",
    "    return style_vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "19ba84e1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Skipping non-MIDI file: 0.mid\n",
      "Skipping non-MIDI file: 1.mid\n",
      "Skipping non-MIDI file: 10.mid\n",
      "Skipping non-MIDI file: 11.mid\n",
      "Skipping non-MIDI file: 12.mid\n",
      "Skipping non-MIDI file: 13.mid\n",
      "Skipping non-MIDI file: 14.mid\n",
      "Skipping non-MIDI file: 15.mid\n",
      "Skipping non-MIDI file: 16.mid\n",
      "Skipping non-MIDI file: 17.mid\n",
      "Skipping non-MIDI file: 18.mid\n",
      "Skipping non-MIDI file: 19.mid\n",
      "Skipping non-MIDI file: 2.mid\n",
      "Skipping non-MIDI file: 20.mid\n",
      "Skipping non-MIDI file: 21.mid\n",
      "Skipping non-MIDI file: 22.mid\n",
      "Skipping non-MIDI file: 23.mid\n",
      "Skipping non-MIDI file: 24.mid\n",
      "Skipping non-MIDI file: 25.mid\n",
      "Skipping non-MIDI file: 26.mid\n",
      "Skipping non-MIDI file: 27.mid\n",
      "Skipping non-MIDI file: 28.mid\n",
      "Skipping non-MIDI file: 29.mid\n",
      "Skipping non-MIDI file: 3.mid\n",
      "Skipping non-MIDI file: 30.mid\n",
      "Skipping non-MIDI file: 31.mid\n",
      "Skipping non-MIDI file: 32.mid\n",
      "Skipping non-MIDI file: 33.mid\n",
      "Skipping non-MIDI file: 4.mid\n",
      "Skipping non-MIDI file: 5.mid\n",
      "Skipping non-MIDI file: 6.mid\n",
      "Skipping non-MIDI file: 7.mid\n",
      "Skipping non-MIDI file: 8.mid\n",
      "Skipping non-MIDI file: 9.mid\n"
     ]
    }
   ],
   "source": [
    "from HarmonyMIDIToken import HarmonyMIDIToken as Tokenizer\n",
    "import os\n",
    "\n",
    "#tokenized_data = []\n",
    "\n",
    "for filename in os.listdir(\"data\"):\n",
    "    if filename.endswith(\".mid\") and not filename in [i[\"name\"] for i in tokenized_data]:\n",
    "        MIDI = Tokenizer()\n",
    "        print(f\"file name: {filename}\")\n",
    "        MIDI.set_midi(os.path.join(\"data\", filename))\n",
    "        \n",
    "        vector = score_to_style_vector(MIDI.to_midi()) # type: ignore\n",
    "    \n",
    "        tokenized_data.append({\n",
    "            \"name\": filename,\n",
    "            \"vector\":vector,\n",
    "            \"token\":MIDI.token_id\n",
    "            })\n",
    "    else:\n",
    "        print(f\"Skipping non-MIDI or already Done file: {filename}\")\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f79a6edf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tokenized MIDI data: 34\n"
     ]
    }
   ],
   "source": [
    "print(\"Tokenized MIDI data:\", len(tokenized_data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "21a9ba89",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json # JSON ํŒŒ์ผ๋กœ ํ† ํฌ๋‚˜์ด์ € ๋ฏธ๋”” ๋ฐ์ดํ„ฐ ์ €์žฅ\n",
    "\n",
    "with open('tokenized_midi_data.json', 'w') as f:\n",
    "    json.dump(tokenized_data, f, indent=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "dea532d4",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json # JSON์œผ๋กœ ์ €์žฅํ•œ ํ† ํฌ๋‚˜์ด์ € ๋ฏธ๋”” ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ\n",
    "\n",
    "with open('tokenized_midi_data.json', 'r') as f:\n",
    "    tokenized_data = json.load(f)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a37da0b",
   "metadata": {},
   "source": [
    "## ๋ฐ์ดํ„ฐ ์ˆ˜์ •"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "995a6294",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <div id=\"midiPlayerDiv53299\"></div>\n",
       "                <link rel=\"stylesheet\" href=\"https://cuthbertLab.github.io/music21j/css/m21.css\">\n",
       "                \n",
       "                <script>\n",
       "                require.config({\n",
       "                    paths: {\n",
       "                        'music21': 'https://cuthbertLab.github.io/music21j/releases/music21.debug',\n",
       "                    }\n",
       "                });\n",
       "                require(['music21'], function(music21) {\n",
       "                    mp = new music21.miditools.MidiPlayer();\n",
       "                    mp.addPlayer(\"#midiPlayerDiv53299\");\n",
       "                    mp.base64Load(\"data:audio/midi;base64,TVRoZAAAAAYAAQAEBABNVHJrAAAAFAD/UQMHoSAA/1gEBAIYCIgA/y8ATVRyawAAAccA/wMAAOAAQIgAkE9ahACATwCGAJBWWoQAgFYAggCQTlqEAIBOAIIAkE9ahACATwCGAJBPWoQAgE8AAJBbWoQAgFsAAJBaWoQAgFoAAJBWWoQAgFYAAJBTWoQAgFMAAJBWWoQAgFYAAJBPWoQAgE8AAJBOWoQAgE4AAJBPWoQAgE8AhgCQVlqEAIBWAIIAkE5ahACATgCCAJBPWoQAgE8AhgCQTlqEAIBOAACQT1qEAIBPAACQUVqEAIBRAACQU1qEAIBTAACQT1qEAIBPAACQTlqEAIBOAACQT1qEAIBPAACQTlqEAIBOAACQT1qEAIBPAIYAkFZahACAVgCCAJBOWoQAgE4AggCQT1qEAIBPAIYAkE9ahACATwAAkFtahACAWwAAkFpahACAWgAAkE9ahACATwAAkFhahACAWAAAkFZahACAVgAAkFNahACAUwAAkE9ahACATwAAkExahACATACGAJBTWoQAgFMAggCQUVqEAIBRAIIAkE5ahACATgCGAJBMWoQAgEwAAJBPWoIAgE8AggCQT1qEAIBPAIQAkFFahACAUQAAkE9ahACATwAAkE9ahACATwAAkE5ahACATgCIAP8vAE1UcmsAAAQJAP8DAADgAECIAJA8WgCQQFoAkENaiACAPAAAgEAAAIBDAIIAkDxaAJBAWgCQQ1qEAIA8AACAQAAAgEMAggCQPloAkEJaAJBFWoQAgD4AAIBCAACARQCCAJA+WgCQQloAkEVahACAPgAAgEIAAIBFAIYAkEBaAJBDWgCQR1qIAIBAAACAQwAAgEcAAJBAWgCQQ1oAkEdahACAQAAAgEMAAIBHAIQAkEBaAJBDWgCQR1qIAIBAAACAQwAAgEcAAJA+WgCQQloAkEVahACAPgAAgEIAAIBFAIQAkDxaAJBAWgCQQ1qIAIA8AACAQAAAgEMAggCQPFoAkEBaAJBDWoQAgDwAAIBAAACAQwCCAJA+WgCQQloAkEVahACAPgAAgEIAAIBFAIIAkD5aAJBCWgCQRVqEAIA+AACAQgAAgEUAhgCQQFoAkENaAJBHWogAgEAAAIBDAACARwAAkEBaAJBDWgCQR1qEAIBAAACAQwAAgEcAhACQQFoAkENaAJBHWoQAgEAAAIBDAACARwAAkEBaAJBDWgCQR1qEAIBAAACAQwAAgEcAAJBAWgCQQ1oAkEdahACAQAAAgEMAAIBHAACQQFoAkENaAJBHWoQAgEAAAIBDAACARwAAkDxaAJBAWgCQQ1qIAIA8AACAQAAAgEMAggCQPFoAkEBaAJBDWoQAgDwAAIBAAACAQwCCAJA+WgCQQloAkEVahACAPgAAgEIAAIBFAIIAkD5aAJBCWgCQRVqEAIA+AACAQgAAgEUAhgCQQFoAkENaAJBHWogAgEAAAIBDAACARwAAkEBaAJBDWgCQR1qEAIBAAACAQwAAgEcAAJBAWgCQQ1oAkEdahACAQAAAgEMAAIBHAACQQFoAkENaAJBHWoQAgEAAAIBDAACARwAAkEBaAJBDWgCQR1qEAIBAAACAQwAAgEcAAJBAWgCQQ1oAkEdahACAQAAAgEMAAIBHAACQQFoAkENaAJBHWoQAgEAAAIBDAACARwAAkEVaAJBIWgCQQFqIAIBFAACASAAAgEAAggCQRVoAkEhaAJBAWoQAgEUAAIBIAACAQACCAJBHWgCQPloAkEJahACARwAAgD4AAIBCAIIAkEdaAJA+WgCQQlqEAIBHAACAPgAAgEIAhgCQPFoAkEBaAJBDWogAgDwAAIBAAACAQwAAkDxaAJBAWgCQQ1qEAIA8AACAQAAAgEMAAJA8WgCQQFoAkENahACAPAAAgEAAAIBDAACQPFoAkEBaAJBDWoQAgDwAAIBAAACAQwAAkDxaAJBAWgCQQ1qEAIA8AACAQAAAgEMAAJA8WgCQQFoAkENahACAPAAAgEAAAIBDAACQPFoAkEBaAJBDWoIAgDwAAIBAAACAQwCIAP8vAE1UcmsAAAFsAP8DAADgAECIAJAwWogAgDAAggCQMFqEAIAwAIIAkDJahACAMgCCAJAyWoQAgDIAhgCQNFqIAIA0AACQNFqIAIA0AACQNFqIAIA0AACQMlqIAIAyAACQMFqIAIAwAIIAkDBahACAMACCAJAyWoQAgDIAggCQMlqEAIAyAIYAkC1aiACALQAAkC1aiACALQAAkC1aiACALQAAkC9aiACALwAAkDBaiACAMACCAJAwWoQAgDAAggCQMlqEAIAyAIIAkDJahACAMgCGAJA0WogAgDQAAJA0WoQAgDQAhACQNFqEAIA0AACQNFqEAIA0AACQNFqEAIA0AACQNFqEAIA0AACQLVqIAIAtAIIAkC1ahACALQCCAJAvWoQAgC8AggCQL1qEAIAvAIYAkDBaiACAMAAAkDBahACAMAAAkDBahACAMAAAkDBahACAMAAAkDBahACAMAAAkDBahACAMAAAkDBahACAMACIAP8vAA==\");\n",
       "                });\n",
       "                </script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <div id=\"midiPlayerDiv53841\"></div>\n",
       "                <link rel=\"stylesheet\" href=\"https://cuthbertLab.github.io/music21j/css/m21.css\">\n",
       "                \n",
       "                <script>\n",
       "                require.config({\n",
       "                    paths: {\n",
       "                        'music21': 'https://cuthbertLab.github.io/music21j/releases/music21.debug',\n",
       "                    }\n",
       "                });\n",
       "                require(['music21'], function(music21) {\n",
       "                    mp = new music21.miditools.MidiPlayer();\n",
       "                    mp.addPlayer(\"#midiPlayerDiv53841\");\n",
       "                    mp.base64Load(\"data:audio/midi;base64,TVRoZAAAAAYAAQAEBABNVHJrAAAAFAD/UQMHoSAA/1gEBAIYCIgA/y8ATVRyawAAAPEA/wMAAOAAQIgAkEtahACASwCIAJBKWoQAgEoAAJBSWoQAgFIAhACQUlqEAIBSAIIAkE9aggCATwAAkE9aggCATwCCAJBLWoQAgEsAAJBKWoQAgEoAAJBLWoQAgEsAAJBSWoQAgFIAhACQVFqEAIBUAIIAkE9aggCATwAAkE9aggCATwCKAJBLWoQAgEsAAJBSWoQAgFIAhACQVFqEAIBUAIIAkE9aggCATwAAkE9aggCATwCCAJBLWoQAgEsAhACQS1qEAIBLAACQUlqEAIBSAACQS1qEAIBLAACQSlqEAIBKAACQS1qEAIBLAIgA/y8ATVRyawAAAfIA/wMAAOAAQIgAkD9aAJBDWgCQRlqEAIA/AACAQwAAgEYAiACQP1oAkENaAJBGWoQAgD8AAIBDAACARgAAkD9aAJBDWgCQRlqEAIA/AACAQwAAgEYAhACQP1oAkENaAJBGWoQAgD8AAIBDAACARgCCAJA/WgCQQ1oAkEZaggCAPwAAgEMAAIBGAACQP1oAkENaAJBGWoIAgD8AAIBDAACARgCcAJA/WgCQQ1oAkEZaggCAPwAAgEMAAIBGAACQP1oAkENaAJBGWoIAgD8AAIBDAACARgCKAJA/WgCQQ1oAkEZahACAPwAAgEMAAIBGAACQP1oAkENaAJBGWoQAgD8AAIBDAACARgCEAJA/WgCQQ1oAkEZahACAPwAAgEMAAIBGAIIAkEZaAJA+WgCQQVqCAIBGAACAPgAAgEEAAJBGWgCQPloAkEFaggCARgAAgD4AAIBBAIIAkEZaAJA+WgCQQVqEAIBGAACAPgAAgEEAhACQRloAkD5aAJBBWoQAgEYAAIA+AACAQQAAkEZaAJA+WgCQQVqEAIBGAACAPgAAgEEAAJBGWgCQPloAkEFahACARgAAgD4AAIBBAACQRloAkD5aAJBBWoQAgEYAAIA+AACAQQAAkEZaAJA+WgCQQVqCAIBGAACAPgAAgEEAiAD/LwBNVHJrAAAA8QD/AwAA4ABAiACQM1qEAIAzAIgAkDNahACAMwAAkDNahACAMwCEAJAzWoQAgDMAggCQM1qCAIAzAACQM1qCAIAzAIIAkDBahACAMAAAkDBahACAMAAAkDBahACAMAAAkDBahACAMACEAJAwWoQAgDAAggCQN1qCAIA3AACQN1qCAIA3AIoAkDdahACANwAAkDdahACANwCEAJA3WoQAgDcAggCQMlqCAIAyAACQMlqCAIAyAIIAkDJahACAMgCEAJAyWoQAgDIAAJAyWoQAgDIAAJAyWoQAgDIAAJAyWoQAgDIAAJAyWoQAgDIAiAD/LwA=\");\n",
       "                });\n",
       "                </script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from HarmonyMIDIToken import HarmonyMIDIToken as Tokenizer\n",
    "\n",
    "for item in tokenized_data:\n",
    "    if item['vector']['mood'] == \"IDK\":\n",
    "        MIDI = Tokenizer()\n",
    "        \n",
    "        MIDI.set_id(item['token'])\n",
    "        MIDI.to_midi().show('midi')\n",
    "        item['vector']['mood'] = input(\"๋ถ„์œ„๊ธฐ ์žฌ ์ž…๋ ฅ\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "68c42254",
   "metadata": {},
   "outputs": [],
   "source": [
    "for item in tokenized_data:\n",
    "    if not \"name\" in item.keys():\n",
    "        print(item)\n",
    "        item['name'] = item['vector']\n",
    "        item.pop('vector')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8cba97a6",
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "min() arg is an empty sequence",
     "output_type": "error",
     "traceback": [
      "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
      "\u001b[31mValueError\u001b[39m                                Traceback (most recent call last)",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m      7\u001b[39m MIDI = Tokenizer()\n\u001b[32m      8\u001b[39m MIDI.set_midi(os.path.join(\u001b[33m\"\u001b[39m\u001b[33mdata\u001b[39m\u001b[33m\"\u001b[39m, filename))\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m item[\u001b[33m'\u001b[39m\u001b[33mtoken\u001b[39m\u001b[33m'\u001b[39m] = \u001b[43mMIDI\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtoken_id\u001b[49m\n\u001b[32m     11\u001b[39m \u001b[38;5;66;03m# try:\u001b[39;00m\n\u001b[32m     12\u001b[39m \u001b[38;5;66;03m# except:\u001b[39;00m\n\u001b[32m     13\u001b[39m \u001b[38;5;66;03m#     print(f\"{item['name']} ์„ ํ† ํฌ๋‚˜์ด์ฆˆ ํ•˜๋Š”๋ฐ ์‹คํŒจํ•จ.\")\u001b[39;00m\n",
      "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\rrayy\\anaconda3\\envs\\diva\\Lib\\site-packages\\HarmonyMIDIToken\\tokenizer.py:164\u001b[39m, in \u001b[36mHarmonyMIDIToken.token_id\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m    161\u001b[39m durs = \u001b[38;5;28mlist\u001b[39m(\u001b[38;5;28mset\u001b[39m([m_dur, c_dur, b_dur]))\n\u001b[32m    162\u001b[39m durs = [item \u001b[38;5;28;01mfor\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m durs \u001b[38;5;28;01mif\u001b[39;00m item != \u001b[32m0\u001b[39m]\n\u001b[32m--> \u001b[39m\u001b[32m164\u001b[39m main_time += \u001b[38;5;28;43mmin\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdurs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m    166\u001b[39m melody_time += m_dur\n\u001b[32m    167\u001b[39m chord_time += c_dur\n",
      "\u001b[31mValueError\u001b[39m: min() arg is an empty sequence"
     ]
    }
   ],
   "source": [
    "from HarmonyMIDIToken import HarmonyMIDIToken as Tokenizer\n",
    "import os\n",
    "\n",
    "for item in tokenized_data:\n",
    "    filename = item['name']\n",
    "\n",
    "    MIDI = Tokenizer()\n",
    "    MIDI.set_midi(os.path.join(\"data\", filename))\n",
    "\n",
    "    try:\n",
    "        item['token'] = MIDI.token_id\n",
    "    except:\n",
    "        print(f\"{item['name']} ์„ ํ† ํฌ๋‚˜์ด์ฆˆ ํ•˜๋Š”๋ฐ ์‹คํŒจํ•จ.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df4c74b3",
   "metadata": {},
   "source": [
    "## ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f7b77c0c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[81, 3, 65, 1, 3, 53, 3], [0, 1, 0, 1, 1, 0, 1], [81, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [81, 1, 65, 1, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [79, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [84, 1, 60, 8, 1, 55, 1], [84, 2, 60, 8, 2, 55, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 60, 8, 2, 55, 2], [83, 1, 60, 8, 1, 55, 1], [84, 2, 60, 8, 2, 55, 2], [79, 1, 60, 8, 2, 55, 2], [0, 1, 0, 1, 0, 0, 0], [83, 2, 0, 1, 1, 0, 1], [0, 0, 60, 8, 2, 55, 2], [0, 2, 0, 1, 2, 48, 2], [84, 3, 69, 5, 3, 57, 3], [0, 1, 0, 1, 1, 0, 1], [84, 2, 69, 5, 2, 57, 2], [83, 1, 69, 5, 1, 57, 1], [84, 2, 69, 5, 2, 57, 2], [79, 1, 69, 5, 1, 57, 1], [0, 1, 0, 1, 1, 0, 1], [83, 2, 69, 5, 2, 57, 2], [0, 2, 0, 1, 2, 50, 2], [81, 2, 67, 1, 2, 55, 2], [0, 1, 0, 1, 1, 0, 1], [81, 2, 67, 1, 2, 55, 2], [83, 1, 67, 1, 1, 55, 1], [84, 2, 67, 1, 2, 55, 2], [83, 2, 67, 1, 2, 55, 2], [0, 1, 0, 1, 1, 0, 1], [83, 2, 67, 1, 2, 55, 2], [0, 2, 0, 1, 2, 48, 2], [81, 3, 65, 1, 3, 53, 3], [0, 1, 0, 1, 1, 0, 1], [81, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [81, 1, 65, 1, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [79, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [84, 1, 60, 8, 1, 55, 1], [84, 2, 60, 8, 2, 55, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 60, 8, 2, 55, 2], [83, 1, 60, 8, 1, 55, 1], [84, 2, 60, 8, 2, 55, 2], [91, 1, 60, 8, 1, 55, 1], [0, 1, 0, 1, 1, 0, 1], [83, 2, 60, 8, 2, 55, 2], [0, 2, 0, 1, 2, 48, 2], [84, 3, 69, 5, 3, 57, 3], [0, 1, 0, 1, 1, 0, 1], [84, 2, 69, 5, 2, 57, 2], [83, 1, 69, 5, 1, 57, 1], [84, 2, 69, 5, 2, 57, 2], [91, 1, 69, 5, 2, 57, 2], [0, 1, 0, 1, 0, 0, 0], [83, 2, 0, 1, 1, 0, 1], [0, 2, 69, 5, 2, 57, 2], [81, 2, 0, 1, 2, 50, 2], [0, 1, 67, 1, 2, 55, 2], [81, 2, 0, 1, 0, 0, 0], [86, 1, 0, 1, 1, 0, 1], [84, 2, 67, 1, 2, 55, 2], [86, 2, 67, 1, 1, 55, 1], [0, 0, 67, 1, 2, 55, 2], [0, 1, 67, 1, 2, 55, 2], [84, 2, 0, 1, 1, 0, 1], [84, 2, 67, 1, 2, 55, 2], [84, 2, 67, 1, 2, 48, 2]], [[77, 2, 65, 1, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [89, 1, 65, 1, 1, 53, 1], [88, 2, 65, 1, 2, 53, 2], [84, 3, 65, 1, 2, 53, 2], [0, 0, 0, 1, 3, 0, 3], [0, 2, 65, 1, 2, 53, 2], [79, 2, 65, 1, 2, 53, 2], [77, 2, 65, 1, 2, 48, 2], [77, 2, 0, 1, 2, 0, 2], [0, 2, 65, 1, 1, 48, 1], [89, 1, 65, 1, 2, 48, 2], [88, 2, 0, 1, 0, 0, 0], [84, 3, 65, 1, 2, 48, 2], [79, 2, 0, 1, 1, 0, 1], [0, 0, 65, 1, 2, 48, 2], [76, 2, 65, 1, 2, 48, 2], [77, 2, 65, 1, 2, 48, 2], [77, 2, 62, 2, 2, 50, 2], [0, 2, 0, 1, 2, 0, 2], [89, 1, 62, 2, 1, 50, 1], [88, 2, 62, 2, 2, 50, 2], [84, 3, 62, 2, 3, 50, 3], [0, 2, 0, 1, 2, 0, 2], [79, 2, 62, 2, 2, 50, 2], [84, 2, 62, 2, 2, 50, 2], [81, 2, 65, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [81, 1, 65, 1, 1, 45, 1], [79, 2, 65, 1, 2, 45, 2], [84, 3, 65, 1, 3, 45, 3], [79, 2, 65, 1, 2, 45, 2], [79, 2, 65, 1, 2, 45, 2], [77, 2, 65, 1, 2, 45, 2]], [[78, 2, 63, 2, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [78, 1, 63, 2, 1, 51, 2], [78, 1, 63, 2, 1, 0, 0], [78, 1, 63, 2, 1, 0, 1], [85, 2, 63, 2, 2, 51, 2], [0, 3, 0, 1, 3, 0, 3], [80, 2, 63, 2, 2, 51, 2], [78, 2, 63, 2, 2, 51, 2], [78, 2, 66, 1, 2, 54, 2], [0, 2, 0, 1, 2, 0, 2], [78, 1, 66, 1, 1, 54, 2], [78, 1, 66, 1, 1, 0, 0], [78, 1, 66, 1, 1, 0, 1], [77, 2, 66, 1, 2, 54, 2], [0, 3, 0, 1, 3, 0, 3], [78, 2, 66, 1, 2, 54, 2], [77, 2, 66, 1, 2, 54, 2], [75, 4, 71, 1, 4, 47, 4], [73, 1, 71, 1, 1, 47, 1], [75, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [75, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [75, 1, 71, 1, 1, 47, 1], [75, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [75, 4, 71, 1, 4, 47, 4], [77, 4, 61, 1, 4, 49, 4], [75, 1, 61, 1, 1, 49, 1], [77, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [77, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [77, 1, 61, 1, 1, 49, 1], [75, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [77, 2, 61, 1, 2, 49, 2], [78, 2, 61, 1, 2, 49, 2]], [[77, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 65, 2, 1, 53, 1], [80, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 65, 2, 1, 53, 1], [80, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [80, 1, 63, 1, 1, 51, 1], [82, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 63, 1, 1, 51, 1], [82, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [79, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [77, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 61, 1, 1, 49, 1], [89, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [88, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [87, 1, 61, 1, 1, 49, 1], [86, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [85, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 60, 1, 1, 48, 1], [79, 1, 60, 1, 1, 48, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 60, 1, 1, 48, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [79, 1, 0, 1, 1, 50, 1], [0, 1, 0, 1, 1, 0, 1], [76, 1, 0, 1, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [77, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 65, 2, 1, 53, 1], [84, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 65, 2, 1, 53, 1], [80, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [92, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [91, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [80, 1, 63, 1, 1, 51, 1], [82, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 63, 1, 1, 51, 1], [91, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [0, -1, 0, 1, 1, 0, 1], [75, 1, 0, 1, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0], [77, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 61, 1, 1, 49, 1], [89, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [88, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [87, 1, 61, 1, 1, 49, 1], [86, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [85, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 61, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 60, 1, 1, 48, 1], [82, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 60, 1, 1, 48, 1], [91, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [88, 1, 60, 1, 1, 48, 1], [0, 1, 0, 1, 1, 0, 1], [84, 1, 0, 1, 1, 50, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 0, 1, 1, 52, 1]], [128, 100, 10, 91, 2, 10, -1, 2, 10, 91, 2, 10, -1, 1, 10, 89, 1, 10, -1, 2, 10, 94, 2, 10, 93, 1, 10, -1, 1, 10, 89, 1, 10, -1, 1, 10, 86, 2, 10, -1, 4, 10, 82, 1, 10, -1, -1, 10, 86, 1, 10, -1, 1, 10, 89, 1, 10, 91, 1, 10, -1, 1, 10, 89, 1, 10, -1, 2, 10, 86, 1, 10, -1, 1, 10, 86, 2, 10, -1, 4, 10, 82, 1, 10, -1, -1, 10, 86, 1, 10, -1, 1, 10, 87, 1, 10, 86, 1, 10, -1, 1, 10, 87, 1, 10, -1, 2, 10, 86, 1, 10, -1, 1, 10, 84, 2, 10, -1, 1, 10, 82, 1, 10, -1, 2, 10, 86, 1, 10, -1, 1, 10, 87, 1, 10, -1, 0, 10, 86, 1, 10, -1, 1, 10, 84, 1, 10, -1, 0, 10, 90, 1, 10, -1, 1, 10, 91, 2, 10, -1, 1, 10, 94, 1, 10, -1, 1, 10, 98, 1, 10, 93, 2, 10, -1, 1, 10, 93, 1, 10, -1, 1, 10, 91, 2, 10, 89, 1, 10, -1, 1, 10, 82, 2, 10, -1, 4, 10, 79, 1, 10, -1, -1, 10, 82, 1, 10, -1, 1, 10, 89, 1, 10, 86, 1, 10, -1, 1, 10, 84, 1, 10, -1, 2, 10, 86, 1, 10, -1, 1, 10, 81, 2, 10, -1, 4, 10, 82, 1, 10, -1, -1, 10, 84, 1, 10, -1, 1, 10, 89, 1, 10, 91, 1, 10, -1, 1, 10, 82, 1, 10, -1, 2, 10, 84, 1, 10, -1, 1, 10, 84, 2, 10, -1, 1, 10, 82, 1, 10, -1, 2, 10, 93, 1, 10, -1, 1, 10, 84, 1, 10, -1, 0, 10, 86, 1, 10, -1, 1, 10, 93, 1, 10, -1, 0, 10, 90, 1, 200, 20, 63, 1, 2, 20, -1, 2, 20, 63, 1, 2, 20, -1, 1, 20, 62, 2, 1, 20, -1, 2, 20, 62, 2, 2, 20, 62, 2, 1, 20, -1, 1, 20, 62, 5, 1, 20, -1, 1, 20, 67, 2, 2, 20, -1, 4, 20, 67, 2, 1, 20, -1, 1, 20, 67, 2, 1, 20, 67, 2, 1, 20, -1, 1, 20, 67, 2, 1, 20, -1, 2, 20, 67, 2, 1, 20, -1, 1, 20, 60, 2, 2, 20, -1, 4, 20, 60, 2, 1, 20, -1, 1, 20, 60, 2, 1, 20, 60, 2, 1, 20, -1, 1, 20, 60, 2, 1, 20, -1, 2, 20, 60, 2, 1, 20, -1, 1, 20, 62, 1, 2, 20, -1, 1, 20, 62, 1, 1, 20, -1, 2, 20, 62, 1, 1, 20, -1, 1, 20, 62, 1, 1, 20, -1, 0, 20, 62, 1, 1, 20, -1, 1, 20, 62, 1, 1, 20, -1, 0, 20, 62, 1, 1, 20, -1, 1, 20, 63, 1, 2, 20, -1, 1, 20, 63, 1, 1, 20, -1, 1, 20, 63, 1, 1, 20, 62, 2, 2, 20, -1, 1, 20, 62, 2, 1, 20, -1, 1, 20, 62, 2, 2, 20, 65, 1, 1, 20, -1, 1, 20, 67, 2, 2, 20, -1, 4, 20, 67, 2, 1, 20, -1, 1, 20, 67, 2, 1, 20, 67, 2, 1, 20, -1, 1, 20, 67, 2, 1, 20, -1, 2, 20, 67, 2, 1, 20, -1, 1, 20, 65, 1, 2, 20, -1, 4, 20, 65, 1, 1, 20, -1, 1, 20, 65, 1, 1, 20, 65, 1, 1, 20, -1, 1, 20, 65, 1, 1, 20, -1, 2, 20, 65, 1, 1, 20, -1, 1, 20, 62, 1, 2, 20, -1, 1, 20, 62, 1, 1, 20, -1, 2, 20, 62, 1, 1, 20, -1, 1, 20, 62, 1, 1, 20, -1, 0, 20, 62, 1, 1, 20, -1, 1, 20, 62, 1, 1, 20, -1, 0, 20, 62, 1, 1, 300, 10, 51, 2, 10, -1, 2, 10, 51, 2, 10, -1, 1, 10, 50, 2, 10, -1, 1, 10, 50, 2, 10, 50, 1, 10, -1, 1, 10, 53, 1, 10, -1, 1, 10, 55, 2, 10, -1, 4, 10, 55, 1, 10, -1, 1, 10, 55, 3, 10, -1, 1, 10, 55, 2, 10, -1, 1, 10, 48, 2, 10, -1, 4, 10, 48, 1, 10, -1, 1, 10, 48, 3, 10, -1, 1, 10, 48, 2, 10, -1, 1, 10, 50, 2, 10, -1, 4, 10, 50, 1, 10, -1, 1, 10, 54, 3, 10, -1, 1, 10, 54, 2, 10, -1, 1, 10, 51, 2, 10, -1, 1, 10, 51, 1, 10, -1, 2, 10, 50, 2, 10, -1, 1, 10, 50, 1, 10, -1, 1, 10, 50, 2, 10, 53, 1, 10, -1, 1, 10, 55, 2, 10, -1, 4, 10, 55, 1, 10, -1, 1, 10, 55, 3, 10, -1, 1, 10, 55, 2, 10, -1, 1, 10, 53, 2, 10, -1, 4, 10, 53, 1, 10, -1, 1, 10, 53, 3, 10, -1, 1, 10, 53, 2, 10, -1, 1, 10, 50, 2, 10, -1, 4, 10, 50, 1, 10, -1, 1, 10, 54, 3, 10, -1, 1, 10, 54, 2], [[88, 2, 60, 4, 2, 48, 2], [0, 0, 0, 1, 0, 0, 1], [86, 1, 60, 4, 1, 48, 1], [0, -1, 60, 4, 2, 0, 1], [88, 1, 0, 1, 0, 0, 0], [86, 2, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 48, 1], [83, 1, 60, 4, 1, 0, 1], [0, 1, 0, 1, 1, 50, 2], [81, 2, 71, 5, 2, 0, 1], [0, 0, 0, 1, 0, 50, 1], [81, 1, 71, 5, 1, 0, 1], [0, -1, 71, 5, 2, 50, 1], [83, 1, 0, 1, 0, 0, 0], [81, 2, 0, 1, 1, 0, 0], [0, 1, 71, 5, 1, 0, 1], [79, 1, 0, 1, 1, 52, 2], [0, 1, 64, 2, 2, 0, 0], [76, 2, 0, 1, 0, 0, 1], [0, 1, 0, 1, 1, 52, 1], [74, 1, 64, 2, 1, 0, 1], [0, 1, 0, 1, 1, 52, 1], [76, 1, 64, 2, 1, 0, 1], [0, 1, 0, 1, 1, 52, 2], [76, 2, 64, 2, 2, 0, 0], [0, 3, 0, 1, 3, 0, 3], [83, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [88, 2, 60, 4, 2, 48, 2], [0, 0, 0, 1, 0, 0, 1], [86, 1, 60, 4, 1, 48, 1], [0, -1, 60, 4, 2, 0, 1], [88, 1, 0, 1, 0, 0, 0], [86, 2, 0, 1, 0, 48, 1], [0, 0, 0, 1, 0, 0, 1], [83, 1, 60, 4, 1, 50, 2], [0, 1, 0, 1, 1, 0, 0], [81, 2, 71, 5, 2, 0, 1], [0, 0, 0, 1, 0, 50, 1], [81, 1, 71, 5, 1, 0, 1], [0, -1, 71, 5, 2, 50, 1], [83, 1, 0, 1, 0, 0, 0], [81, 2, 0, 1, 0, 0, 0], [0, 1, 0, 1, 1, 0, 1], [79, 1, 71, 5, 1, 52, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 64, 2, 2, 52, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [79, 1, 64, 2, 1, 52, 2], [0, 1, 0, 1, 1, 0, 0], [76, 2, 64, 2, 2, 0, 1], [0, 0, 0, 1, 0, 52, 2], [0, 1, 0, 1, 1, 0, 1], [74, 2, 64, 2, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [88, 2, 60, 4, 2, 48, 1], [0, 0, 0, 1, 0, 0, 1], [86, 1, 60, 4, 1, 48, 1], [0, -1, 60, 4, 2, 0, 1], [88, 1, 0, 1, 0, 0, 0], [86, 2, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 50, 2], [88, 1, 60, 4, 1, 0, 1], [0, 1, 0, 1, 1, 50, 1], [90, 2, 71, 5, 2, 0, 1], [0, 0, 0, 1, 0, 50, 1], [88, 1, 71, 5, 1, 0, 1], [0, -1, 71, 5, 2, 52, 2], [90, 1, 0, 1, 1, 0, 0], [88, 2, 71, 5, 1, 0, 0], [0, 1, 0, 1, 1, 0, 1], [90, 1, 64, 2, 2, 52, 1], [0, 1, 0, 1, 0, 0, 1], [91, 2, 0, 1, 1, 52, 1], [0, 1, 64, 2, 1, 0, 1], [90, 1, 0, 1, 1, 50, 2], [0, 1, 64, 2, 1, 0, 0], [91, 1, 0, 1, 1, 0, 1], [0, 1, 71, 5, 2, 50, 2], [86, 2, 0, 1, 0, 0, 0], [0, 1, 0, 1, 1, 0, 1], [83, 2, 71, 5, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [88, 2, 60, 4, 2, 48, 1], [0, 0, 0, 1, 0, 0, 1], [86, 1, 60, 4, 1, 48, 1], [0, -1, 60, 4, 2, 0, 1], [88, 1, 0, 1, 0, 0, 0], [86, 2, 0, 1, 0, 50, 2], [0, 0, 0, 1, 0, 0, 1], [83, 1, 60, 4, 1, 50, 1], [0, 1, 0, 1, 1, 0, 1], [81, 2, 71, 5, 2, 50, 1], [0, 0, 0, 1, 0, 0, 1], [81, 1, 71, 5, 1, 52, 2], [0, -1, 71, 5, 2, 0, 0], [83, 1, 0, 1, 0, 0, 0], [81, 2, 0, 1, 1, 0, 0], [0, 1, 71, 5, 1, 0, 1], [79, 1, 0, 1, 1, 52, 1], [0, 1, 64, 2, 2, 0, 1], [76, 2, 0, 1, 0, 52, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 64, 2, 1, 52, 2], [0, 1, 0, 1, 1, 0, 0]], [[0, 2, 65, 1, 4, 41, 4], [83, 2, 0, 1, 0, 0, 0], [84, 2, 65, 1, 2, 29, 4], [0, 4, 0, 1, 2, 0, 0], [0, 0, 65, 1, 4, 41, 4], [83, 2, 65, 1, 2, 29, 2], [84, 2, 0, 1, 1, 0, 1], [0, 1, 67, 1, 1, 43, 1], [84, 1, 67, 1, 1, 43, 1], [84, 1, 67, 1, 2, 50, 2], [83, 2, 0, 1, 0, 0, 0], [91, 2, 67, 1, 2, 43, 2], [93, 3, 67, 1, 3, 43, 3], [91, 3, 67, 1, 3, 43, 3], [86, 3, 67, 1, 3, 43, 3], [0, 4, 0, 1, 2, 36, 2], [0, 0, 69, 2, 4, 45, 4], [88, 2, 69, 2, 2, 33, 4], [86, 2, 0, 1, 2, 0, 0], [0, 4, 69, 2, 4, 45, 4], [88, 2, 69, 2, 2, 33, 2], [86, 2, 0, 1, 1, 0, 1], [0, 1, 67, 1, 1, 43, 1], [83, 1, 67, 1, 1, 43, 1], [83, 1, 67, 1, 2, 50, 2], [84, 2, 67, 1, 2, 43, 2], [91, 2, 67, 1, 3, 43, 3], [89, 3, 0, 1, 0, 0, 0], [88, 3, 67, 1, 3, 43, 3], [88, 3, 67, 1, 3, 43, 3], [0, 4, 0, 1, 2, 36, 2], [83, 2, 65, 1, 4, 41, 4], [84, 2, 65, 1, 2, 29, 4], [0, 4, 0, 1, 2, 0, 0], [0, 0, 65, 1, 4, 41, 4], [83, 2, 65, 1, 3, 29, 3], [84, 3, 0, 1, 0, 0, 0], [84, 1, 67, 1, 1, 43, 1], [84, 1, 67, 1, 1, 43, 1], [83, 2, 67, 1, 2, 50, 2], [91, 2, 67, 1, 2, 43, 2], [93, 3, 67, 1, 3, 43, 3], [91, 3, 67, 1, 3, 43, 3], [86, 3, 67, 1, 3, 43, 3], [0, 4, 0, 1, 2, 36, 2], [88, 2, 69, 2, 4, 45, 4], [86, 2, 69, 2, 2, 33, 4], [0, 4, 0, 1, 2, 0, 0], [0, 0, 69, 2, 4, 45, 4], [88, 2, 69, 2, 2, 33, 2], [86, 2, 0, 1, 1, 0, 1], [0, 1, 67, 1, 1, 43, 1], [83, 1, 67, 1, 1, 43, 1], [83, 1, 67, 1, 2, 50, 2], [84, 2, 0, 1, 0, 0, 0], [91, 2, 67, 1, 2, 43, 2], [89, 3, 67, 1, 3, 43, 3], [88, 3, 67, 1, 3, 43, 3], [88, 3, 67, 1, 3, 43, 3], [88, 3, 67, 1, 3, 36, 2]], [[0, 2, 69, 8, 2, 52, 2], [73, 2, 0, 1, 1, 0, 1], [0, 0, 69, 8, 2, 52, 2], [83, 2, 0, 1, 1, 0, 1], [0, 1, 69, 8, 3, 52, 3], [76, 3, 0, 1, 0, 0, 0], [76, 1, 0, 1, 4, 0, 4], [0, 1, 0, 1, 0, 0, 0], [75, 2, 0, 1, 0, 0, 0], [76, 1, 71, 1, 1, 54, 1], [76, 2, 71, 1, 2, 54, 2], [76, 2, 71, 1, 2, 54, 2], [83, 2, 71, 1, 2, 54, 2], [81, 1, 71, 1, 1, 54, 1], [0, 1, 0, 1, 1, 0, 1], [80, 2, 71, 1, 2, 54, 2], [80, 1, 71, 1, 1, 54, 1], [0, 1, 0, 1, 1, 0, 1], [81, 2, 71, 1, 2, 54, 2], [0, 4, 0, 1, 2, 0, 2], [0, 0, 0, 1, 2, 56, 2], [73, 2, 0, 1, 1, 0, 1], [0, 0, 0, 1, 2, 56, 2], [83, 2, 0, 1, 1, 0, 1], [0, 1, 0, 1, 3, 56, 3], [76, 3, 0, 1, 0, 0, 0], [76, 1, 0, 1, 4, 0, 4], [0, 1, 0, 1, 0, 0, 0], [75, 2, 71, 1, 1, 54, 1], [0, 0, 71, 1, 3, 54, 3], [76, 1, 0, 1, 1, 0, 1], [76, 3, 71, 1, 2, 54, 2], [0, -1, 71, 1, 2, 54, 2], [76, 2, 0, 1, 0, 0, 0], [83, 2, 0, 1, 0, 0, 0], [81, 2, 71, 1, 2, 54, 2], [80, 2, 71, 1, 2, 54, 2], [80, 2, 71, 1, 2, 54, 2], [81, 2, 0, 1, 2, 0, 2], [0, 4, 69, 8, 2, 52, 2], [0, 0, 0, 1, 1, 0, 1], [73, 2, 69, 8, 2, 52, 2], [83, 2, 0, 1, 1, 0, 1], [0, 0, 69, 8, 3, 52, 3], [0, 1, 0, 1, 4, 0, 4], [76, 3, 0, 1, 0, 0, 0], [76, 1, 71, 1, 1, 54, 1], [0, 1, 71, 1, 2, 54, 2], [75, 2, 71, 1, 2, 54, 2], [76, 1, 71, 1, 2, 54, 2], [76, 2, 0, 1, 0, 0, 0], [76, 2, 71, 1, 1, 54, 1], [83, 2, 0, 1, 1, 0, 1], [81, 1, 71, 1, 2, 54, 2], [0, 1, 71, 1, 1, 54, 1], [80, 2, 0, 1, 1, 0, 1], [0, 0, 71, 1, 2, 54, 2], [80, 1, 0, 1, 2, 0, 2], [0, 1, 0, 1, 0, 0, 0], [81, 2, 0, 1, 2, 56, 2], [0, 4, 0, 1, 1, 0, 1], [0, 0, 0, 1, 2, 56, 2], [73, 2, 0, 1, 1, 0, 1], [0, 0, 0, 1, 3, 56, 3], [83, 2, 0, 1, 4, 0, 4], [0, 1, 0, 1, 0, 0, 0], [76, 3, 0, 1, 0, 0, 0], [76, 1, 71, 1, 1, 54, 1], [0, 1, 71, 1, 2, 54, 2], [75, 2, 0, 1, 2, 0, 2], [76, 1, 71, 1, 2, 54, 2], [76, 2, 71, 1, 1, 54, 1], [76, 2, 0, 1, 1, 0, 1], [83, 2, 71, 1, 2, 54, 2], [81, 1, 71, 1, 1, 54, 1], [0, 1, 0, 1, 1, 0, 1], [80, 2, 71, 1, 2, 54, 2]], [[78, 2, 63, 2, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [78, 2, 63, 2, 2, 51, 2], [85, 2, 70, 2, 2, 46, 2], [77, 2, 70, 2, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [77, 2, 70, 2, 2, 46, 2], [77, 1, 70, 2, 1, 46, 1], [78, 1, 71, 1, 1, 47, 1], [78, 1, 71, 1, 1, 47, 1], [0, 7, 0, 1, 7, 0, 7], [83, 2, 61, 3, 2, 49, 2], [83, 2, 61, 3, 2, 49, 2], [83, 2, 61, 3, 2, 49, 2], [80, 1, 61, 3, 1, 49, 1], [82, 1, 63, 2, 1, 51, 1], [82, 1, 63, 2, 1, 51, 1], [0, 3, 0, 1, 3, 0, 3], [78, 2, 63, 2, 2, 51, 2], [85, 2, 70, 2, 2, 46, 2], [77, 2, 70, 2, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [77, 2, 70, 2, 2, 46, 2], [77, 1, 70, 2, 1, 46, 1], [78, 1, 71, 1, 1, 47, 1], [78, 2, 71, 1, 2, 47, 2], [0, 6, 0, 1, 6, 0, 6], [82, 2, 66, 1, 2, 54, 2], [82, 2, 66, 1, 2, 54, 2], [82, 2, 66, 1, 2, 54, 2], [83, 1, 68, 2, 1, 56, 1], [82, 1, 66, 1, 1, 54, 1], [82, 1, 66, 1, 1, 54, 1], [0, 3, 0, 1, 3, 0, 3], [78, 2, 63, 2, 2, 51, 2], [85, 2, 70, 1, 2, 46, 2], [77, 2, 70, 1, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [77, 2, 70, 1, 2, 46, 2], [77, 1, 70, 1, 1, 46, 1], [78, 1, 71, 1, 1, 47, 1], [78, 1, 71, 1, 1, 47, 1], [0, 7, 0, 1, 7, 0, 7], [83, 2, 61, 3, 2, 49, 2], [83, 2, 61, 3, 2, 49, 2], [83, 2, 61, 3, 2, 49, 2], [80, 1, 61, 3, 1, 49, 1], [82, 1, 63, 2, 1, 51, 1], [82, 1, 63, 2, 1, 51, 1], [0, 3, 0, 1, 3, 0, 3], [78, 2, 68, 2, 2, 44, 2], [85, 2, 68, 2, 2, 44, 2], [77, 2, 70, 2, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [73, 2, 70, 2, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [75, 1, 71, 1, 1, 47, 1], [75, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [75, 2, 71, 1, 2, 47, 2], [73, 2, 70, 2, 2, 46, 2], [75, 2, 70, 2, 2, 46, 2]], [[87, 4, 63, 2, 4, 46, 4], [85, 2, 63, 2, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [83, 4, 63, 2, 4, 46, 4], [82, 2, 63, 2, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [78, 1, 71, 1, 1, 47, 1], [78, 1, 71, 1, 1, 47, 1], [0, 5, 0, 1, 5, 0, 5], [75, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [78, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [82, 1, 66, 1, 1, 46, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 66, 1, 1, 46, 1], [82, 1, 68, 2, 1, 44, 1], [82, 1, 68, 2, 1, 44, 1], [0, 3, 0, 1, 3, 0, 3], [75, 2, 68, 1, 2, 44, 2], [75, 1, 68, 2, 1, 44, 1], [0, 1, 0, 1, 1, 0, 1], [80, 2, 68, 2, 2, 44, 2], [0, 2, 0, 1, 2, 0, 2], [78, 2, 63, 2, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [73, 1, 71, 1, 1, 47, 1], [73, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 71, 1, 2, 47, 2], [83, 2, 71, 1, 2, 47, 2], [82, 2, 71, 1, 2, 47, 2], [80, 2, 66, 1, 2, 46, 2], [78, 2, 66, 1, 2, 46, 2]], [[76, 2, 60, 1, 2, 48, 2], [0, 1, 60, 1, 1, 48, 1], [83, 2, 60, 1, 2, 48, 2], [76, 3, 60, 1, 3, 48, 3], [76, 2, 62, 1, 2, 50, 2], [0, 1, 62, 1, 1, 50, 1], [86, 2, 62, 1, 2, 50, 2], [84, 3, 62, 1, 3, 50, 3], [83, 2, 64, 2, 2, 52, 2], [88, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [88, 2, 64, 2, 2, 52, 2], [0, 1, 0, 1, 1, 0, 1], [86, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [88, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [86, 1, 64, 2, 1, 52, 1], [88, 2, 64, 2, 2, 52, 2], [83, 2, 64, 2, 2, 52, 2], [76, 2, 69, 2, 2, 45, 2], [0, 1, 69, 2, 1, 45, 1], [83, 2, 69, 2, 2, 45, 2], [76, 2, 69, 2, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 69, 2, 2, 45, 2], [0, 1, 69, 2, 1, 45, 1], [83, 2, 69, 2, 2, 45, 2], [84, 2, 69, 2, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [83, 2, 64, 2, 2, 52, 2], [84, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [84, 2, 64, 2, 2, 52, 2], [0, 1, 0, 1, 1, 0, 2], [83, 1, 64, 2, 1, 0, 0], [0, 1, 0, 1, 1, 52, 1], [84, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 64, 2, 1, 52, 1], [81, 2, 64, 2, 2, 52, 2], [83, 2, 64, 2, 2, 52, 2], [76, 2, 60, 1, 2, 48, 2], [0, 1, 60, 1, 1, 48, 1], [83, 2, 60, 1, 2, 48, 2], [76, 3, 60, 1, 3, 48, 3], [76, 2, 62, 1, 2, 50, 2], [0, 1, 62, 1, 1, 50, 1], [86, 2, 62, 1, 2, 50, 2], [84, 3, 62, 1, 3, 50, 3], [83, 2, 64, 2, 2, 52, 2], [88, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [88, 2, 64, 2, 2, 52, 2], [0, 1, 0, 1, 1, 0, 1], [86, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [88, 1, 64, 2, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [86, 1, 64, 2, 1, 52, 1], [88, 2, 64, 2, 2, 52, 2], [83, 2, 64, 2, 2, 52, 2], [76, 2, 69, 2, 2, 45, 2], [0, 1, 69, 2, 1, 45, 1], [83, 2, 69, 2, 2, 45, 2], [76, 2, 69, 2, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 69, 2, 2, 45, 2], [0, 1, 69, 2, 1, 45, 1], [83, 2, 69, 2, 2, 45, 2], [86, 2, 69, 2, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [88, 2, 64, 2, 2, 52, 2]], [[85, 2, 69, 1, 2, 45, 2], [0, 3, 0, 1, 3, 0, 3], [81, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [80, 2, 69, 1, 2, 45, 2], [73, 1, 69, 1, 1, 45, 1], [0, 1, 0, 1, 1, 0, 1], [80, 2, 69, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 66, 2, 2, 42, 2], [73, 1, 66, 2, 1, 42, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 66, 2, 1, 42, 1], [0, 2, 0, 1, 2, 0, 2], [80, 2, 66, 2, 2, 42, 2], [81, 1, 66, 2, 1, 42, 1], [0, 1, 0, 1, 1, 0, 1], [80, 1, 66, 2, 1, 42, 1], [0, 1, 0, 1, 1, 0, 1], [87, 2, 66, 2, 2, 42, 2], [88, 2, 61, 2, 2, 49, 2], [0, 3, 0, 1, 3, 0, 3], [80, 2, 61, 2, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [78, 2, 61, 2, 2, 49, 2], [80, 1, 61, 2, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [80, 2, 61, 2, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 71, 1, 2, 47, 2], [76, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [76, 2, 71, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 71, 1, 2, 47, 2], [76, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [76, 2, 71, 1, 2, 47, 2], [75, 2, 71, 1, 2, 47, 2], [85, 2, 69, 1, 2, 45, 2], [0, 3, 0, 1, 3, 0, 3], [85, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [81, 2, 69, 1, 2, 45, 2], [73, 1, 69, 1, 1, 45, 1], [0, 1, 0, 1, 1, 0, 1], [80, 2, 69, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 66, 2, 2, 42, 2], [73, 2, 66, 2, 1, 42, 1], [0, 0, 0, 1, 1, 0, 1], [87, 1, 66, 2, 1, 42, 1], [0, 2, 0, 1, 2, 0, 2], [88, 2, 66, 2, 2, 42, 2], [87, 1, 66, 2, 1, 42, 1], [0, 1, 0, 1, 1, 0, 1], [83, 2, 66, 2, 1, 42, 1], [0, 0, 0, 1, 1, 0, 1], [80, 1, 66, 2, 2, 42, 2], [0, 1, 0, 1, 0, 0, 0], [76, 2, 61, 2, 2, 49, 2], [0, 3, 0, 1, 3, 0, 3], [76, 2, 61, 2, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 61, 2, 2, 49, 2], [78, 1, 61, 2, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [78, 2, 61, 2, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 71, 1, 2, 47, 2], [76, 1, 71, 1, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [76, 2, 71, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 71, 1, 2, 47, 2], [0, 2, 71, 1, 1, 47, 1], [0, 0, 0, 1, 1, 0, 1], [76, 2, 71, 1, 2, 47, 2], [75, 2, 71, 1, 2, 47, 2]], [[74, 2, 62, 1, 2, 50, 2], [0, 4, 0, 1, 4, 0, 4], [73, 2, 62, 1, 2, 50, 2], [81, 2, 62, 1, 2, 50, 2], [0, 2, 0, 1, 2, 0, 2], [81, 2, 62, 1, 2, 50, 2], [0, 1, 0, 1, 1, 0, 1], [78, 1, 62, 1, 1, 50, 1], [78, 1, 62, 1, 1, 50, 1], [0, 1, 0, 1, 1, 0, 1], [74, 2, 71, 2, 2, 47, 2], [73, 2, 71, 2, 2, 47, 2], [74, 2, 71, 2, 2, 47, 2], [81, 2, 71, 2, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 71, 2, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [78, 1, 62, 1, 1, 54, 1], [78, 1, 62, 1, 1, 54, 1], [0, 5, 0, 1, 5, 0, 5], [74, 2, 62, 1, 2, 54, 2], [81, 2, 62, 1, 2, 54, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 62, 1, 2, 54, 2], [0, 1, 0, 1, 1, 0, 1], [78, 1, 69, 1, 1, 49, 1], [78, 1, 69, 1, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [74, 2, 69, 1, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [74, 2, 69, 1, 2, 49, 2], [81, 2, 69, 1, 2, 49, 2], [74, 2, 69, 1, 2, 49, 2], [73, 2, 69, 1, 2, 49, 2], [74, 2, 69, 1, 2, 49, 2]], [[80, 4, 65, 2, 4, 53, 4], [80, 2, 65, 2, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [79, 4, 65, 2, 4, 53, 4], [80, 2, 65, 2, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [87, 1, 63, 1, 1, 51, 1], [87, 1, 63, 1, 1, 51, 1], [0, 3, 0, 1, 3, 0, 3], [80, 2, 63, 1, 2, 51, 2], [79, 2, 63, 1, 2, 51, 2], [80, 2, 63, 1, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 63, 1, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [84, 1, 61, 1, 1, 49, 1], [84, 1, 61, 1, 1, 49, 1], [0, 5, 0, 1, 5, 0, 5], [79, 2, 61, 1, 2, 49, 2], [80, 2, 61, 1, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 61, 1, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [84, 1, 68, 1, 1, 48, 1], [84, 1, 68, 1, 1, 48, 1], [0, 3, 0, 1, 3, 0, 3], [79, 2, 68, 1, 2, 48, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 68, 1, 2, 48, 2], [80, 2, 68, 1, 2, 48, 2], [79, 2, 68, 1, 2, 48, 2], [80, 2, 68, 1, 2, 48, 2], [0, 4, 65, 2, 4, 53, 4], [80, 2, 65, 2, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [79, 4, 65, 2, 4, 53, 4], [80, 2, 65, 2, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [87, 1, 63, 1, 1, 51, 1], [87, 1, 63, 1, 1, 51, 1], [0, 3, 0, 1, 3, 0, 3], [80, 2, 63, 1, 2, 51, 2], [79, 2, 63, 1, 2, 51, 2], [80, 2, 63, 1, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [87, 2, 63, 1, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [84, 1, 61, 1, 1, 49, 1], [84, 1, 61, 1, 1, 49, 1], [0, 5, 0, 1, 5, 0, 5], [79, 2, 61, 1, 2, 49, 2], [80, 1, 61, 1, 1, 49, 1], [0, 2, 0, 1, 2, 0, 2], [87, 2, 61, 1, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [79, 1, 68, 1, 1, 48, 1], [79, 1, 68, 1, 1, 48, 1], [0, 3, 0, 1, 3, 0, 3], [79, 2, 68, 1, 2, 48, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 68, 1, 2, 48, 2], [80, 2, 68, 1, 2, 48, 2], [79, 2, 68, 1, 2, 48, 2], [80, 2, 68, 1, 2, 48, 2]], [[75, 4, 60, 5, 4, 48, 4], [0, 1, 0, 1, 1, 0, 1], [82, 2, 60, 5, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [74, 2, 60, 5, 2, 48, 2], [75, 2, 60, 5, 2, 48, 2], [0, 4, 0, 1, 4, 0, 4], [74, 2, 63, 1, 2, 46, 2], [75, 1, 63, 1, 1, 46, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 63, 1, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [74, 2, 63, 1, 2, 46, 2], [75, 1, 63, 1, 1, 46, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 63, 1, 2, 46, 2], [74, 2, 63, 1, 2, 46, 2], [75, 4, 68, 1, 4, 44, 4], [0, 1, 0, 1, 1, 0, 1], [82, 2, 68, 1, 2, 44, 2], [0, 1, 0, 1, 1, 0, 1], [74, 2, 68, 1, 2, 44, 2], [75, 2, 68, 1, 2, 44, 2], [0, 4, 0, 1, 4, 0, 4], [80, 2, 65, 2, 2, 53, 2], [79, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [79, 2, 65, 2, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 65, 2, 2, 53, 2], [79, 1, 65, 2, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [79, 2, 65, 2, 2, 53, 2], [74, 2, 65, 2, 2, 53, 2], [75, 4, 60, 5, 4, 48, 4], [0, 1, 0, 1, 1, 0, 1], [82, 2, 60, 5, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [74, 2, 60, 5, 2, 48, 2], [75, 2, 60, 5, 2, 48, 2], [0, 4, 0, 1, 4, 0, 4], [74, 2, 63, 1, 2, 46, 2], [75, 1, 63, 1, 1, 46, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 63, 1, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [74, 2, 63, 1, 2, 46, 2], [75, 1, 63, 1, 1, 46, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 63, 1, 2, 46, 2], [77, 2, 63, 1, 2, 46, 2], [79, 4, 68, 1, 4, 44, 4], [0, 1, 0, 1, 1, 0, 1], [79, 2, 68, 1, 2, 44, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 68, 1, 2, 44, 2], [86, 2, 68, 1, 2, 44, 2], [0, 4, 0, 1, 4, 0, 4], [87, 2, 65, 2, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [87, 2, 65, 2, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [87, 2, 65, 2, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [86, 2, 65, 2, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [86, 2, 65, 2, 2, 53, 2]], [[79, 2, 60, 1, 4, 48, 4], [0, 3, 0, 1, 0, 0, 0], [86, 2, 0, 1, 1, 0, 1], [0, 0, 60, 1, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [78, 2, 62, 1, 2, 50, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 62, 1, 2, 50, 2], [0, 3, 0, 1, 3, 0, 3], [79, 2, 64, 2, 4, 52, 4], [91, 2, 0, 1, 0, 0, 0], [90, 2, 64, 2, 2, 52, 4], [86, 2, 0, 1, 2, 0, 0], [83, 2, 64, 2, 4, 52, 4], [86, 2, 0, 1, 0, 0, 0], [79, 2, 62, 1, 2, 50, 4], [78, 2, 0, 1, 2, 0, 0], [79, 2, 60, 1, 4, 48, 4], [0, 3, 0, 1, 0, 0, 0], [86, 2, 0, 1, 1, 0, 1], [0, 1, 60, 1, 2, 48, 2], [78, 2, 0, 1, 1, 0, 1], [0, 0, 62, 1, 2, 50, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 62, 1, 2, 50, 2], [0, 3, 0, 1, 3, 0, 3], [78, 2, 64, 2, 4, 45, 4], [79, 2, 0, 1, 0, 0, 0], [81, 2, 64, 2, 2, 45, 4], [83, 2, 0, 1, 2, 0, 0], [79, 2, 64, 2, 2, 45, 4], [78, 2, 64, 2, 2, 0, 0], [79, 2, 64, 2, 2, 47, 4], [78, 2, 64, 2, 2, 0, 0], [79, 2, 60, 1, 4, 48, 4], [0, 3, 0, 1, 0, 0, 0], [86, 2, 0, 1, 1, 0, 1], [0, 1, 60, 1, 2, 48, 2], [78, 2, 0, 1, 1, 0, 1], [0, 0, 62, 1, 2, 50, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 62, 1, 2, 50, 2], [0, 3, 0, 1, 3, 0, 3], [79, 2, 64, 2, 4, 52, 4], [91, 2, 0, 1, 0, 0, 0], [90, 2, 64, 2, 2, 52, 2], [79, 2, 64, 2, 2, 0, 2], [88, 2, 64, 2, 2, 52, 2], [86, 2, 64, 2, 2, 52, 2], [83, 2, 64, 2, 2, 52, 2], [79, 2, 64, 2, 2, 52, 2], [76, 2, 69, 2, 4, 45, 4], [0, 3, 0, 1, 0, 0, 0], [83, 2, 0, 1, 1, 0, 1], [0, 1, 69, 2, 2, 45, 2], [81, 2, 0, 1, 1, 0, 1], [0, 0, 71, 2, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [78, 2, 71, 2, 2, 47, 2], [0, 3, 0, 1, 3, 0, 3], [76, 2, 60, 1, 4, 48, 4], [79, 1, 0, 1, 0, 0, 0], [0, 1, 60, 1, 2, 48, 2], [79, 2, 0, 1, 0, 0, 0], [0, 2, 60, 1, 2, 48, 2], [81, 2, 60, 1, 2, 48, 2], [79, 2, 60, 1, 2, 48, 2], [79, 2, 60, 1, 2, 48, 2], [78, 2, 60, 1, 2, 48, 2]], [[76, 2, 61, 5, 4, 49, 4], [0, 2, 0, 1, 0, 0, 0], [75, 2, 61, 5, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 61, 5, 4, 49, 4], [0, 2, 0, 1, 0, 0, 0], [85, 2, 61, 5, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [76, 1, 64, 1, 1, 47, 1], [76, 2, 64, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 64, 1, 2, 47, 2], [75, 2, 64, 1, 2, 47, 2], [87, 2, 64, 1, 4, 47, 4], [0, 2, 0, 1, 0, 0, 0], [83, 2, 64, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [80, 1, 69, 4, 1, 45, 1], [80, 1, 69, 4, 1, 45, 1], [0, 5, 0, 1, 5, 0, 5], [75, 2, 69, 4, 2, 45, 2], [87, 2, 69, 4, 2, 45, 2], [0, 2, 69, 4, 2, 45, 2], [83, 2, 69, 4, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [78, 1, 71, 9, 1, 52, 1], [78, 1, 71, 9, 1, 52, 1], [0, 3, 0, 1, 3, 0, 3], [76, 2, 71, 9, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 71, 9, 2, 52, 2], [76, 2, 71, 9, 2, 52, 2], [76, 2, 71, 9, 2, 52, 2], [75, 2, 71, 9, 2, 52, 2], [76, 2, 61, 5, 4, 49, 4], [0, 2, 0, 1, 0, 0, 0], [75, 2, 61, 5, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 61, 5, 4, 49, 4], [0, 2, 0, 1, 0, 0, 0], [85, 2, 61, 5, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [76, 1, 64, 1, 1, 47, 1], [76, 2, 64, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 64, 1, 2, 47, 2], [75, 2, 64, 1, 2, 47, 2], [87, 2, 64, 1, 4, 47, 4], [0, 2, 0, 1, 0, 0, 0], [83, 2, 64, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [80, 1, 69, 4, 1, 45, 1], [80, 2, 69, 4, 2, 45, 2], [0, 4, 0, 1, 4, 0, 4], [75, 2, 69, 4, 2, 45, 2], [87, 2, 69, 4, 2, 45, 2], [0, 2, 69, 4, 2, 45, 2], [83, 2, 69, 4, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [78, 1, 71, 9, 1, 52, 1], [78, 1, 71, 9, 1, 52, 1], [0, 3, 0, 1, 3, 0, 3], [76, 2, 71, 9, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 71, 9, 2, 52, 2], [76, 2, 71, 9, 2, 52, 2], [76, 2, 71, 9, 2, 52, 2], [75, 2, 71, 9, 2, 52, 2]], [[74, 2, 71, 2, 4, 47, 4], [0, 2, 0, 1, 0, 0, 0], [74, 2, 71, 2, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [74, 2, 71, 2, 4, 47, 4], [0, 2, 0, 1, 0, 0, 0], [73, 1, 71, 2, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 71, 2, 1, 47, 1], [73, 1, 66, 2, 1, 45, 1], [73, 2, 66, 2, 2, 45, 2], [78, 2, 66, 2, 2, 45, 2], [74, 1, 66, 2, 1, 45, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 66, 2, 1, 45, 1], [73, 3, 66, 2, 3, 45, 3], [78, 2, 66, 2, 2, 45, 2], [74, 2, 66, 2, 2, 45, 2], [79, 2, 66, 2, 2, 45, 2], [78, 2, 71, 9, 4, 52, 4], [0, 2, 0, 1, 0, 0, 0], [76, 2, 71, 9, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [78, 2, 71, 9, 4, 52, 4], [0, 2, 0, 1, 0, 0, 0], [78, 2, 71, 2, 2, 54, 2], [79, 1, 71, 2, 1, 54, 1], [78, 1, 67, 1, 1, 55, 1], [78, 1, 67, 1, 1, 55, 1], [0, 1, 0, 1, 1, 0, 1], [74, 2, 67, 1, 2, 55, 2], [78, 2, 67, 1, 2, 55, 2], [79, 1, 67, 1, 1, 55, 1], [78, 2, 67, 1, 2, 55, 2], [0, 1, 0, 1, 1, 0, 1], [73, 2, 67, 1, 2, 55, 2], [74, 2, 62, 1, 2, 57, 2], [76, 2, 62, 1, 2, 57, 2], [74, 2, 71, 2, 4, 47, 4], [0, 2, 0, 1, 0, 0, 0], [74, 2, 71, 2, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [74, 2, 71, 2, 4, 47, 4], [0, 2, 0, 1, 0, 0, 0], [73, 1, 71, 2, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 71, 2, 1, 47, 1], [73, 1, 66, 2, 1, 45, 1], [73, 2, 66, 2, 2, 45, 2], [78, 2, 66, 2, 2, 45, 2], [74, 2, 66, 2, 2, 45, 2], [74, 1, 66, 2, 1, 45, 1], [73, 3, 66, 2, 3, 45, 3], [78, 2, 66, 2, 2, 45, 2], [79, 2, 66, 2, 2, 45, 2], [81, 2, 66, 2, 2, 45, 2], [83, 2, 71, 9, 4, 52, 4], [0, 2, 0, 1, 0, 0, 0], [85, 2, 71, 9, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [86, 2, 71, 9, 4, 52, 4], [0, 2, 0, 1, 0, 0, 0], [86, 2, 71, 2, 2, 54, 2], [85, 1, 71, 2, 1, 54, 1], [81, 1, 67, 1, 1, 55, 1], [81, 2, 67, 1, 2, 55, 2], [83, 2, 67, 1, 2, 55, 2], [86, 2, 67, 1, 2, 55, 2], [85, 1, 67, 1, 1, 55, 1], [88, 3, 67, 1, 3, 55, 3], [90, 2, 67, 1, 2, 55, 2], [85, 2, 62, 1, 2, 57, 2], [86, 2, 62, 1, 2, 57, 2]], [[76, 2, 69, 1, 4, 45, 4], [0, 2, 0, 1, 0, 0, 0], [76, 2, 69, 1, 2, 45, 2], [75, 1, 0, 1, 2, 0, 2], [0, 1, 0, 1, 0, 0, 0], [76, 2, 69, 1, 4, 45, 4], [0, 1, 0, 1, 0, 0, 0], [83, 2, 0, 1, 0, 0, 0], [81, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 2, 0, 2], [80, 2, 61, 9, 2, 54, 2], [0, 1, 0, 1, 1, 0, 1], [80, 2, 61, 9, 2, 54, 2], [75, 2, 61, 9, 2, 54, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 61, 9, 2, 54, 2], [76, 2, 61, 9, 2, 54, 2], [73, 2, 61, 9, 2, 54, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 61, 5, 4, 49, 4], [0, 2, 0, 1, 0, 0, 0], [76, 2, 61, 5, 2, 49, 2], [75, 1, 0, 1, 2, 0, 2], [0, 1, 0, 1, 0, 0, 0], [76, 2, 61, 5, 4, 49, 4], [0, 1, 0, 1, 0, 0, 0], [78, 2, 0, 1, 0, 0, 0], [76, 2, 61, 5, 2, 49, 2], [0, 1, 0, 1, 2, 0, 2], [75, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [76, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [83, 2, 71, 1, 2, 47, 2], [81, 2, 71, 1, 2, 47, 2], [80, 2, 71, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 69, 1, 4, 45, 4], [0, 2, 0, 1, 0, 0, 0], [76, 2, 69, 1, 2, 45, 2], [75, 1, 0, 1, 2, 0, 2], [0, 1, 0, 1, 0, 0, 0], [76, 2, 69, 1, 4, 45, 4], [0, 1, 0, 1, 0, 0, 0], [83, 2, 0, 1, 0, 0, 0], [81, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 2, 0, 2], [80, 2, 61, 9, 2, 54, 2], [0, 1, 0, 1, 1, 0, 1], [80, 2, 61, 9, 2, 54, 2], [87, 2, 61, 9, 2, 54, 2], [0, 1, 0, 1, 1, 0, 1], [88, 2, 61, 9, 2, 54, 2], [81, 2, 61, 9, 2, 54, 2], [80, 2, 61, 9, 2, 54, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 61, 5, 4, 49, 4], [0, 2, 0, 1, 0, 0, 0], [76, 2, 61, 5, 2, 49, 2], [75, 1, 0, 1, 2, 0, 2], [0, 1, 0, 1, 0, 0, 0], [76, 2, 61, 5, 4, 49, 4], [0, 1, 0, 1, 0, 0, 0], [78, 2, 0, 1, 0, 0, 0], [76, 2, 61, 5, 2, 49, 2], [0, 1, 0, 1, 2, 0, 2], [75, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [76, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [83, 2, 71, 1, 2, 47, 2], [81, 2, 71, 1, 2, 47, 2], [80, 2, 71, 1, 2, 47, 2]], [[79, 2, 63, 1, 4, 51, 4], [0, 2, 0, 1, 0, 0, 0], [74, 2, 63, 1, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [81, 2, 63, 1, 2, 51, 2], [0, 4, 0, 1, 2, 0, 2], [0, 0, 63, 1, 4, 51, 4], [74, 2, 60, 5, 2, 48, 2], [82, 2, 60, 5, 4, 48, 4], [0, 2, 0, 1, 0, 0, 0], [82, 2, 60, 5, 2, 48, 2], [81, 2, 60, 5, 2, 48, 2], [82, 2, 60, 5, 2, 48, 2], [89, 2, 60, 5, 2, 48, 2], [82, 2, 60, 5, 2, 48, 2], [0, 2, 67, 2, 4, 43, 4], [82, 2, 0, 1, 0, 0, 0], [0, 2, 67, 2, 2, 43, 2], [81, 2, 0, 1, 1, 0, 1], [0, 1, 67, 2, 2, 43, 2], [82, 2, 0, 1, 0, 0, 0], [0, 5, 0, 1, 3, 0, 3], [0, 0, 67, 2, 4, 43, 4], [84, 2, 62, 2, 2, 41, 2], [81, 2, 62, 2, 4, 41, 4], [0, 2, 0, 1, 0, 0, 0], [82, 2, 62, 2, 2, 41, 2], [81, 2, 62, 2, 2, 41, 2], [81, 2, 62, 2, 2, 41, 2], [82, 2, 62, 2, 2, 41, 2], [82, 2, 62, 2, 2, 41, 2], [81, 2, 63, 1, 4, 51, 4], [79, 2, 0, 1, 0, 0, 0], [0, 2, 63, 1, 2, 51, 2], [74, 2, 0, 1, 1, 0, 1], [0, 1, 63, 1, 2, 51, 2], [81, 2, 0, 1, 3, 0, 3], [0, 5, 0, 1, 0, 0, 0], [74, 2, 63, 1, 4, 51, 4], [82, 2, 60, 5, 2, 48, 2], [0, 2, 60, 5, 4, 48, 4], [82, 2, 60, 5, 1, 48, 1], [81, 1, 0, 1, 1, 0, 1], [0, 1, 60, 5, 2, 48, 2], [82, 2, 0, 1, 0, 0, 0], [89, 2, 60, 5, 2, 48, 2], [82, 2, 60, 5, 2, 48, 2], [0, 2, 60, 5, 2, 48, 2], [82, 2, 67, 2, 4, 43, 4], [0, 2, 0, 1, 0, 0, 0], [81, 2, 67, 2, 2, 43, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 67, 2, 2, 43, 2], [0, 4, 0, 1, 2, 0, 2], [0, 0, 67, 2, 4, 43, 4], [84, 2, 62, 2, 2, 41, 2], [81, 2, 62, 2, 4, 41, 4], [0, 2, 0, 1, 0, 0, 0], [82, 2, 62, 2, 2, 41, 2], [81, 2, 62, 2, 2, 41, 2], [81, 2, 62, 2, 2, 41, 2], [82, 2, 62, 2, 2, 41, 2], [82, 2, 62, 2, 2, 41, 2]], [[76, 2, 69, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [85, 2, 69, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 69, 1, 2, 45, 2], [0, 4, 0, 1, 4, 0, 4], [85, 2, 71, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [83, 2, 71, 1, 2, 47, 2], [80, 2, 61, 5, 2, 49, 2], [0, 5, 0, 1, 5, 0, 5], [81, 2, 61, 5, 2, 49, 2], [80, 2, 61, 5, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [78, 2, 61, 5, 2, 49, 2], [76, 2, 61, 5, 2, 49, 2], [80, 2, 64, 1, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 64, 1, 2, 52, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 64, 1, 2, 52, 2], [73, 2, 64, 1, 2, 52, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 64, 1, 2, 52, 2], [76, 2, 64, 1, 2, 52, 2], [76, 2, 69, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [85, 2, 69, 1, 2, 45, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 69, 1, 2, 45, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 69, 1, 2, 45, 2], [0, 4, 0, 1, 4, 0, 4], [85, 2, 71, 1, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 1, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [83, 2, 71, 1, 2, 47, 2], [80, 2, 61, 2, 2, 49, 2], [0, 5, 0, 1, 5, 0, 5], [81, 2, 61, 2, 2, 49, 2], [80, 2, 61, 2, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [85, 2, 61, 2, 2, 49, 2], [88, 2, 61, 2, 2, 49, 2], [87, 2, 64, 1, 2, 52, 2]], [[76, 2, 64, 1, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 64, 1, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [75, 1, 64, 1, 1, 52, 1], [76, 1, 64, 1, 1, 52, 1], [0, 1, 0, 1, 1, 0, 1], [76, 1, 64, 1, 1, 52, 1], [0, 6, 0, 1, 6, 0, 2], [0, 0, 0, 1, 0, 52, 2], [0, 0, 0, 1, 0, 47, 2], [76, 2, 71, 9, 2, 47, 2], [83, 2, 71, 9, 2, 47, 2], [0, 2, 0, 1, 2, 0, 2], [75, 1, 71, 9, 1, 47, 1], [76, 1, 71, 9, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [76, 1, 71, 9, 1, 47, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 71, 9, 2, 47, 2], [0, 1, 0, 1, 1, 0, 1], [76, 2, 61, 5, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [88, 1, 61, 5, 1, 49, 1], [87, 1, 61, 5, 1, 49, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 61, 5, 1, 49, 1], [0, 2, 0, 1, 2, 0, 2], [76, 2, 61, 5, 2, 49, 2], [78, 2, 61, 5, 2, 49, 2], [80, 2, 61, 5, 2, 49, 2], [0, 4, 0, 1, 4, 51, 2], [0, 0, 0, 1, 0, 51, 2], [88, 1, 71, 1, 1, 51, 1], [87, 1, 71, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 71, 1, 1, 51, 1], [0, 2, 0, 1, 2, 0, 2], [76, 2, 71, 1, 2, 51, 2], [78, 2, 71, 1, 2, 51, 2], [76, 2, 71, 1, 2, 51, 2]], [[80, 2, 61, 4, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 61, 4, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 68, 1, 2, 44, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 68, 1, 2, 44, 2], [79, 2, 68, 1, 2, 46, 2], [80, 2, 68, 1, 2, 48, 2], [84, 2, 60, 2, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 60, 2, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [80, 2, 63, 9, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [80, 2, 63, 9, 2, 48, 2], [79, 2, 63, 9, 2, 46, 2], [80, 2, 63, 9, 2, 44, 2], [77, 2, 61, 1, 2, 49, 2], [0, 2, 0, 1, 2, 0, 2], [77, 2, 61, 1, 2, 49, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 63, 1, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 63, 1, 2, 51, 2], [80, 2, 68, 1, 2, 53, 2], [82, 2, 63, 9, 2, 56, 2], [80, 2, 63, 9, 2, 44, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 63, 9, 2, 44, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 63, 9, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 63, 9, 2, 46, 2], [82, 2, 63, 9, 2, 46, 2], [80, 2, 63, 9, 2, 44, 2]], [[75, 2, 63, 1, 2, 51, 2], [0, 4, 0, 1, 4, 0, 4], [74, 2, 63, 1, 2, 51, 2], [82, 2, 63, 1, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [82, 2, 63, 1, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [79, 1, 63, 1, 1, 51, 1], [79, 1, 63, 1, 1, 51, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 0, 1, 2, 48, 2], [74, 2, 0, 1, 2, 48, 2], [75, 2, 0, 1, 2, 48, 2], [82, 2, 0, 1, 2, 48, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 0, 1, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [79, 1, 63, 1, 1, 55, 1], [79, 1, 63, 1, 1, 55, 1], [0, 5, 0, 1, 5, 0, 5], [75, 2, 63, 1, 2, 55, 2], [82, 2, 63, 1, 2, 55, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 63, 1, 2, 55, 2], [0, 1, 0, 1, 1, 0, 1], [79, 1, 70, 1, 1, 50, 1], [79, 1, 70, 1, 1, 50, 1], [0, 1, 0, 1, 1, 0, 1], [75, 2, 70, 1, 2, 50, 2], [0, 2, 0, 1, 2, 0, 2], [75, 2, 70, 1, 2, 50, 2], [82, 2, 70, 1, 2, 50, 2], [75, 2, 70, 1, 2, 50, 2], [74, 2, 70, 1, 2, 50, 2], [75, 2, 70, 1, 2, 50, 2]], [[77, 2, 65, 1, 2, 53, 2], [0, 4, 0, 1, 4, 0, 4], [84, 2, 65, 1, 2, 53, 2], [84, 2, 65, 1, 2, 53, 2], [81, 2, 65, 1, 2, 53, 2], [81, 2, 65, 1, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 60, 1, 4, 55, 4], [84, 1, 0, 1, 0, 0, 0], [76, 2, 0, 1, 0, 0, 0], [77, 2, 60, 1, 2, 55, 2], [0, 1, 0, 1, 2, 0, 2], [79, 2, 60, 1, 4, 55, 4], [84, 1, 0, 1, 0, 0, 0], [76, 2, 0, 1, 0, 0, 0], [77, 2, 60, 1, 2, 55, 2], [0, 1, 0, 1, 2, 0, 2], [77, 2, 62, 2, 2, 50, 2], [0, 4, 0, 1, 4, 0, 4], [84, 2, 62, 2, 2, 50, 2], [84, 2, 62, 2, 2, 50, 2], [81, 2, 62, 2, 2, 50, 2], [81, 2, 62, 2, 2, 50, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 60, 1, 4, 52, 4], [84, 1, 0, 1, 0, 0, 0], [76, 2, 0, 1, 0, 0, 0], [77, 2, 60, 1, 2, 52, 2], [0, 1, 0, 1, 2, 0, 2], [89, 2, 65, 1, 4, 53, 4], [88, 1, 0, 1, 0, 0, 0], [84, 2, 0, 1, 0, 0, 0], [81, 2, 65, 1, 2, 53, 2]], [[76, 2, 60, 1, 4, 48, 4], [0, 2, 0, 1, 0, 0, 0], [88, 2, 0, 1, 3, 48, 2], [0, 1, 0, 1, 0, 0, 1], [76, 2, 60, 1, 2, 48, 4], [0, 3, 0, 1, 3, 0, 0], [78, 2, 60, 1, 2, 0, 1], [0, 0, 0, 1, 0, 48, 2], [79, 2, 0, 1, 2, 48, 2], [79, 2, 62, 1, 4, 50, 4], [0, 2, 0, 1, 0, 0, 0], [90, 1, 0, 1, 3, 50, 1], [0, 1, 0, 1, 0, 0, 1], [79, 1, 62, 1, 1, 50, 4], [0, 3, 0, 1, 3, 0, 0], [78, 2, 62, 1, 2, 0, 1], [79, 2, 0, 1, 0, 50, 2], [79, 2, 0, 1, 2, 50, 2], [0, 2, 64, 2, 4, 52, 4], [91, 1, 0, 1, 0, 0, 0], [0, 1, 0, 1, 3, 52, 1], [79, 1, 0, 1, 0, 0, 1], [0, 3, 0, 1, 0, 52, 4], [78, 2, 64, 2, 1, 0, 0], [0, 0, 0, 1, 3, 0, 1], [79, 2, 64, 2, 2, 52, 2], [78, 2, 0, 1, 2, 52, 2], [0, 2, 62, 1, 4, 50, 4], [90, 1, 0, 1, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0], [78, 1, 0, 1, 3, 50, 1], [78, 1, 0, 1, 0, 0, 1], [78, 1, 0, 1, 0, 50, 4], [78, 1, 62, 1, 1, 0, 0], [78, 1, 62, 1, 1, 0, 0], [78, 1, 62, 1, 1, 0, 0], [78, 1, 62, 1, 1, 0, 1], [78, 1, 62, 1, 1, 50, 2], [78, 1, 62, 1, 1, 0, 0], [78, 1, 62, 1, 1, 50, 1]], [[80, 4, 61, 1, 4, 49, 4], [80, 3, 61, 1, 3, 49, 3], [0, 1, 0, 1, 1, 0, 1], [77, 4, 61, 1, 4, 49, 4], [77, 2, 61, 1, 3, 49, 2], [79, 1, 0, 1, 0, 49, 1], [0, 1, 0, 1, 1, 0, 1], [82, 2, 70, 8, 3, 53, 3], [0, 2, 0, 1, 0, 0, 0], [84, 2, 0, 1, 1, 0, 1], [0, 0, 70, 8, 2, 53, 2], [0, 1, 0, 1, 3, 0, 1], [84, 2, 0, 1, 0, 53, 2], [82, 3, 70, 8, 3, 53, 3], [80, 2, 0, 1, 4, 53, 2], [82, 2, 0, 1, 0, 53, 2], [80, 2, 68, 4, 2, 56, 2], [0, 2, 0, 1, 2, 0, 2], [84, 1, 68, 4, 1, 56, 1], [0, 1, 0, 1, 3, 0, 1], [84, 1, 0, 1, 0, 56, 1], [0, 1, 68, 4, 2, 0, 1], [82, 2, 0, 1, 0, 56, 2], [0, 1, 0, 1, 5, 0, 1], [82, 2, 0, 1, 0, 56, 2], [82, 2, 0, 1, 0, 56, 1], [80, 2, 60, 2, 2, 0, 1], [0, 0, 0, 1, 0, 51, 2], [0, 2, 0, 1, 2, 0, 2], [80, 1, 60, 2, 1, 51, 1], [0, 1, 0, 1, 3, 0, 1], [87, 1, 0, 1, 0, 51, 1], [0, 1, 60, 2, 3, 0, 1], [87, 3, 0, 1, 0, 51, 3], [84, 2, 60, 2, 2, 51, 2], [82, 2, 60, 2, 2, 51, 2]], [[80, 2, 64, 1, 2, 52, 4], [0, 5, 0, 1, 5, 0, 0], [80, 1, 64, 1, 1, 0, 1], [0, 1, 0, 1, 4, 52, 1], [80, 1, 0, 1, 0, 52, 1], [0, 2, 0, 1, 0, 52, 1], [0, 0, 0, 1, 0, 0, 1], [73, 2, 64, 1, 2, 52, 3], [75, 2, 64, 1, 2, 52, 2], [80, 2, 64, 1, 2, 52, 2], [0, 5, 0, 1, 5, 52, 4], [0, 0, 0, 1, 0, 0, 1], [80, 1, 64, 1, 1, 52, 1], [0, 1, 0, 1, 1, 52, 1], [80, 1, 64, 1, 1, 52, 1], [0, 2, 0, 1, 2, 0, 1], [0, 0, 0, 1, 0, 52, 3], [73, 2, 64, 1, 2, 52, 2], [75, 2, 64, 1, 2, 52, 2], [83, 2, 68, 2, 2, 56, 4], [0, 5, 0, 1, 5, 0, 1], [0, 0, 0, 1, 0, 56, 1], [0, 0, 0, 1, 0, 56, 1], [83, 1, 68, 2, 1, 56, 1], [0, 1, 0, 1, 1, 0, -1], [0, 0, 0, 1, 0, 56, 1], [0, 0, 0, 1, 0, 0, 1], [83, 1, 68, 2, 2, 56, 2], [0, 2, 0, 1, 0, 0, 0], [75, 2, 0, 1, 1, 0, 1], [0, 0, 68, 2, 2, 56, 2], [78, 2, 68, 2, 2, 56, 2], [83, 2, 66, 1, 2, 54, 4], [0, 5, 0, 1, 5, 0, 0], [83, 1, 66, 1, 1, 0, 1], [0, 1, 0, 1, 1, 54, 1], [83, 1, 66, 1, 1, 54, 1], [0, 2, 0, 1, 2, 54, 1], [85, 2, 66, 1, 2, 0, 1], [0, 0, 0, 1, 0, 54, 2], [87, 2, 66, 1, 2, 0, 0], [87, 2, 66, 1, 2, 54, 2], [87, 2, 66, 1, 2, 54, 2]], [[78, 2, 66, 1, 4, 54, 4], [0, 2, 0, 1, 0, 0, 0], [78, 2, 66, 1, 2, 54, 2], [75, 2, 0, 1, 2, 0, 2], [78, 2, 66, 1, 4, 49, 4], [80, 2, 0, 1, 0, 0, 0], [82, 2, 66, 1, 2, 49, 2], [82, 2, 0, 1, 2, 0, 2], [0, 2, 63, 2, 4, 51, 4], [78, 2, 0, 1, 0, 0, 0], [78, 2, 63, 2, 2, 51, 2], [75, 2, 0, 1, 2, 0, 2], [78, 2, 71, 1, 4, 47, 4], [80, 2, 0, 1, 0, 0, 0], [82, 2, 71, 1, 2, 47, 2], [82, 2, 0, 1, 2, 0, 2], [0, 2, 66, 1, 4, 54, 4], [78, 2, 0, 1, 0, 0, 0], [78, 2, 66, 1, 2, 54, 2], [75, 2, 0, 1, 2, 0, 2], [78, 2, 66, 1, 4, 49, 4], [75, 2, 0, 1, 0, 0, 0], [73, 2, 66, 1, 2, 49, 2], [83, 2, 0, 1, 2, 0, 2], [0, 2, 71, 1, 4, 47, 4], [83, 2, 0, 1, 0, 0, 0], [82, 2, 71, 1, 2, 47, 2], [80, 2, 0, 1, 2, 0, 2], [0, 2, 66, 1, 4, 54, 4], [80, 2, 0, 1, 0, 0, 0], [78, 2, 66, 1, 2, 54, 2]], [[82, 2, 70, 1, 4, 46, 4], [0, 4, 0, 1, 0, 0, 0], [77, 2, 0, 1, 2, 46, 2], [84, 2, 70, 1, 2, 0, 2], [0, 2, 70, 1, 2, 46, 4], [84, 2, 0, 1, 2, 46, 2], [0, 1, 70, 1, 2, 0, 1], [82, 1, 0, 1, 1, 53, 1], [82, 1, 70, 8, 1, 53, 4], [0, 5, 70, 8, 4, 0, 0], [0, 0, 0, 1, 2, 53, 2], [77, 2, 70, 8, 2, 0, 2], [84, 2, 70, 8, 2, 53, 4], [0, 2, 0, 1, 2, 0, 0], [84, 2, 70, 8, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [86, 1, 67, 2, 1, 55, 1], [86, 4, 67, 2, 4, 55, 4], [0, 2, 0, 1, 2, 55, 2], [86, 2, 67, 2, 2, 0, 2], [84, 4, 67, 2, 2, 55, 4], [0, 0, 0, 1, 2, 0, 0], [81, 2, 67, 2, 2, 55, 2], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 1, 1, 51, 1], [82, 4, 63, 1, 4, 51, 4], [0, 2, 0, 1, 2, 51, 2], [77, 2, 63, 1, 2, 0, 2], [82, 4, 70, 8, 2, 53, 4], [0, 0, 0, 1, 2, 0, 0], [84, 2, 70, 8, 2, 53, 2], [82, 2, 70, 8, 2, 53, 2]], [[80, 2, 68, 2, 2, 56, 2], [0, 2, 0, 1, 2, 0, 2], [80, 2, 68, 2, 2, 56, 2], [78, 2, 68, 2, 2, 56, 2], [80, 2, 68, 2, 2, 56, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 68, 2, 2, 56, 2], [0, 1, 0, 1, 1, 0, 1], [82, 1, 63, 2, 1, 54, 1], [82, 1, 63, 2, 1, 54, 1], [0, 3, 0, 1, 3, 0, 3], [80, 2, 63, 2, 2, 54, 2], [78, 2, 63, 2, 2, 54, 2], [80, 1, 63, 2, 1, 54, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 63, 2, 1, 54, 1], [82, 2, 63, 2, 2, 54, 2], [78, 2, 63, 2, 2, 54, 2], [80, 1, 68, 2, 1, 56, 1], [80, 1, 68, 2, 1, 56, 1], [0, 3, 0, 1, 3, 0, 3], [80, 2, 68, 2, 2, 56, 2], [78, 2, 68, 2, 2, 56, 2], [80, 1, 68, 2, 1, 56, 1], [0, 1, 0, 1, 1, 0, 1], [83, 1, 68, 2, 1, 56, 1], [82, 2, 68, 2, 2, 56, 2], [78, 2, 68, 2, 2, 56, 2], [75, 1, 63, 2, 1, 51, 1], [75, 1, 63, 2, 1, 51, 1], [0, 3, 0, 1, 3, 0, 3], [75, 2, 63, 2, 2, 51, 2], [73, 2, 63, 2, 2, 51, 2], [73, 1, 63, 5, 1, 54, 1], [0, 1, 0, 1, 1, 0, 1], [78, 1, 63, 5, 1, 54, 1], [82, 1, 63, 5, 1, 54, 1], [0, 1, 0, 1, 1, 0, 1], [78, 2, 63, 5, 2, 54, 2]], [[74, 2, 62, 2, 2, 50, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 62, 2, 2, 50, 2], [77, 2, 62, 2, 2, 50, 2], [77, 1, 65, 1, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 65, 1, 1, 53, 1], [81, 1, 65, 1, 1, 53, 1], [0, 1, 0, 1, 1, 0, 1], [74, 2, 65, 1, 2, 53, 2], [0, 1, 0, 1, 1, 0, 1], [74, 2, 62, 2, 2, 57, 2], [0, 2, 0, 1, 2, 0, 2], [76, 2, 62, 2, 2, 57, 2], [77, 2, 62, 2, 2, 57, 2], [77, 1, 67, 2, 1, 55, 1], [0, 1, 0, 1, 1, 0, 1], [74, 1, 67, 2, 1, 55, 1], [84, 1, 67, 2, 1, 55, 1], [0, 1, 0, 1, 1, 0, 1], [79, 2, 67, 2, 2, 55, 2], [0, 1, 0, 1, 1, 0, 1], [81, 2, 62, 2, 2, 50, 2], [0, 14, 0, 1, 14, 0, -2], [0, 0, 0, 1, 0, 50, 2], [0, 0, 0, 1, 0, 0, 2], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [81, 2, 62, 2, 2, 50, 2], [81, 2, 62, 2, 2, 0, 2], [81, 2, 62, 2, 2, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1], [0, 0, 0, 1, 0, 50, 1]], [[0, 4, 0, 1, 4, 53, 4], [91, 2, 0, 1, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [91, 2, 0, 1, 2, 53, 2], [84, 2, 0, 1, 2, 53, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 0, 1, 2, 53, 2], [0, 4, 60, 1, 4, 57, 4], [91, 2, 60, 1, 2, 57, 2], [0, 2, 0, 1, 2, 0, 2], [91, 2, 60, 1, 2, 57, 2], [84, 2, 60, 1, 2, 57, 2], [0, 2, 0, 1, 2, 0, 2], [88, 2, 60, 1, 2, 57, 2], [0, 4, 0, 1, 4, 55, 4], [91, 2, 0, 1, 2, 55, 2], [0, 2, 0, 1, 2, 0, 2], [91, 2, 0, 1, 2, 55, 2], [84, 2, 0, 1, 2, 55, 2], [0, 2, 0, 1, 2, 0, 2], [83, 2, 0, 1, 2, 55, 2], [0, 4, 60, 1, 4, 52, 4], [88, 2, 60, 1, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [86, 2, 60, 1, 2, 52, 2], [83, 2, 60, 1, 2, 52, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 60, 1, 2, 52, 2]], [[75, 2, 68, 1, 2, 51, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 68, 1, 2, 51, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 68, 1, 2, 51, 2], [0, 3, 0, 1, 3, 0, 3], [82, 2, 68, 1, 2, 51, 2], [75, 2, 68, 1, 2, 51, 2], [75, 2, 63, 1, 2, 46, 2], [0, 2, 0, 1, 2, 0, 2], [84, 2, 63, 1, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 63, 1, 2, 46, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 63, 1, 2, 46, 2], [80, 2, 63, 1, 2, 46, 2], [79, 2, 63, 1, 2, 46, 2], [79, 2, 60, 2, 2, 48, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 60, 2, 2, 48, 2], [0, 1, 0, 1, 1, 0, 1], [79, 2, 60, 2, 2, 48, 2], [0, 3, 0, 1, 3, 0, 3], [82, 2, 60, 2, 2, 48, 2], [75, 2, 60, 2, 2, 48, 2], [79, 2, 70, 1, 2, 50, 2], [0, 2, 0, 1, 2, 0, 2], [79, 2, 70, 1, 2, 50, 2], [0, 1, 0, 1, 1, 0, 1], [75, 2, 70, 1, 2, 50, 2], [0, 1, 0, 1, 1, 0, 1], [82, 2, 70, 1, 2, 50, 2], [74, 2, 70, 1, 2, 50, 2], [75, 2, 70, 1, 2, 50, 2]]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder, MinMaxScaler\n",
    "from sklearn.compose import ColumnTransformer\n",
    "import torch\n",
    "import pandas as pd\n",
    "\n",
    "vector_df = pd.DataFrame([item['vector'] for item in tokenized_data])\n",
    "\n",
    "tokens = [item['token'] for item in tokenized_data]\n",
    "\n",
    "# ์ „์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ\n",
    "preprocessor = ColumnTransformer([\n",
    "    (\"cat\", OneHotEncoder(sparse_output=False), [\"mode\", \"mood\", \"key\"]),\n",
    "    (\"num\", MinMaxScaler(), [\"bpm\", \"chord_complexity\", \"melody_density\", \"syncopation\", \"pitch_range\"])\n",
    "])\n",
    "\n",
    "X = preprocessor.fit_transform(vector_df)\n",
    "\n",
    "# # ํ† ํฐ ์‹œํ€€์Šค ํŒจ๋”ฉ (-1์œผ๋กœ ๋’ค์— ์ฑ„์šฐ๊ธฐ)\n",
    "# max_len = max(len(seq) for seq in tokens)\n",
    "# padded_tokens = [seq + [-1]*(max_len - len(seq)) for seq in tokens]\n",
    "\n",
    "# # ๊ฐ ์ƒ˜ํ”Œ์˜ ์‹ค์ œ ๊ธธ์ด\n",
    "# lengths = torch.tensor([len(seq) for seq in tokens], dtype=torch.long)\n",
    "\n",
    "# Tensor ๋ณ€ํ™˜\n",
    "#X_tensor = torch.tensor(X, dtype=torch.float32)\n",
    "#Y_tensor = torch.tensor(padded_tokens, dtype=torch.long)\n",
    "print(tokens)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "dd840788",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X shape: torch.Size([34, 25])\n",
      "X sample: tensor([1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,\n",
      "        0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000,\n",
      "        0.0000, 0.0000, 0.0000, 1.0000, 0.1667, 1.0000, 0.1186])\n"
     ]
    }
   ],
   "source": [
    "print(\"X shape:\", X_tensor.shape)\n",
    "print(\"X sample:\", X_tensor[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "769af33a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "min target: 0\n",
      "unique values: tensor([  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  16,\n",
      "         22,  31,  35,  38,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,\n",
      "         53,  54,  55,  56,  57,  58,  59,  62,  63,  64,  65,  66,  67,  68,\n",
      "         69,  70,  71,  72,  73,  75,  76,  77,  78,  79,  80,  81,  82,  83,\n",
      "         84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96, 100,\n",
      "        102, 130, 202, 302])\n"
     ]
    }
   ],
   "source": [
    "print(\"min target:\", Y_tensor.min().item())\n",
    "print(\"unique values:\", torch.unique(Y_tensor))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "4f5f5dc1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "\n",
    "torch.save({\n",
    "    \"X\": X_tensor,\n",
    "    \"Y\": Y_tensor,\n",
    "    \"lengths\": lengths\n",
    "}, \"DIVA_dataset.pt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "224e349f",
   "metadata": {},
   "source": [
    "## ์ „์ฒ˜๋ฆฌ ๋!"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "diva",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}