{ "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", "
\n", " \n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " " ], "text/plain": [ "" ] }, "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 }