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
}
|