diff --git a/abilitytype_string.go b/abilitytype_string.go new file mode 100644 index 0000000..044587a --- /dev/null +++ b/abilitytype_string.go @@ -0,0 +1,66 @@ +// Code generated by "stringer -type AbilityType -trimprefix Ability"; DO NOT EDIT. + +package horse + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[AbilityPassiveSpeed-1] + _ = x[AbilityPassiveStamina-2] + _ = x[AbilityPassivePower-3] + _ = x[AbilityPassiveGuts-4] + _ = x[AbilityPassiveWit-5] + _ = x[AbilityGreatEscape-6] + _ = x[AbilityVision-8] + _ = x[AbilityHP-9] + _ = x[AbilityGateDelay-10] + _ = x[AbilityFrenzy-13] + _ = x[AbilityCurrentSpeed-21] + _ = x[AbilityTargetSpeed-27] + _ = x[AbilityLaneSpeed-28] + _ = x[AbilityAccel-31] + _ = x[AbilityLaneChange-35] +} + +const ( + _AbilityType_name_0 = "PassiveSpeedPassiveStaminaPassivePowerPassiveGutsPassiveWitGreatEscape" + _AbilityType_name_1 = "VisionHPGateDelay" + _AbilityType_name_2 = "Frenzy" + _AbilityType_name_3 = "CurrentSpeed" + _AbilityType_name_4 = "TargetSpeedLaneSpeed" + _AbilityType_name_5 = "Accel" + _AbilityType_name_6 = "LaneChange" +) + +var ( + _AbilityType_index_0 = [...]uint8{0, 12, 26, 38, 49, 59, 70} + _AbilityType_index_1 = [...]uint8{0, 6, 8, 17} + _AbilityType_index_4 = [...]uint8{0, 11, 20} +) + +func (i AbilityType) String() string { + switch { + case 1 <= i && i <= 6: + i -= 1 + return _AbilityType_name_0[_AbilityType_index_0[i]:_AbilityType_index_0[i+1]] + case 8 <= i && i <= 10: + i -= 8 + return _AbilityType_name_1[_AbilityType_index_1[i]:_AbilityType_index_1[i+1]] + case i == 13: + return _AbilityType_name_2 + case i == 21: + return _AbilityType_name_3 + case 27 <= i && i <= 28: + i -= 27 + return _AbilityType_name_4[_AbilityType_index_4[i]:_AbilityType_index_4[i+1]] + case i == 31: + return _AbilityType_name_5 + case i == 35: + return _AbilityType_name_6 + default: + return "AbilityType(" + strconv.FormatInt(int64(i), 10) + ")" + } +} diff --git a/character.go b/character.go new file mode 100644 index 0000000..04f50e1 --- /dev/null +++ b/character.go @@ -0,0 +1,264 @@ +package horse + +// Automatically generated with horsegen; DO NOT EDIT + +import ( + "fmt" + "slices" + "strconv" +) + +type Character struct { + ID int16 + Name string +} + +var characterIDs = []int16{ + 1001, // Special Week + 1002, // Silence Suzuka + 1003, // Tokai Teio + 1004, // Maruzensky + 1005, // Fuji Kiseki + 1006, // Oguri Cap + 1007, // Gold Ship + 1008, // Vodka + 1009, // Daiwa Scarlet + 1010, // Taiki Shuttle + 1011, // Grass Wonder + 1012, // Hishi Amazon + 1013, // Mejiro McQueen + 1014, // El Condor Pasa + 1015, // T.M. Opera O + 1016, // Narita Brian + 1017, // Symboli Rudolf + 1018, // Air Groove + 1019, // Agnes Digital + 1020, // Seiun Sky + 1023, // Biwa Hayahide + 1024, // Mayano Top Gun + 1025, // Manhattan Cafe + 1026, // Mihono Bourbon + 1027, // Mejiro Ryan + 1028, // Hishi Akebono + 1030, // Rice Shower + 1032, // Agnes Tachyon + 1033, // Admire Vega + 1034, // Inari One + 1035, // Winning Ticket + 1037, // Eishin Flash + 1038, // Curren Chan + 1039, // Kawakami Princess + 1040, // Gold City + 1041, // Sakura Bakushin O + 1044, // Sweep Tosho + 1045, // Super Creek + 1046, // Smart Falcon + 1048, // Tosen Jordan + 1050, // Narita Taishin + 1051, // Nishino Flower + 1052, // Haru Urara + 1056, // Matikanefukukitaru + 1058, // Meisho Doto + 1059, // Mejiro Dober + 1060, // Nice Nature + 1061, // King Halo +} + +var characterNames = []string{ + "Special Week", + "Silence Suzuka", + "Tokai Teio", + "Maruzensky", + "Fuji Kiseki", + "Oguri Cap", + "Gold Ship", + "Vodka", + "Daiwa Scarlet", + "Taiki Shuttle", + "Grass Wonder", + "Hishi Amazon", + "Mejiro McQueen", + "El Condor Pasa", + "T.M. Opera O", + "Narita Brian", + "Symboli Rudolf", + "Air Groove", + "Agnes Digital", + "Seiun Sky", + "Biwa Hayahide", + "Mayano Top Gun", + "Manhattan Cafe", + "Mihono Bourbon", + "Mejiro Ryan", + "Hishi Akebono", + "Rice Shower", + "Agnes Tachyon", + "Admire Vega", + "Inari One", + "Winning Ticket", + "Eishin Flash", + "Curren Chan", + "Kawakami Princess", + "Gold City", + "Sakura Bakushin O", + "Sweep Tosho", + "Super Creek", + "Smart Falcon", + "Tosen Jordan", + "Narita Taishin", + "Nishino Flower", + "Haru Urara", + "Matikanefukukitaru", + "Meisho Doto", + "Mejiro Dober", + "Nice Nature", + "King Halo", +} + +var characterNameToID = map[string]int16{ + "Special Week": 1001, + "Silence Suzuka": 1002, + "Tokai Teio": 1003, + "Maruzensky": 1004, + "Fuji Kiseki": 1005, + "Oguri Cap": 1006, + "Gold Ship": 1007, + "Vodka": 1008, + "Daiwa Scarlet": 1009, + "Taiki Shuttle": 1010, + "Grass Wonder": 1011, + "Hishi Amazon": 1012, + "Mejiro McQueen": 1013, + "El Condor Pasa": 1014, + "T.M. Opera O": 1015, + "Narita Brian": 1016, + "Symboli Rudolf": 1017, + "Air Groove": 1018, + "Agnes Digital": 1019, + "Seiun Sky": 1020, + "Biwa Hayahide": 1023, + "Mayano Top Gun": 1024, + "Manhattan Cafe": 1025, + "Mihono Bourbon": 1026, + "Mejiro Ryan": 1027, + "Hishi Akebono": 1028, + "Rice Shower": 1030, + "Agnes Tachyon": 1032, + "Admire Vega": 1033, + "Inari One": 1034, + "Winning Ticket": 1035, + "Eishin Flash": 1037, + "Curren Chan": 1038, + "Kawakami Princess": 1039, + "Gold City": 1040, + "Sakura Bakushin O": 1041, + "Sweep Tosho": 1044, + "Super Creek": 1045, + "Smart Falcon": 1046, + "Tosen Jordan": 1048, + "Narita Taishin": 1050, + "Nishino Flower": 1051, + "Haru Urara": 1052, + "Matikanefukukitaru": 1056, + "Meisho Doto": 1058, + "Mejiro Dober": 1059, + "Nice Nature": 1060, + "King Halo": 1061, +} + +func characterIndex(id int16) (int, bool) { + return slices.BinarySearch(characterIDs, id) +} + +func CharacterForID(id int16) Character { + i, ok := characterIndex(id) + if !ok { + return Character{} + } + return Character{ + ID: id, + Name: characterNames[i], + } +} + +func CharacterForName(name string) Character { + id, ok := characterNameToID[name] + if !ok { + return Character{} + } + return Character{ + ID: id, + Name: name, + } +} + +func (c *Character) MarshalJSON() ([]byte, error) { + // Only marshal legal or empty characters. + if c.ID == 0 { + return []byte{'0'}, nil + } + i, ok := characterIndex(c.ID) + if !ok { + return nil, fmt.Errorf("marshaling character %q with invalid ID %d", c.Name, c.ID) + } + if characterNames[i] != c.Name { + return nil, fmt.Errorf("marshaling character with ID %d: name is %q but should be %q", c.ID, c.Name, characterNames[i]) + } + return strconv.AppendInt(nil, int64(c.ID), 10), nil +} + +func (c *Character) UnmarshalJSON(b []byte) error { + if string(b) == "null" { + return nil + } + id, err := strconv.ParseInt(string(b), 10, 16) + if err != nil { + return fmt.Errorf("unmarshaling invalid character ID %q: %w", b, err) + } + if id == 0 { + *c = Character{} + return nil + } + i, ok := characterIndex(int16(id)) + if !ok { + return fmt.Errorf("unmarshaling unrecognized character ID %d", id) + } + *c = Character{ + ID: int16(id), + Name: characterNames[i], + } + return nil +} + +var pairAffinity = []int8{0,23,20,11,11,25,26,26,17,9,31,14,27,25,31,33,26,18,19,30,25,26,24,18,24,12,23,25,0,0,27,26,10,25,11,9,0,29,10,18,17,0,7,28,20,22,35,24,23,0,18,17,11,18,19,16,17,14,18,15,20,17,19,18,16,18,18,22,18,26,11,26,18,10,17,20,0,0,18,17,10,16,13,13,0,20,17,19,17,0,3,27,19,18,19,11,20,18,0,9,19,18,20,24,30,17,17,14,31,24,27,21,28,26,26,17,25,20,10,20,17,17,25,21,0,0,19,18,18,17,18,17,0,24,12,25,19,0,3,17,24,14,21,13,11,17,9,0,17,18,9,15,17,24,17,7,8,17,8,11,11,9,17,16,9,15,9,30,8,16,10,10,0,0,10,9,14,14,15,16,0,11,16,9,9,0,7,10,8,14,8,16,11,11,19,17,0,17,12,17,23,22,16,11,19,22,18,13,16,19,24,9,19,11,9,19,12,18,15,12,0,0,12,12,17,16,26,16,0,18,13,17,12,0,2,11,18,15,12,11,25,18,18,18,17,0,20,31,24,18,30,15,18,23,20,25,19,16,26,15,18,20,17,24,25,10,16,24,0,0,26,26,10,30,18,9,0,26,17,17,17,0,3,25,18,29,26,17,26,19,20,9,12,20,0,16,18,9,17,24,31,17,29,29,28,19,18,24,31,30,19,18,19,11,25,18,0,0,22,21,9,17,10,9,0,28,13,18,27,0,11,19,18,14,26,11,26,16,24,15,17,31,16,0,34,16,29,16,21,23,18,24,17,20,27,15,16,16,14,25,22,9,15,25,0,0,24,25,12,31,17,8,0,17,18,17,16,0,3,23,16,30,24,18,17,17,30,17,23,24,18,34,0,22,23,16,28,30,24,18,24,27,34,14,24,17,8,23,14,17,22,17,0,0,17,17,19,26,23,15,0,25,17,24,16,0,4,17,23,24,16,11,9,14,17,24,22,18,9,16,22,0,19,10,16,27,17,8,20,16,24,10,16,9,13,24,11,23,21,11,0,0,9,9,23,14,25,29,0,16,8,17,8,0,7,15,16,22,9,17,31,18,17,17,16,30,17,29,23,19,0,16,16,35,19,24,19,16,22,24,16,18,18,23,25,10,18,23,0,0,22,22,7,30,15,10,0,15,15,15,15,0,3,23,18,30,24,23,14,15,14,7,11,15,24,16,16,10,16,0,14,17,15,17,17,17,14,16,17,15,10,14,18,7,17,14,0,0,17,17,8,15,7,9,0,14,9,14,23,0,8,14,14,19,14,7,27,20,31,8,19,18,31,21,28,16,16,14,0,22,33,26,31,25,26,24,35,28,18,18,22,17,33,19,0,0,19,17,18,17,18,18,0,34,12,25,18,0,4,19,25,16,27,14,25,17,24,17,22,23,17,23,30,27,35,17,22,0,26,15,27,23,29,24,23,16,11,22,17,17,26,16,0,0,16,16,14,23,22,17,0,23,16,22,15,0,2,16,24,23,17,15,31,19,27,8,18,20,29,18,24,17,19,15,33,26,0,27,35,24,25,26,36,29,19,18,16,19,32,19,0,0,18,19,16,18,17,16,0,33,10,25,19,0,5,17,28,14,26,12,33,18,21,11,13,25,29,24,18,8,24,17,26,15,27,0,29,20,18,24,27,26,24,20,25,10,23,25,0,0,27,27,10,23,11,8,0,27,12,17,20,0,2,27,18,22,32,17,26,16,28,11,16,19,28,17,24,20,19,17,31,27,35,29,0,25,22,26,33,26,22,17,17,15,36,18,0,0,18,17,14,15,15,17,0,33,9,23,17,0,1,16,22,16,22,10,18,18,26,9,19,16,19,20,27,16,16,17,25,23,24,20,25,0,24,15,25,16,7,17,17,16,22,18,0,0,19,19,17,18,17,17,0,25,13,24,18,0,3,17,23,16,17,12,19,18,26,17,24,26,18,27,34,24,22,14,26,29,25,18,22,24,0,15,24,17,8,24,15,17,22,19,0,0,17,18,18,23,24,15,0,27,25,25,17,0,9,18,24,21,17,10,30,22,17,16,9,15,24,15,14,10,24,16,24,24,26,24,26,15,15,0,23,30,18,24,19,10,25,17,0,0,15,15,8,16,10,11,0,24,16,15,16,0,2,16,18,17,26,15,25,18,25,9,19,18,31,16,24,16,16,17,35,23,36,27,33,25,24,23,0,28,18,17,18,17,32,17,0,0,26,20,16,16,17,16,0,34,13,24,25,0,2,18,25,14,24,10,26,26,20,15,11,20,30,16,17,9,18,15,28,16,29,26,26,16,17,30,28,0,19,24,17,11,25,17,0,0,20,18,9,16,10,9,0,27,17,17,17,0,3,19,18,14,25,10,24,11,10,9,9,17,19,14,8,13,18,10,18,11,19,24,22,7,8,18,18,19,0,10,18,8,23,19,0,0,16,16,8,14,11,12,0,18,1,10,8,0,0,19,9,19,23,15,18,26,20,30,19,24,18,25,23,24,23,14,18,22,18,20,17,17,24,24,17,24,10,0,16,17,18,21,0,0,18,18,16,23,20,19,0,17,25,19,18,0,9,19,17,23,18,18,24,18,17,8,12,25,19,22,14,11,25,18,22,17,16,25,17,17,15,19,18,17,18,16,0,8,19,24,0,0,25,24,7,21,9,14,0,16,11,15,18,0,1,23,16,25,25,16,12,10,17,16,18,10,11,9,17,23,10,7,17,17,19,10,15,16,17,10,17,11,8,17,8,0,15,10,1,1,10,10,25,12,17,23,1,18,4,18,10,1,11,10,20,8,12,19,23,17,25,10,15,16,25,15,22,21,18,17,33,26,32,23,36,22,22,25,32,25,23,18,19,15,0,18,0,0,16,16,15,14,18,21,0,32,8,24,15,0,2,19,23,19,24,9,25,20,21,10,12,24,18,25,17,11,23,14,19,16,19,25,18,18,19,17,17,17,19,21,24,10,18,0,0,0,24,24,10,23,14,11,0,18,11,19,18,0,3,27,18,24,26,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,27,18,19,10,12,26,22,24,17,9,22,17,19,16,18,27,18,19,17,15,26,20,16,18,25,10,16,24,0,0,0,28,9,23,10,10,0,19,13,19,25,0,3,25,17,21,25,17,26,17,18,9,12,26,21,25,17,9,22,17,17,16,19,27,17,19,18,15,20,18,16,18,24,10,16,24,0,0,28,0,10,23,10,8,0,19,14,18,19,0,2,24,17,21,24,17,10,10,18,14,17,10,9,12,19,23,7,8,18,14,16,10,14,17,18,8,16,9,8,16,7,25,15,10,1,1,9,10,0,11,16,23,1,16,2,17,10,1,10,9,17,9,9,17,25,16,17,14,16,30,17,31,26,14,30,15,17,23,18,23,15,18,23,16,16,16,14,23,21,12,14,23,1,1,23,23,11,0,16,7,1,16,17,17,17,1,5,23,19,32,25,18,11,13,18,15,26,18,10,17,23,25,15,7,18,22,17,11,15,17,24,10,17,10,11,20,9,17,18,14,0,0,10,10,16,16,0,19,0,17,11,19,11,0,2,12,17,16,11,11,9,13,17,16,16,9,9,8,15,29,10,9,18,17,16,8,17,17,15,11,16,9,12,19,14,23,21,11,0,0,10,8,23,7,19,0,0,17,2,18,8,0,10,13,16,12,12,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,29,20,24,11,18,26,28,17,25,16,15,14,34,23,33,27,33,25,27,24,34,27,18,17,16,18,32,18,0,0,19,19,16,16,17,17,0,0,11,26,20,0,3,21,24,14,25,10,10,17,12,16,13,17,13,18,17,8,15,9,12,16,10,12,9,13,25,16,13,17,1,25,11,4,8,11,0,0,13,14,2,17,11,2,0,11,0,11,12,0,10,10,10,14,11,5,18,19,25,9,17,17,18,17,24,17,15,14,25,22,25,17,23,24,25,15,24,17,10,19,15,18,24,19,1,1,19,18,17,17,19,18,1,26,11,0,17,1,2,19,25,17,17,10,17,17,19,9,12,17,27,16,16,8,15,23,18,15,19,20,17,18,17,16,25,17,8,18,18,10,15,18,0,0,25,19,10,17,11,8,0,20,12,17,0,0,10,17,18,15,18,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,7,3,3,7,2,3,11,3,4,7,3,8,4,2,5,2,1,3,9,2,2,3,0,9,1,11,2,3,0,0,3,2,10,5,2,10,0,3,10,2,10,0,0,3,5,1,5,13,28,27,17,10,11,25,19,23,17,15,23,14,19,16,17,27,16,17,18,16,18,19,19,19,23,10,19,27,0,0,25,24,9,23,12,13,0,21,10,19,17,0,3,0,17,24,25,18,20,19,24,8,18,18,18,16,23,16,18,14,25,24,28,18,22,23,24,18,25,18,9,17,16,20,23,18,1,1,17,17,17,19,17,16,1,24,10,25,18,1,5,17,0,15,19,12,22,18,14,14,15,29,14,30,24,22,30,19,16,23,14,22,16,16,21,17,14,14,19,23,25,8,19,24,1,1,21,21,9,32,16,12,1,14,14,17,15,1,1,24,15,0,21,14,35,19,21,8,12,26,26,24,16,9,24,14,27,17,26,32,22,17,17,26,24,25,23,18,25,12,24,26,0,0,25,24,9,25,11,12,0,25,11,17,18,0,5,25,19,21,0,20,24,11,13,16,11,17,11,18,11,17,23,7,14,15,12,17,10,12,10,15,10,10,15,18,16,19,9,19,0,0,17,17,17,18,11,16,0,10,5,10,11,0,13,18,12,14,20,0,} + +var trioAffinity = []int8{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,9,11,18,18,16,17,9,16,14,18,16,17,18,15,17,18,15,17,18,9,17,16,10,15,18,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,20,17,14,18,11,0,17,0,8,10,17,17,18,16,8,15,14,17,16,18,18,17,16,17,15,17,17,8,18,15,10,15,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,0,9,8,0,8,8,8,7,8,8,8,7,8,8,8,9,8,7,9,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,9,1,8,8,0,0,9,8,7,8,8,0,11,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,9,10,8,10,8,11,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,0,18,17,8,10,0,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,25,17,21,25,17,0,18,17,8,10,18,0,16,16,8,15,14,26,15,25,24,23,16,17,22,25,26,16,17,16,10,23,17,0,0,18,17,9,16,10,9,0,26,10,17,17,0,3,18,17,14,25,10,0,16,18,7,9,23,16,0,16,7,21,14,16,15,18,24,16,17,17,14,16,16,14,17,21,9,14,23,0,0,24,25,9,23,9,7,0,17,9,17,16,0,2,23,16,21,23,16,0,17,16,8,9,16,16,16,0,7,14,14,16,14,16,17,14,16,17,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,17,16,14,16,9,0,9,8,8,8,8,8,7,7,0,9,7,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,9,8,7,8,9,0,16,15,8,8,22,15,21,14,9,0,14,15,23,17,22,15,15,15,22,15,15,15,15,22,10,15,22,0,0,22,22,7,23,8,8,0,15,8,15,15,0,2,23,17,21,24,21,0,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,0,18,17,8,10,18,26,16,16,8,15,14,0,15,25,24,23,16,17,22,25,26,16,17,16,10,23,17,0,0,18,17,9,16,10,9,0,26,10,17,17,0,3,18,17,14,25,10,0,16,16,8,8,15,15,15,14,9,23,14,15,0,18,15,16,15,15,22,15,15,8,15,15,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,16,17,14,17,14,0,17,18,8,10,17,25,18,16,8,17,14,25,18,0,24,24,17,18,24,25,25,16,17,15,12,23,17,0,0,17,18,9,18,10,8,0,26,10,18,17,0,4,17,19,14,26,12,0,18,18,9,10,24,24,24,17,8,22,14,24,15,24,0,23,16,18,22,24,24,22,18,22,10,22,24,0,0,25,25,9,23,10,8,0,25,10,17,17,0,2,25,17,21,31,17,0,15,17,8,8,15,23,16,14,8,15,14,23,16,24,23,0,14,15,22,23,23,16,16,15,8,23,15,0,0,16,16,7,14,8,8,0,23,8,15,15,0,0,15,15,14,22,8,0,17,16,7,9,16,16,17,16,8,15,14,16,15,17,16,14,0,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,17,9,17,16,0,2,17,16,14,16,10,0,18,17,9,10,17,17,17,17,8,15,14,17,15,18,18,15,17,0,15,17,17,8,17,15,10,15,17,0,0,17,18,9,16,10,8,0,19,10,18,17,0,2,18,17,14,17,10,0,15,15,8,8,15,22,14,14,8,22,14,22,22,24,22,22,14,15,0,22,22,15,15,15,10,22,15,0,0,15,15,7,16,8,8,0,22,8,15,15,0,2,15,17,14,24,13,0,17,17,8,10,17,25,16,16,8,15,14,25,15,25,24,23,16,17,22,0,25,16,17,15,10,23,17,0,0,17,17,9,16,10,8,0,25,10,17,17,0,2,17,17,14,24,10,0,18,17,8,10,18,26,16,16,8,15,14,26,15,25,24,23,16,17,22,25,0,16,17,16,10,23,17,0,0,18,17,9,16,10,9,0,26,10,17,17,0,3,18,17,14,25,10,0,9,8,8,9,15,16,14,7,8,15,7,16,8,16,22,16,7,8,15,16,16,0,8,15,8,16,16,0,0,15,15,7,14,8,8,0,16,1,8,8,0,0,15,8,14,22,15,0,17,18,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,0,15,10,15,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,0,16,15,8,8,23,16,21,14,8,22,14,16,15,15,22,15,14,15,15,15,16,15,15,0,8,15,22,0,0,23,22,7,21,8,9,0,16,8,15,15,0,1,23,15,21,23,15,0,10,10,8,10,10,10,9,9,8,10,7,10,10,12,10,8,9,10,10,10,10,8,10,8,0,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,12,7,12,12,0,15,15,8,8,15,23,14,14,8,15,14,23,15,23,22,23,14,15,22,23,23,16,15,15,8,0,15,0,0,15,15,7,14,8,8,0,23,8,15,15,0,0,15,15,14,22,8,0,18,17,8,11,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,16,17,22,10,15,0,0,0,24,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,8,10,25,18,24,16,8,22,14,18,15,17,25,16,16,17,15,17,18,15,18,23,10,15,24,0,0,0,25,9,23,10,9,0,18,10,17,17,0,3,25,17,21,25,17,0,17,18,8,10,24,17,25,16,8,22,14,17,15,18,25,16,17,18,15,17,17,15,18,22,10,15,24,0,0,25,0,9,23,10,8,0,18,10,18,17,0,2,24,17,21,24,17,0,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,0,16,16,7,9,23,16,23,16,7,23,14,16,16,18,23,14,16,16,16,16,16,14,16,21,11,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,4,23,18,21,25,18,0,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,0,9,8,8,8,9,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,9,10,18,26,17,17,8,15,14,26,15,26,25,23,17,19,22,25,26,16,17,16,10,23,17,0,0,18,18,9,16,10,9,0,0,10,18,17,0,3,19,17,14,25,10,0,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,0,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,18,15,17,17,8,17,15,10,15,17,0,0,17,18,9,16,10,8,0,18,10,0,17,0,2,17,17,14,17,10,0,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,2,3,3,2,2,0,2,0,3,2,4,2,0,2,2,2,2,3,0,2,1,4,0,2,0,0,3,2,2,4,2,1,0,3,2,2,2,0,0,3,4,0,5,4,0,20,17,9,10,25,18,23,17,9,23,14,18,16,17,25,15,17,18,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,19,10,17,17,0,3,0,17,21,25,18,0,17,17,8,10,17,17,16,16,8,17,14,17,17,19,17,15,16,17,17,17,17,8,17,15,12,15,17,0,0,17,17,9,18,10,8,0,17,10,17,17,0,4,17,0,14,19,12,0,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,0,18,17,8,10,25,25,23,16,8,24,14,25,17,26,31,22,16,17,24,24,25,22,17,23,12,22,24,0,0,25,24,9,25,10,9,0,25,10,17,17,0,5,25,19,21,0,19,0,11,10,8,10,17,10,16,9,9,21,7,10,14,12,17,8,10,10,13,10,10,15,10,15,12,8,17,0,0,17,17,9,18,10,8,0,10,3,10,10,0,4,18,12,14,19,0,0,0,17,9,11,18,18,16,17,9,16,14,18,16,17,18,15,17,18,15,17,18,9,17,16,10,15,18,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,20,17,14,18,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,9,0,8,0,8,8,8,7,8,8,8,7,8,8,8,9,8,7,9,15,8,15,8,15,8,8,8,8,0,0,8,8,7,7,8,8,0,9,8,8,8,0,0,9,8,7,8,8,11,0,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,9,10,8,10,8,11,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,18,0,17,8,10,0,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,18,0,17,8,10,18,0,16,16,8,16,14,19,15,18,17,15,16,17,15,18,19,8,17,17,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,18,14,18,10,16,0,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,17,0,16,8,9,16,16,16,0,7,14,14,16,14,16,17,14,16,17,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,17,16,14,16,9,9,0,8,8,8,8,8,7,7,0,9,7,8,9,8,8,8,8,8,8,8,8,10,10,8,8,10,10,0,0,8,8,7,7,10,12,0,8,1,10,8,0,0,14,8,10,8,9,16,0,15,8,8,15,16,14,14,9,0,14,16,16,16,15,15,15,15,15,16,16,8,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,16,16,14,15,9,14,0,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,18,0,17,8,10,18,19,16,16,8,16,14,0,15,18,17,15,16,17,15,18,19,8,17,17,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,18,14,18,10,16,0,15,8,8,15,15,14,14,9,16,14,15,0,15,15,15,15,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,16,15,14,15,9,17,0,17,8,10,17,18,16,16,8,16,14,18,15,0,17,15,16,17,15,18,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,18,14,17,10,18,0,17,9,10,17,17,16,17,8,15,14,17,15,17,0,15,16,18,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,18,17,14,17,10,15,0,15,8,8,15,15,14,14,8,15,14,15,15,15,15,0,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,0,16,7,9,16,16,16,16,8,15,14,16,15,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,17,16,14,16,10,18,0,17,9,10,17,17,16,17,8,15,14,17,15,17,18,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,18,17,14,17,10,15,0,15,15,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,22,8,22,15,8,15,15,0,0,15,15,7,14,8,8,0,15,15,15,15,0,0,15,15,14,15,8,17,0,17,8,10,17,18,16,16,8,16,14,18,15,18,17,15,16,17,15,0,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,18,14,17,10,18,0,17,15,10,18,19,16,16,8,16,14,19,15,18,17,15,16,17,22,18,0,8,24,17,10,15,17,0,0,18,17,9,16,10,9,0,18,17,17,17,0,3,18,18,14,18,10,9,0,8,8,9,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,10,8,8,10,11,0,0,8,8,7,7,10,10,0,8,1,10,8,0,0,10,8,9,8,8,17,0,17,15,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,22,17,24,10,0,15,10,17,19,0,0,17,17,9,16,12,10,0,17,17,19,17,0,2,19,17,16,17,10,16,0,15,8,8,16,17,14,14,8,16,14,17,15,16,15,15,14,15,15,16,17,8,15,0,8,15,15,0,0,16,15,7,14,8,9,0,16,8,15,15,0,1,16,16,14,16,8,10,0,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,15,0,15,8,8,15,15,14,14,10,15,14,15,15,15,15,15,14,15,15,15,15,10,17,15,8,0,17,0,0,15,15,7,14,10,10,0,15,8,17,15,0,0,17,15,16,15,8,18,0,17,8,11,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,11,19,15,10,17,0,0,0,17,17,9,16,12,10,0,17,10,19,17,0,2,19,17,16,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,17,8,10,18,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,0,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,17,0,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,9,0,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,16,0,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,10,0,10,8,10,10,10,9,9,10,8,7,10,8,10,10,8,9,10,8,10,10,10,12,8,10,10,12,0,0,10,10,9,9,0,10,0,10,3,12,10,0,2,12,10,9,10,10,9,0,8,8,8,9,9,7,7,12,8,7,9,8,8,8,8,7,8,8,8,9,10,10,9,8,10,10,0,0,9,8,7,7,10,0,0,9,1,10,8,0,1,13,8,9,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,17,9,10,18,18,16,17,8,15,14,18,15,17,18,15,16,18,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,19,17,14,18,10,10,0,10,8,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,15,10,17,1,17,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,17,0,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,19,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,19,17,16,17,10,17,0,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,20,0,17,9,10,18,18,16,17,14,16,14,18,16,17,18,15,17,18,15,17,18,10,19,16,10,17,19,0,0,18,17,9,16,12,13,0,19,10,19,17,0,3,0,17,17,18,11,17,0,17,8,10,17,18,16,16,8,16,14,18,15,18,17,15,16,17,15,18,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,14,0,14,7,7,14,14,14,14,10,14,14,14,14,14,14,14,14,14,14,14,14,9,16,14,7,16,16,0,0,14,14,7,14,9,9,0,14,7,16,14,0,0,17,14,0,14,7,18,0,17,8,10,18,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,0,10,11,0,10,8,10,10,10,9,9,9,9,7,10,9,10,10,8,10,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,11,10,7,10,0,0,17,0,8,10,17,17,18,16,8,15,14,17,16,18,18,17,16,17,15,17,17,8,18,15,10,15,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,17,0,0,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,9,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,9,10,10,0,8,0,10,10,10,16,15,8,7,18,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,18,16,0,17,4,17,10,0,2,10,17,7,11,11,17,17,0,8,10,0,18,16,17,8,16,14,17,15,18,18,16,16,17,15,17,18,9,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,17,17,0,8,10,18,0,16,17,8,16,14,17,15,19,19,17,16,17,16,17,18,9,18,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,18,16,0,8,10,16,16,0,21,8,15,14,21,16,17,17,17,18,18,15,16,16,7,18,15,9,15,18,0,0,17,17,11,16,10,8,0,16,10,16,16,0,2,16,16,14,17,11,16,16,0,8,16,17,17,21,0,15,16,14,27,22,24,17,23,24,25,14,23,17,8,16,14,16,22,17,0,0,16,16,18,16,16,14,0,23,9,23,16,0,2,16,23,14,16,10,8,8,0,9,15,8,8,8,15,0,9,7,15,16,15,8,16,15,15,8,15,8,8,8,8,15,16,9,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,9,15,15,0,9,8,16,16,15,16,9,0,14,15,16,16,16,17,15,15,15,15,16,9,15,15,8,16,16,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,9,14,14,0,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,17,17,0,8,18,17,17,21,27,15,15,14,0,22,24,17,22,24,26,16,24,17,8,18,17,17,23,18,0,0,17,17,18,16,18,17,0,24,11,24,17,0,2,17,24,14,19,11,16,15,0,9,15,15,15,16,22,16,16,14,22,0,23,15,24,22,22,15,22,15,8,15,15,15,23,16,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,9,18,17,0,8,17,18,19,17,24,15,16,14,24,23,0,19,25,23,24,16,24,18,9,18,15,17,22,18,0,0,17,17,16,16,17,15,0,24,10,24,18,0,2,17,24,14,17,10,18,17,0,8,10,18,19,17,17,8,16,14,17,15,19,0,18,16,17,16,17,18,9,19,15,10,15,18,0,0,18,18,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,17,15,0,9,15,16,17,17,23,16,17,14,22,24,25,18,0,22,22,16,22,16,9,17,15,15,23,17,0,0,16,16,14,14,15,15,0,22,8,22,16,0,0,15,22,14,15,9,16,16,0,8,17,16,16,18,24,15,15,14,24,22,23,16,22,0,23,15,23,16,7,17,15,16,22,18,0,0,16,16,16,16,17,15,0,23,10,23,16,0,2,16,23,14,17,11,17,17,0,8,17,17,17,18,25,15,15,14,26,22,24,17,22,23,0,15,24,17,8,17,15,17,22,17,0,0,17,17,18,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,15,15,0,8,9,15,16,15,14,8,15,14,16,15,16,16,16,15,15,0,15,15,8,17,16,8,15,17,0,0,15,15,7,14,9,9,0,15,9,15,16,0,0,15,15,14,16,9,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,0,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,17,17,0,8,10,18,18,16,17,8,16,14,17,15,18,18,16,16,17,15,17,0,9,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,8,8,0,8,8,9,9,7,8,8,9,7,8,8,9,9,9,7,8,8,8,9,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,18,17,0,8,11,17,18,18,16,8,15,14,18,15,18,19,17,17,17,17,17,17,8,0,16,10,15,19,0,0,18,18,9,16,11,9,0,17,11,17,18,0,2,17,17,14,18,11,15,15,0,8,9,15,15,15,14,8,15,14,17,15,15,15,15,15,15,16,15,15,8,16,0,8,16,16,0,0,15,15,7,14,9,10,0,15,9,15,15,0,0,15,15,14,17,9,10,10,0,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,15,15,0,9,15,15,15,15,22,16,16,14,23,23,22,15,23,22,22,15,22,15,8,15,16,15,0,16,0,0,15,15,14,14,15,16,0,22,8,22,15,0,0,15,22,14,16,9,17,17,0,9,11,17,18,18,17,9,16,14,18,16,18,18,17,18,17,17,17,17,8,19,16,10,16,0,0,0,17,17,9,16,11,9,0,17,11,17,18,0,2,17,17,14,18,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,17,0,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,18,15,10,15,17,0,0,0,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,18,17,0,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,18,15,10,15,17,0,0,18,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,9,9,0,7,16,9,9,11,18,14,7,7,18,14,16,9,14,16,18,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,16,16,0,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,10,10,0,8,18,10,10,10,16,15,8,7,18,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,0,16,0,17,4,17,10,0,2,10,17,7,11,11,8,8,0,8,16,8,8,8,14,15,8,7,17,15,15,8,15,15,15,9,15,8,8,9,10,15,16,9,0,0,8,8,14,7,16,0,0,15,2,15,8,0,0,8,15,7,10,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,0,10,24,17,0,2,17,24,14,17,10,10,10,0,1,4,10,10,10,9,1,8,7,11,8,10,10,8,10,10,9,10,10,1,11,9,3,8,11,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,11,4,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,0,17,0,2,17,24,14,17,10,17,17,0,8,10,17,18,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,18,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,17,17,0,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,0,17,14,17,10,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,14,14,0,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,17,17,0,8,11,17,17,17,16,8,15,14,19,15,17,17,15,17,17,16,17,17,8,18,17,10,16,18,0,0,17,17,9,16,11,10,0,17,11,17,17,0,2,17,17,14,0,11,10,10,0,9,11,10,10,11,10,9,9,7,11,9,10,10,9,11,10,9,10,10,8,11,9,10,9,12,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,0,0,9,8,0,8,8,8,7,8,8,8,7,8,8,8,9,8,7,9,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,9,1,8,8,0,0,9,8,7,8,8,9,0,8,0,8,8,8,7,8,8,8,7,8,8,8,9,8,7,9,15,8,15,8,15,8,8,8,8,0,0,8,8,7,7,8,8,0,9,8,8,8,0,0,9,8,7,8,8,8,8,0,0,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,9,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,15,8,14,14,15,16,7,8,15,8,9,8,7,15,8,8,8,8,16,8,8,8,8,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,8,8,8,8,0,15,0,8,14,14,15,15,7,8,15,8,8,10,7,15,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,15,8,0,10,8,8,8,0,0,8,8,14,8,8,8,8,8,0,8,8,0,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,7,7,8,0,14,14,7,0,15,15,15,7,7,15,7,7,8,8,14,7,7,7,7,14,7,7,8,8,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,14,7,8,8,8,8,0,14,14,7,15,0,15,15,7,7,15,7,8,8,8,15,7,7,7,7,14,7,7,8,8,0,0,7,7,7,14,14,7,0,8,7,7,7,0,0,8,7,14,7,8,8,8,9,0,15,15,8,15,15,0,16,7,8,16,8,8,9,8,15,8,8,8,8,22,8,15,9,9,0,0,8,8,14,14,15,15,0,8,8,8,8,0,7,8,8,14,8,16,8,8,9,0,16,15,8,15,15,16,0,7,8,16,8,9,9,8,15,8,8,8,8,16,8,8,9,9,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,9,7,7,7,0,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,8,8,8,0,8,8,8,7,7,8,8,7,0,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,9,0,15,15,8,15,15,16,16,7,8,0,8,8,9,8,15,8,8,8,8,15,8,8,9,9,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,9,8,8,8,0,8,8,8,7,7,8,8,7,8,8,0,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,9,9,8,0,9,8,8,7,8,8,9,7,8,8,8,0,8,7,9,8,8,8,8,9,8,8,8,8,0,0,8,8,7,7,8,8,0,9,1,8,8,0,0,9,8,7,8,8,8,8,9,0,8,10,8,8,8,9,9,7,8,9,8,8,0,8,8,8,8,8,8,8,8,8,9,9,0,0,8,8,7,7,8,8,0,10,1,8,8,0,0,8,8,7,8,9,7,7,8,0,7,7,7,8,8,8,8,7,7,8,7,7,8,0,7,7,7,7,7,7,7,7,8,8,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,8,9,9,8,0,15,15,8,14,15,15,15,7,8,15,8,9,8,7,0,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,15,8,0,9,8,8,8,0,0,9,8,14,8,8,8,15,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,0,8,15,8,15,8,8,8,8,0,0,8,8,7,7,8,8,0,8,8,8,8,0,0,8,8,7,8,8,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,0,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,15,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,15,8,0,8,15,8,8,8,8,0,0,8,8,7,7,8,8,0,8,8,8,8,0,0,8,8,7,8,8,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,15,8,0,16,15,8,14,14,22,16,7,8,15,8,9,8,7,15,15,8,15,8,0,8,15,8,8,0,0,8,8,14,14,15,15,0,8,15,8,8,0,7,8,8,14,8,15,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,0,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,8,0,8,8,8,7,7,15,8,7,8,8,8,8,8,7,8,8,8,8,8,15,8,0,8,8,0,0,8,8,14,7,8,15,0,8,1,8,8,0,7,8,8,7,8,15,8,8,9,0,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,0,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,9,8,8,9,0,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,9,0,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,0,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,0,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,7,7,7,0,7,7,7,7,7,14,7,7,7,7,7,7,7,7,7,7,7,7,7,14,7,14,7,7,0,0,7,7,0,7,7,14,0,7,0,7,7,0,7,7,7,7,7,14,7,7,7,0,14,14,7,14,14,14,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,0,14,7,0,7,7,7,7,0,0,7,7,14,7,7,8,8,8,0,15,15,8,14,14,15,15,7,8,15,8,8,8,7,15,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,0,8,0,8,8,8,8,0,0,8,8,14,8,8,8,8,8,0,8,8,8,7,7,15,8,7,8,8,8,8,8,7,8,8,8,8,8,15,8,15,8,8,0,0,8,8,14,7,8,0,0,8,1,8,8,0,7,8,8,7,8,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,8,0,8,10,8,7,8,8,8,7,8,8,8,9,10,7,9,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,0,1,8,8,0,0,9,8,7,8,8,1,8,1,0,8,8,1,7,7,8,8,0,1,8,1,1,1,0,8,8,1,8,1,15,1,1,1,1,0,0,1,1,0,7,8,1,0,1,0,1,1,0,0,1,1,7,1,1,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,0,8,0,0,8,8,7,8,8,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,0,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,9,9,8,0,8,8,8,7,8,8,8,7,8,8,8,9,8,7,9,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,9,1,8,8,0,0,0,8,7,8,8,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,0,7,8,8,7,7,7,0,14,14,7,14,14,14,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,0,7,7,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,0,8,8,8,9,0,8,8,8,8,8,16,9,7,8,9,8,8,9,8,8,8,8,8,8,15,8,15,9,9,0,0,8,8,14,7,8,15,0,8,1,8,8,0,7,8,8,7,8,0,0,11,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,9,10,8,10,8,11,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,11,0,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,9,10,8,10,8,11,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,10,10,0,8,0,10,10,10,16,15,8,7,18,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,18,16,0,17,4,17,10,0,2,10,17,7,11,11,8,8,8,0,0,15,8,14,14,15,16,7,8,15,8,9,8,7,15,8,8,8,8,16,8,8,8,8,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,15,0,0,10,16,16,15,15,7,10,15,10,10,8,9,17,8,10,10,8,17,8,10,8,10,0,0,10,10,9,16,17,8,0,10,10,10,10,0,2,10,10,14,10,10,10,10,10,8,0,10,0,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,12,12,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,9,9,10,14,0,16,9,0,16,14,14,7,10,14,9,9,7,10,16,8,9,9,7,17,8,9,7,10,0,0,9,9,9,16,17,8,0,9,10,9,9,0,2,9,9,14,10,10,9,9,16,14,0,16,9,16,0,21,14,7,16,21,16,9,14,16,23,7,16,9,7,16,7,16,14,9,0,0,9,9,16,16,23,14,0,16,9,16,9,0,2,9,16,14,9,9,8,8,15,15,0,15,8,14,21,0,15,7,15,22,15,8,15,14,22,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,22,15,0,15,8,15,8,0,0,8,15,14,8,8,8,8,8,16,0,15,8,14,14,15,0,7,8,15,8,9,8,7,15,8,8,8,8,16,8,8,8,8,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,8,7,7,7,7,0,7,9,7,7,7,7,0,7,7,7,9,7,9,7,7,9,7,7,7,9,7,7,7,0,0,9,9,7,7,7,7,0,7,2,7,9,0,0,7,7,7,7,7,10,10,18,8,0,10,10,10,16,15,8,7,0,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,18,16,0,17,4,17,10,0,2,10,17,7,11,11,8,8,15,15,0,15,8,14,21,22,15,7,15,0,15,8,15,14,22,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,22,15,0,15,8,15,8,0,0,8,15,14,8,8,10,10,17,8,0,10,10,9,16,15,8,7,17,15,0,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,10,10,10,9,0,10,12,9,9,8,9,9,10,8,10,0,8,11,10,8,12,10,8,11,10,10,8,10,0,0,12,12,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,8,8,15,8,0,8,8,7,14,15,8,7,15,15,15,8,0,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,9,9,17,7,0,9,11,10,16,14,7,9,17,14,16,11,14,0,16,8,18,9,7,10,10,16,14,10,0,0,11,11,16,9,17,15,0,16,5,16,11,0,2,9,16,7,10,10,10,10,17,15,0,17,10,16,23,22,15,7,17,22,17,10,15,16,0,8,17,10,8,17,8,17,15,10,0,0,10,10,16,16,24,15,0,17,10,17,10,0,2,10,17,14,10,10,8,8,9,8,0,8,8,8,7,8,8,7,9,8,8,8,8,8,8,0,8,8,8,9,9,8,8,9,0,0,8,8,7,7,9,9,0,8,2,8,8,0,0,8,8,7,9,9,10,10,17,8,0,10,12,9,16,15,8,9,17,15,17,12,15,18,17,8,0,10,8,10,10,17,15,10,0,0,12,12,16,9,17,15,0,17,5,17,12,0,2,10,17,7,10,10,10,10,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,11,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,8,8,0,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,11,16,0,17,10,17,16,15,16,7,11,15,10,11,8,10,17,9,10,10,8,0,9,10,8,11,0,0,10,10,9,16,18,9,0,10,11,10,10,0,2,10,10,14,11,11,8,8,9,8,0,8,10,8,7,8,8,9,9,8,8,10,8,10,8,9,10,8,8,9,0,8,8,9,0,0,10,10,7,7,9,9,0,8,4,8,10,0,0,8,8,7,9,9,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,11,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,8,8,15,8,0,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,0,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,11,11,11,8,0,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,9,11,9,10,8,0,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,8,0,10,12,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,0,12,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,10,10,10,8,0,10,12,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,12,0,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,9,9,16,7,0,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,9,9,9,14,0,16,9,16,16,14,14,7,9,14,9,9,7,9,16,7,9,9,7,16,7,9,7,9,0,0,9,9,9,0,16,7,0,9,9,9,9,0,2,9,9,14,9,9,10,10,18,15,0,17,10,17,23,22,15,7,18,22,17,10,15,17,24,9,17,10,8,18,9,17,15,11,0,0,10,10,16,16,0,16,0,17,11,17,10,0,2,10,17,14,11,11,8,8,16,8,0,8,8,8,14,15,8,7,16,15,15,8,15,15,15,9,15,8,8,9,9,15,15,9,0,0,8,8,14,7,16,0,0,15,2,15,8,0,0,8,15,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,0,3,17,10,0,2,10,17,7,10,10,3,3,4,8,0,10,5,10,9,8,8,2,4,8,3,5,1,5,10,2,5,3,1,11,4,3,1,4,0,0,5,5,2,9,11,2,0,3,0,3,5,0,2,3,3,7,4,4,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,17,3,0,10,0,2,10,17,7,10,10,10,10,10,8,0,10,12,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,12,12,9,9,10,8,0,10,5,10,0,0,2,10,10,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,10,10,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,0,10,7,10,10,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,0,7,10,10,7,7,7,14,0,14,7,14,14,14,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,0,7,7,10,10,11,8,0,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,0,11,10,10,11,8,0,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,0,0,18,17,8,10,0,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,25,17,21,25,17,18,0,17,8,10,0,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,17,17,0,8,10,0,18,16,17,8,16,14,17,15,18,18,16,16,17,15,17,18,9,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,8,8,8,0,15,0,8,14,14,15,15,7,8,15,8,8,10,7,15,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,15,8,0,10,8,8,8,0,0,8,8,14,8,8,10,10,10,15,0,0,10,16,16,15,15,7,10,15,10,10,8,9,17,8,10,10,8,17,8,10,8,10,0,0,10,10,9,16,17,8,0,10,10,10,10,0,2,10,10,14,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,8,10,0,0,16,17,9,16,15,18,16,19,18,17,16,17,15,18,20,10,17,16,10,16,17,0,0,19,18,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,23,16,16,14,16,0,16,0,23,15,28,14,16,21,16,23,14,16,24,14,16,16,14,23,21,9,14,23,0,0,23,23,9,30,16,7,0,16,16,16,16,0,2,23,16,28,23,16,16,16,17,14,16,0,17,23,0,14,22,14,16,21,17,17,15,16,23,14,16,17,8,23,14,9,14,16,0,0,16,16,9,23,16,7,0,16,16,16,16,0,2,16,16,21,16,9,8,8,8,15,15,0,9,15,14,0,15,8,8,16,9,8,9,7,17,8,9,9,9,15,8,8,9,8,0,0,9,9,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,8,22,15,16,15,15,0,16,28,22,15,0,14,15,22,16,23,16,14,22,15,15,16,16,22,22,8,15,22,0,0,22,22,7,28,15,8,0,15,15,15,15,0,0,22,15,28,22,15,14,14,14,7,7,0,15,14,14,8,14,0,14,15,15,14,15,14,14,14,15,15,8,14,14,7,15,14,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,18,18,17,8,10,0,18,16,16,8,15,14,0,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,15,15,15,15,15,0,16,21,21,16,22,15,15,0,16,15,16,14,22,15,16,16,9,22,15,8,16,15,0,0,16,16,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,17,17,18,8,10,0,19,16,17,9,16,15,17,16,0,18,17,16,17,15,18,19,10,17,15,10,16,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,24,17,18,8,10,0,18,23,17,8,23,14,17,15,18,0,16,16,17,15,17,18,16,17,22,10,15,24,0,0,24,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,15,15,16,10,8,0,17,14,15,9,16,15,15,16,17,16,0,14,15,15,16,17,10,15,15,8,16,15,0,0,16,16,7,14,8,8,0,17,8,15,15,0,0,15,15,14,15,8,16,16,16,7,9,0,16,16,16,7,14,14,16,14,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,17,17,17,15,17,0,17,24,23,17,22,14,17,22,17,17,15,16,0,15,17,17,8,24,15,10,15,17,0,0,17,17,9,23,17,8,0,17,17,17,17,0,2,17,17,21,17,10,15,15,15,8,8,0,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,17,17,8,10,0,18,16,16,9,15,15,17,16,18,17,16,16,17,15,0,18,9,17,15,10,16,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,18,18,18,8,10,0,20,16,17,9,16,15,18,16,19,18,17,16,17,15,18,0,10,17,16,10,16,17,0,0,19,18,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,15,8,9,8,8,0,10,14,8,9,16,8,8,9,10,16,10,7,8,8,9,10,0,8,15,8,9,15,0,0,16,16,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,15,17,17,17,15,17,0,17,23,23,15,22,14,17,22,17,17,15,16,24,15,17,17,8,0,15,10,15,17,0,0,17,17,9,23,17,8,0,17,17,17,17,0,2,17,17,21,17,10,23,16,15,8,8,0,16,21,14,8,22,14,16,15,15,22,15,14,15,15,15,16,15,15,0,8,15,22,0,0,23,22,7,21,8,9,0,16,8,15,15,0,1,23,15,21,23,15,10,10,10,8,10,0,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,15,15,15,8,8,0,16,14,14,9,15,15,15,16,16,15,16,14,15,15,16,16,9,15,15,8,0,15,0,0,16,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,24,17,17,8,10,0,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,0,0,0,24,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,18,17,8,10,0,19,23,16,9,22,15,18,16,18,24,16,16,17,15,18,19,16,17,23,10,16,24,0,0,0,25,9,23,10,9,0,18,10,17,17,0,3,25,17,21,25,17,24,17,17,8,10,0,18,23,16,9,22,15,17,16,18,24,16,16,17,15,18,18,16,17,22,10,16,24,0,0,25,0,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,9,9,9,7,9,0,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,23,16,16,14,16,0,16,30,23,14,28,14,16,21,16,23,14,16,23,14,16,16,14,23,21,9,14,23,0,0,23,23,9,0,16,7,0,16,16,16,16,0,2,23,16,28,23,16,10,10,10,15,17,0,10,16,16,15,15,7,10,15,10,10,8,9,17,8,10,10,8,17,8,10,8,10,0,0,10,10,9,16,0,8,0,10,10,10,10,0,2,10,10,14,10,10,9,9,8,8,8,0,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,17,10,10,0,18,16,16,8,15,14,18,15,17,17,17,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,18,17,14,18,10,10,10,10,8,10,0,10,16,16,8,15,7,10,15,10,10,8,9,17,8,10,10,1,17,8,3,8,10,0,0,10,10,2,16,10,1,0,10,0,10,10,0,2,10,10,14,10,3,17,17,17,8,10,0,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,17,17,8,10,0,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,0,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,25,18,17,8,10,0,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,0,17,21,25,17,17,17,17,8,10,0,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,21,14,14,14,14,0,14,28,21,14,28,14,14,21,14,21,14,14,21,14,14,14,14,21,21,7,14,21,0,0,21,21,7,28,14,7,0,14,14,14,14,0,0,21,14,0,21,14,25,18,17,8,10,0,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,25,17,21,0,17,17,10,10,8,10,0,10,16,9,8,15,7,10,8,10,17,8,9,10,8,10,10,15,10,15,10,8,17,0,0,17,17,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,0,18,17,8,10,18,0,16,16,8,15,14,26,15,25,24,23,16,17,22,25,26,16,17,16,10,23,17,0,0,18,17,9,16,10,9,0,26,10,17,17,0,3,18,17,14,25,10,18,0,17,8,10,18,0,16,16,8,16,14,19,15,18,17,15,16,17,15,18,19,8,17,17,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,18,14,18,10,17,17,0,8,10,18,0,16,17,8,16,14,17,15,19,19,17,16,17,16,17,18,9,18,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,8,8,8,0,8,8,0,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,10,8,0,10,0,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,12,12,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,18,18,18,8,10,0,0,16,17,9,16,15,18,16,19,18,17,16,17,15,18,20,10,17,16,10,16,17,0,0,19,18,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,7,9,16,0,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,17,7,9,17,0,16,0,7,15,14,16,14,17,17,15,16,16,14,16,17,8,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,10,16,16,0,2,16,16,14,16,9,8,8,8,8,8,9,0,7,7,0,8,8,8,9,9,8,9,7,8,8,9,9,9,8,8,8,9,8,0,0,9,9,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,15,16,16,8,8,16,0,14,15,8,0,14,16,15,17,16,16,14,15,15,16,17,9,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,14,14,14,7,9,15,0,14,14,8,14,0,14,15,15,16,15,16,14,14,17,15,8,14,16,7,15,14,0,0,17,17,7,14,7,7,0,14,9,14,23,0,7,14,14,14,14,7,26,19,17,8,10,18,0,16,16,8,16,14,0,15,26,25,24,16,17,23,27,28,17,17,17,10,24,17,0,0,18,17,9,16,10,9,0,27,10,17,17,0,3,19,18,14,25,10,15,15,15,8,8,16,0,14,14,9,15,15,15,0,16,15,16,14,15,15,16,16,9,15,15,8,16,15,0,0,16,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,25,18,19,8,10,19,0,16,17,9,17,15,26,16,0,26,26,16,17,23,27,28,18,18,16,10,24,18,0,0,18,18,9,16,10,8,0,25,10,17,18,0,2,17,18,14,24,10,24,17,19,8,12,18,0,16,17,8,16,16,25,15,26,0,25,18,17,24,27,26,17,18,17,10,23,18,0,0,19,19,9,16,10,8,0,25,12,17,20,0,2,18,17,14,24,10,23,15,17,8,8,17,0,14,15,9,16,15,24,16,26,25,0,14,15,24,25,26,19,16,15,8,25,16,0,0,16,16,7,14,8,8,0,24,8,15,16,0,0,16,15,14,22,8,16,16,16,7,11,16,0,16,16,7,14,16,16,14,16,18,14,0,16,14,18,16,7,16,16,9,14,16,0,0,18,18,9,16,9,7,0,16,11,16,18,0,2,16,16,14,16,9,17,17,17,8,10,17,0,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,22,15,16,8,8,15,0,14,14,8,15,14,23,15,23,24,24,14,15,0,23,23,16,16,15,8,23,16,0,0,15,15,7,14,8,8,0,23,8,15,16,0,0,16,15,14,22,8,25,18,17,8,12,18,0,16,16,9,16,17,27,16,27,27,25,18,17,23,0,28,18,17,18,10,25,17,0,0,20,20,9,16,10,8,0,26,12,17,19,0,2,18,18,14,24,10,26,19,18,8,10,20,0,16,17,9,17,15,28,16,28,26,26,16,17,23,28,0,19,17,17,10,25,17,0,0,19,18,9,16,10,9,0,27,10,17,17,0,3,19,18,14,25,10,16,8,9,8,8,10,0,7,8,9,9,8,17,9,18,17,19,7,8,16,18,19,0,8,8,8,18,8,0,0,9,9,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,17,17,18,8,10,17,0,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,0,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,16,17,15,8,10,16,0,14,14,8,16,16,17,15,16,17,15,16,15,15,18,17,8,15,0,8,15,15,0,0,18,17,7,14,8,9,0,16,10,15,17,0,1,16,16,14,16,8,10,10,10,8,10,10,0,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,23,15,15,8,8,16,0,14,14,9,15,15,24,16,24,23,25,14,15,23,25,25,18,15,15,8,0,15,0,0,16,16,7,14,8,8,0,24,8,15,15,0,0,16,15,14,22,8,17,17,18,8,10,17,0,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,18,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,17,8,12,19,0,16,16,9,15,17,18,16,18,19,16,18,17,15,20,19,9,17,18,10,16,17,0,0,0,20,9,16,10,9,0,18,12,17,19,0,3,18,17,14,18,10,17,17,17,8,12,18,0,16,16,9,15,17,17,16,18,19,16,18,17,15,20,18,9,17,17,10,16,17,0,0,20,0,9,16,10,8,0,17,12,17,19,0,2,17,17,14,17,10,9,9,9,7,9,9,0,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,16,16,16,7,9,16,0,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,10,10,10,8,10,10,0,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,8,8,8,9,0,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,18,17,8,10,18,0,16,16,8,15,14,27,15,25,25,24,16,17,23,26,27,17,17,16,10,24,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,19,17,14,25,10,10,10,10,1,5,10,0,9,10,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,17,17,17,8,10,17,0,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,17,18,8,12,17,0,16,16,8,15,23,17,15,18,20,16,18,17,16,19,17,8,18,17,10,15,18,0,0,19,19,9,16,10,8,0,17,12,17,0,0,9,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,0,2,2,0,0,7,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,9,0,0,3,2,0,3,2,18,18,17,8,10,18,0,16,16,8,15,14,19,15,17,18,16,16,17,16,18,19,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,0,17,14,18,10,17,18,17,8,10,17,0,16,16,8,16,14,18,15,18,17,15,16,17,15,18,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,14,14,14,7,7,14,0,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,25,18,17,8,10,18,0,16,16,8,15,14,25,15,24,24,22,16,17,22,24,25,15,17,16,10,22,17,0,0,18,17,9,16,10,9,0,25,10,17,17,0,3,18,17,14,0,10,10,10,10,8,10,10,0,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,0,16,18,7,9,23,16,0,16,7,21,14,16,15,18,24,16,17,17,14,16,16,14,17,21,9,14,23,0,0,24,25,9,23,9,7,0,17,9,17,16,0,2,23,16,21,23,16,16,0,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,18,16,0,8,10,16,16,0,21,8,15,14,21,16,17,17,17,18,18,15,16,16,7,18,15,9,15,18,0,0,17,17,11,16,10,8,0,16,10,16,16,0,2,16,16,14,17,11,7,7,8,0,14,14,7,0,15,15,15,7,7,15,7,7,8,8,14,7,7,7,7,14,7,7,8,8,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,14,7,8,9,9,10,14,0,16,9,0,16,14,14,7,10,14,9,9,7,10,16,8,9,9,7,17,8,9,7,10,0,0,9,9,9,16,17,8,0,9,10,9,9,0,2,9,9,14,10,10,23,16,16,14,16,0,16,0,23,15,28,14,16,21,16,23,14,16,24,14,16,16,14,23,21,9,14,23,0,0,23,23,9,30,16,7,0,16,16,16,16,0,2,23,16,28,23,16,16,16,16,7,9,16,0,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,21,15,16,23,16,0,0,15,22,15,20,22,16,16,15,18,25,14,16,16,7,23,14,9,15,17,0,0,16,16,12,24,16,7,0,16,16,16,16,0,3,16,16,22,16,10,7,7,8,15,14,15,7,0,15,0,15,7,7,15,7,7,8,8,15,7,7,7,7,14,7,7,8,8,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,14,7,8,21,14,15,15,14,28,14,0,22,15,0,14,14,22,14,21,15,15,21,14,14,14,14,21,21,7,15,22,0,0,21,21,7,28,14,7,0,14,14,14,14,0,0,21,14,28,21,15,14,14,14,7,7,14,14,0,15,7,14,0,14,14,14,14,14,15,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,15,7,7,0,14,7,14,14,0,1,14,14,16,14,7,16,16,21,7,10,16,16,0,20,7,14,14,0,14,16,16,14,17,18,15,16,16,7,17,15,9,14,17,0,0,16,16,11,16,10,8,0,16,10,16,16,0,2,16,16,14,17,10,15,14,16,15,14,21,14,0,22,15,22,14,14,0,15,14,16,15,21,14,14,14,7,21,14,7,15,15,0,0,14,14,7,21,14,7,0,14,14,14,14,0,0,14,14,21,14,8,18,16,17,7,9,16,16,0,16,7,14,14,16,15,0,16,15,17,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,17,9,17,16,0,2,16,16,14,16,9,24,16,17,7,9,23,16,0,16,7,21,14,16,14,16,0,15,16,16,14,16,16,14,17,21,9,14,23,0,0,24,24,9,23,9,7,0,16,9,16,16,0,2,23,16,21,23,16,16,14,17,8,7,14,14,0,15,8,15,14,14,16,15,15,0,15,14,14,14,14,7,15,14,7,15,15,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,8,17,16,18,8,10,16,16,0,18,8,15,15,17,15,17,16,15,0,17,15,16,16,7,17,15,9,15,18,0,0,16,17,10,17,10,8,0,17,10,17,16,0,3,16,16,15,17,11,17,16,18,14,16,24,16,0,25,15,21,14,18,21,17,16,14,17,0,14,16,16,7,23,14,9,14,16,0,0,16,17,11,23,16,7,0,17,16,17,16,0,2,16,16,21,16,9,14,14,15,7,8,14,14,0,14,7,14,14,15,14,14,14,14,15,14,0,14,14,7,15,15,7,14,15,0,0,14,14,7,14,8,8,0,14,8,14,14,0,0,14,14,14,15,8,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,0,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,0,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,14,7,7,7,7,14,7,0,7,7,14,7,7,7,7,14,7,7,7,7,7,7,0,7,14,7,7,14,0,0,14,14,7,14,7,7,0,7,0,7,7,0,0,14,7,14,14,14,17,16,18,14,17,23,16,0,23,14,21,14,17,21,16,17,15,17,23,15,16,16,7,0,15,9,14,17,0,0,17,17,9,23,17,8,0,16,17,16,16,0,2,16,16,21,17,10,21,14,15,7,8,21,14,0,14,7,21,14,15,14,14,21,14,15,14,15,14,14,14,15,0,7,14,22,0,0,21,21,7,21,8,8,0,14,8,14,14,0,0,21,14,21,22,15,9,9,9,7,9,9,9,0,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,0,7,9,0,0,9,9,9,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,14,14,15,8,7,14,14,0,15,8,15,14,14,15,14,14,15,15,14,14,14,14,7,14,14,7,0,15,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,8,23,16,18,8,10,23,16,0,17,8,22,14,17,15,16,23,15,18,16,15,16,16,14,17,22,9,15,0,0,0,23,23,9,23,10,8,0,16,10,16,16,0,2,23,16,21,24,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,16,17,7,9,23,16,0,16,7,21,14,16,14,16,24,15,16,16,14,16,16,14,17,21,9,14,23,0,0,0,24,9,23,9,7,0,16,9,16,16,0,2,23,16,21,23,16,25,16,17,7,9,23,16,0,16,7,21,14,16,14,17,24,15,17,17,14,16,16,14,17,21,9,14,23,0,0,24,0,9,23,9,7,0,17,9,17,16,0,2,23,16,21,23,16,9,9,11,7,9,9,9,0,12,7,7,8,11,7,9,9,7,10,11,7,9,9,7,9,7,9,7,9,0,0,9,9,0,10,9,7,0,9,2,9,9,0,3,9,9,8,9,9,23,16,16,14,16,30,16,0,24,14,28,15,16,21,16,23,14,17,23,14,16,16,14,23,21,9,14,23,0,0,23,23,10,0,16,7,0,16,16,16,16,0,3,23,16,29,23,16,9,9,10,14,17,16,9,0,16,14,14,7,10,14,9,9,7,10,16,8,9,9,7,17,8,9,7,10,0,0,9,9,9,16,0,8,0,9,10,9,9,0,2,9,9,14,10,10,7,7,8,7,8,7,7,0,7,7,7,7,8,7,7,7,7,8,7,8,7,7,7,8,8,7,7,8,0,0,7,7,7,7,8,0,0,7,1,7,7,0,0,7,7,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,16,16,7,9,16,16,0,16,7,14,14,16,14,17,16,14,17,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,0,9,17,16,0,2,16,16,14,16,9,9,9,10,7,10,16,9,0,16,7,14,7,10,14,9,9,7,10,16,8,9,9,0,17,8,2,7,10,0,0,9,9,2,16,10,1,0,9,0,9,9,0,2,9,9,14,10,3,17,16,16,7,9,16,16,0,16,7,14,14,16,14,17,16,14,17,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,17,9,0,16,0,2,16,16,14,16,9,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,0,0,2,16,16,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,0,3,0,0,1,2,0,2,2,0,3,2,0,2,2,0,2,0,2,0,2,0,0,2,2,3,3,2,0,0,2,2,2,2,0,0,2,2,1,2,2,23,16,16,7,9,23,16,0,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,23,9,23,9,7,0,16,9,16,16,0,2,0,16,21,23,16,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,0,14,16,9,21,14,14,14,14,28,14,0,22,14,28,16,14,21,14,21,14,15,21,14,14,14,14,21,21,7,14,21,0,0,21,21,8,29,14,7,0,14,14,14,14,0,1,21,14,0,21,14,23,16,17,7,10,23,16,0,16,7,21,14,17,14,16,23,14,17,16,15,16,16,14,17,22,9,14,24,0,0,23,23,9,23,10,8,0,16,10,16,16,0,2,23,16,21,0,17,16,9,11,8,10,16,9,0,10,8,15,7,10,8,9,16,8,11,9,8,9,9,14,10,15,9,8,18,0,0,16,16,9,16,10,8,0,9,3,9,9,0,2,16,9,14,17,0,0,17,16,8,9,16,16,16,0,7,14,14,16,14,16,17,14,16,17,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,17,16,14,16,9,17,0,16,8,9,16,16,16,0,7,14,14,16,14,16,17,14,16,17,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,17,16,14,16,9,16,16,0,8,16,17,17,21,0,15,16,14,27,22,24,17,23,24,25,14,23,17,8,16,14,16,22,17,0,0,16,16,18,16,16,14,0,23,9,23,16,0,2,16,23,14,16,10,8,8,8,0,14,14,7,15,0,15,15,7,7,15,7,8,8,8,15,7,7,7,7,14,7,7,8,8,0,0,7,7,7,14,14,7,0,8,7,7,7,0,0,8,7,14,7,8,9,9,16,14,0,16,9,16,0,21,14,7,16,21,16,9,14,16,23,7,16,9,7,16,7,16,14,9,0,0,9,9,16,16,23,14,0,16,9,16,9,0,2,9,16,14,9,9,16,16,17,14,16,0,17,23,0,14,22,14,16,21,17,17,15,16,23,14,16,17,8,23,14,9,14,16,0,0,16,16,9,23,16,7,0,16,16,16,16,0,2,16,16,21,16,9,16,16,17,7,9,17,0,16,0,7,15,14,16,14,17,17,15,16,16,14,16,17,8,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,10,16,16,0,2,16,16,14,16,9,16,16,21,15,16,23,16,0,0,15,22,15,20,22,16,16,15,18,25,14,16,16,7,23,14,9,15,17,0,0,16,16,12,24,16,7,0,16,16,16,16,0,3,16,16,22,16,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,15,15,21,14,7,15,0,0,15,7,14,22,14,7,15,15,21,7,14,7,7,14,7,14,15,8,0,0,7,7,14,14,21,14,0,14,7,14,7,0,0,7,14,14,7,8,14,14,16,15,14,22,15,22,0,15,0,14,14,22,15,15,16,15,21,14,14,15,8,21,14,7,15,15,0,0,14,14,7,21,14,7,0,14,14,14,14,0,0,14,14,21,14,8,14,14,14,7,7,14,14,15,0,7,14,0,14,14,14,14,14,15,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,15,7,7,0,14,7,14,14,0,1,14,14,16,14,7,16,16,27,7,16,16,16,20,0,14,14,14,0,21,23,16,21,23,25,14,23,16,7,16,14,16,21,16,0,0,16,16,18,16,16,14,0,23,9,23,16,0,2,16,23,14,16,9,14,14,22,15,21,21,14,22,0,22,22,14,21,0,21,14,22,22,28,14,21,14,7,21,14,14,22,15,0,0,14,14,14,21,21,14,0,21,14,21,14,0,0,14,21,21,14,8,16,16,24,7,16,17,17,16,0,14,15,14,23,21,0,17,22,23,23,14,23,17,8,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,23,14,16,9,17,17,17,8,9,17,17,16,0,7,15,14,16,14,17,0,15,16,17,14,16,17,8,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,17,16,14,16,9,14,14,23,8,14,15,15,15,0,15,16,14,21,22,22,15,0,22,21,14,21,15,8,14,14,14,22,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,16,16,24,8,16,16,16,18,0,15,15,15,23,22,23,16,22,0,23,14,23,16,7,16,14,16,22,17,0,0,16,16,17,17,16,15,0,23,9,23,16,0,3,16,23,15,16,10,17,17,25,15,23,23,16,25,0,21,21,14,25,28,23,17,21,23,0,14,23,16,7,23,14,16,21,16,0,0,16,16,18,23,23,14,0,24,16,23,16,0,2,17,23,21,16,9,14,14,14,7,7,14,14,14,0,7,14,14,14,14,14,14,14,14,14,0,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,16,16,23,7,16,16,16,16,0,14,14,14,23,21,23,16,21,23,23,14,0,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,23,14,16,9,16,16,17,7,9,17,17,16,0,7,15,14,16,14,17,17,15,16,16,14,16,0,8,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,7,7,8,7,7,8,8,7,0,7,8,7,7,7,8,8,8,7,7,7,7,8,0,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,16,16,16,14,16,23,16,23,0,14,21,14,16,21,16,16,14,16,23,14,16,16,7,0,14,9,14,16,0,0,16,16,9,23,16,7,0,16,16,16,16,0,2,16,16,21,16,9,14,14,14,7,7,14,14,14,0,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,0,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,9,9,16,7,16,9,9,9,0,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,0,14,9,0,0,9,9,16,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,14,14,22,8,14,14,14,15,0,15,15,14,21,22,21,14,22,22,21,14,21,14,7,14,14,14,0,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,16,16,17,8,9,16,16,17,0,8,15,14,16,15,16,16,15,17,16,14,16,16,7,16,14,9,15,0,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,0,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,0,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,9,9,18,7,16,9,9,12,0,14,7,8,18,14,16,9,14,17,18,7,16,9,7,9,7,16,14,9,0,0,9,9,0,10,16,14,0,16,2,16,9,0,3,9,16,8,9,9,16,16,16,14,16,23,16,24,0,14,21,15,16,21,16,16,14,17,23,14,16,16,7,23,14,9,14,16,0,0,16,16,10,0,16,7,0,16,16,16,16,0,3,16,16,23,16,9,9,9,16,14,23,16,9,16,0,21,14,7,16,21,16,9,14,16,23,7,16,9,7,16,7,16,14,9,0,0,9,9,16,16,0,14,0,16,9,16,9,0,2,9,16,14,9,9,7,7,14,7,14,7,7,7,0,14,7,7,14,14,14,7,14,15,14,7,14,7,7,7,7,14,14,7,0,0,7,7,14,7,14,0,0,14,0,14,7,0,0,7,14,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,23,8,16,16,16,16,0,14,14,14,23,21,23,17,21,23,24,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,0,9,23,16,0,2,17,23,14,16,9,9,9,9,7,9,16,10,16,0,7,14,7,9,14,9,9,7,9,16,7,9,9,0,16,7,2,7,9,0,0,9,9,2,16,9,0,0,9,0,9,9,0,2,9,9,14,9,2,16,16,23,7,16,16,16,16,0,14,14,14,23,21,23,16,21,23,23,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,0,16,0,2,16,23,14,16,9,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,0,0,2,16,16,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,3,0,0,0,1,2,0,2,2,0,3,2,0,2,2,0,2,0,2,0,2,0,0,2,2,3,3,2,0,0,2,2,2,2,0,0,2,2,1,2,2,17,17,16,8,9,16,16,16,0,7,14,14,16,14,16,17,14,16,17,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,0,16,14,16,9,16,16,23,7,16,16,16,16,0,14,14,14,23,21,23,16,21,23,23,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,0,14,16,9,14,14,14,14,14,21,14,22,0,14,21,16,14,21,14,14,14,15,21,14,14,14,7,21,14,7,14,14,0,0,14,14,8,23,14,7,0,14,14,14,14,0,1,14,14,0,14,7,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,0,9,9,9,10,8,9,9,9,10,0,8,8,7,9,8,9,9,8,10,9,7,9,9,7,9,7,9,8,10,0,0,9,9,9,9,9,7,0,9,2,9,9,0,2,9,9,7,9,0,0,9,8,8,8,8,8,7,7,0,9,7,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,9,8,7,8,9,9,0,8,8,8,8,8,7,7,0,9,7,8,9,8,8,8,8,8,8,8,8,10,10,8,8,10,10,0,0,8,8,7,7,10,12,0,8,1,10,8,0,0,14,8,10,8,9,8,8,0,9,15,8,8,8,15,0,9,7,15,16,15,8,16,15,15,8,15,8,8,8,8,15,16,9,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,9,8,8,9,0,15,15,8,15,15,0,16,7,8,16,8,8,9,8,15,8,8,8,8,22,8,15,9,9,0,0,8,8,14,14,15,15,0,8,8,8,8,0,7,8,8,14,8,16,8,8,15,15,0,15,8,14,21,0,15,7,15,22,15,8,15,14,22,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,22,15,0,15,8,15,8,0,0,8,15,14,8,8,8,8,8,15,15,0,9,15,14,0,15,8,8,16,9,8,9,7,17,8,9,9,9,15,8,8,9,8,0,0,9,9,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,8,8,8,8,8,8,9,0,7,7,0,8,8,8,9,9,8,9,7,8,8,9,9,9,8,8,8,9,8,0,0,9,9,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,7,7,8,15,14,15,7,0,15,0,15,7,7,15,7,7,8,8,15,7,7,7,7,14,7,7,8,8,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,14,7,8,7,7,15,15,21,14,7,15,0,0,15,7,14,22,14,7,15,15,21,7,14,7,7,14,7,14,15,8,0,0,7,7,14,14,21,14,0,14,7,14,7,0,0,7,14,14,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,16,15,15,8,15,15,0,0,9,8,19,8,8,11,9,15,10,8,8,10,15,10,8,11,9,0,0,8,8,7,14,15,10,0,8,8,8,8,0,0,9,8,16,8,10,7,7,7,7,7,8,8,7,7,0,9,0,7,10,8,7,10,7,7,9,8,8,10,7,9,7,10,7,0,0,8,8,7,7,7,9,0,7,0,7,7,0,0,7,7,9,7,7,8,8,15,8,15,8,8,7,14,0,8,7,0,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,9,9,16,16,22,16,9,15,22,0,19,10,15,0,16,8,19,16,22,10,16,9,11,15,10,15,19,9,0,0,9,9,14,14,22,17,0,15,8,15,8,0,0,9,15,16,8,10,8,8,15,8,15,9,9,7,14,0,8,8,15,16,0,8,16,14,15,8,16,9,9,8,8,15,16,8,0,0,9,9,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,8,8,8,8,8,8,8,7,7,0,8,7,8,8,8,0,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,16,9,15,9,9,8,15,0,11,10,15,19,16,8,0,15,15,10,16,9,11,8,10,15,19,9,0,0,9,9,14,7,15,17,0,15,1,15,8,0,0,8,15,9,8,9,8,8,15,8,14,7,7,8,15,0,9,7,14,16,14,7,15,0,14,7,14,7,7,7,7,14,15,8,0,0,7,7,14,7,14,14,0,14,0,14,7,0,0,8,14,7,7,9,8,8,15,15,22,17,8,15,21,0,15,7,15,22,15,8,15,14,0,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,22,15,0,15,8,15,8,0,0,8,15,14,8,8,8,8,8,8,8,8,8,7,7,0,10,9,8,10,8,8,10,7,8,0,8,8,10,8,10,8,10,8,0,0,8,8,7,7,8,10,0,8,1,8,8,0,0,8,8,9,8,8,8,8,15,8,15,9,9,7,14,0,8,8,15,16,16,8,16,14,15,8,0,9,9,8,8,15,16,8,0,0,9,9,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,8,8,8,8,8,9,9,7,7,0,8,8,8,9,9,8,9,7,8,8,9,0,9,8,8,8,9,8,0,0,9,9,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,10,8,8,8,9,9,7,7,0,10,10,8,11,9,8,11,7,8,10,9,9,0,10,10,8,13,10,0,0,9,9,7,7,10,12,0,8,1,10,8,0,0,10,8,11,8,8,8,10,8,22,15,15,8,14,14,0,15,7,8,15,8,8,8,7,15,8,8,8,10,0,8,15,10,10,0,0,8,8,14,14,17,17,0,8,8,10,8,0,7,10,8,16,8,15,8,8,8,8,8,8,8,7,7,0,10,9,8,10,8,8,10,7,8,10,8,8,10,8,0,8,10,8,0,0,8,8,7,7,8,10,0,8,1,8,8,0,0,8,8,9,8,8,8,8,15,15,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,8,15,8,0,15,8,0,0,8,8,22,7,15,23,0,15,1,15,8,0,7,8,15,7,8,15,8,10,16,9,15,9,9,8,15,0,11,10,15,19,16,8,19,15,15,10,16,9,13,10,10,15,0,11,0,0,9,9,14,7,17,19,0,15,1,17,8,0,0,10,15,11,8,9,8,10,9,9,8,8,8,8,8,0,9,7,8,9,8,8,9,8,8,8,8,8,10,10,8,8,11,0,0,0,8,8,7,7,10,10,0,8,1,10,8,0,0,10,8,9,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,9,9,7,7,0,8,8,8,9,9,8,9,7,8,8,9,9,9,8,8,8,9,8,0,0,0,9,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,8,8,8,9,9,7,7,0,8,8,8,9,9,8,9,7,8,8,9,9,9,8,8,8,9,8,0,0,9,0,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,7,7,14,14,14,7,7,7,14,0,7,7,14,14,14,7,14,14,14,7,14,7,7,14,7,22,14,7,0,0,7,7,0,7,14,22,0,14,0,14,7,0,7,7,14,7,7,14,7,7,7,14,14,14,7,14,14,0,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,0,14,7,0,7,7,7,7,0,0,7,7,14,7,7,8,10,15,15,22,15,8,14,21,0,15,7,15,22,15,8,15,14,22,8,15,8,10,17,8,15,17,10,0,0,8,8,14,14,0,17,0,15,8,17,8,0,0,10,15,16,8,8,8,12,15,15,15,8,8,7,14,0,10,9,15,17,15,8,17,14,15,10,15,8,12,17,10,23,19,10,0,0,8,8,22,7,17,0,0,15,1,17,8,0,7,12,15,11,8,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,15,8,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,0,1,15,8,0,0,8,15,7,8,8,1,1,1,8,8,8,1,7,7,0,8,0,1,8,1,1,1,0,8,1,1,1,1,8,1,1,1,1,0,0,1,1,0,7,8,1,0,1,0,1,1,0,0,1,1,7,1,1,8,10,15,8,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,10,10,8,15,17,10,0,0,8,8,14,7,17,17,0,15,1,0,8,0,0,10,15,9,8,8,8,8,8,8,8,8,8,7,7,0,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,0,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,9,14,8,8,8,8,8,7,7,0,9,7,8,9,8,8,8,8,8,8,8,8,10,10,8,8,10,10,0,0,8,8,7,7,10,12,0,8,1,10,8,0,0,0,8,10,8,9,8,8,15,8,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,0,7,8,8,7,10,7,14,14,14,7,14,14,0,16,9,7,16,7,7,9,7,14,9,7,7,11,16,9,7,11,9,0,0,7,7,7,14,16,11,0,7,7,9,7,0,0,10,7,0,7,7,8,8,8,8,8,8,8,7,7,0,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,0,8,9,9,9,16,8,8,8,8,8,0,10,7,8,10,8,8,9,9,8,8,8,8,8,15,8,15,9,9,0,0,8,8,14,7,8,15,0,8,1,8,8,0,7,9,8,7,8,0,0,16,15,8,8,22,15,21,14,9,0,14,15,23,17,22,15,15,15,22,15,15,15,15,22,10,15,22,0,0,22,22,7,23,8,8,0,15,8,15,15,0,2,23,17,21,24,21,16,0,15,8,8,15,16,14,14,9,0,14,16,16,16,15,15,15,15,15,16,16,8,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,16,16,14,15,9,15,15,0,9,8,16,16,15,16,9,0,14,15,16,16,16,17,15,15,15,15,16,9,15,15,8,16,16,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,9,8,8,9,0,16,15,8,15,15,16,0,7,8,16,8,9,9,8,15,8,8,8,8,16,8,8,9,9,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,9,8,8,8,16,0,15,8,14,14,15,0,7,8,15,8,9,8,7,15,8,8,8,8,16,8,8,8,8,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,8,22,15,16,15,15,0,16,28,22,15,0,14,15,22,16,23,16,14,22,15,15,16,16,22,22,8,15,22,0,0,22,22,7,28,15,8,0,15,15,15,15,0,0,22,15,28,22,15,15,16,16,8,8,16,0,14,15,8,0,14,16,15,17,16,16,14,15,15,16,17,9,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,21,14,15,15,14,28,14,0,22,15,0,14,14,22,14,21,15,15,21,14,14,14,14,21,21,7,15,22,0,0,21,21,7,28,14,7,0,14,14,14,14,0,0,21,14,28,21,15,14,14,16,15,14,22,15,22,0,15,0,14,14,22,15,15,16,15,21,14,14,15,8,21,14,7,15,15,0,0,14,14,7,21,14,7,0,14,14,14,14,0,0,14,14,21,14,8,9,9,9,16,15,15,8,15,15,0,0,9,8,19,8,8,11,9,15,10,8,8,10,15,10,8,11,9,0,0,8,8,7,14,15,10,0,8,8,8,8,0,0,9,8,16,8,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,7,7,14,14,14,14,9,0,0,14,16,14,14,16,14,14,16,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,15,16,15,8,8,15,16,14,14,8,0,14,0,15,16,15,15,14,15,15,16,16,8,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,23,16,16,16,15,22,15,22,22,19,0,16,15,0,17,15,18,16,22,24,15,15,10,22,17,10,18,16,0,0,15,15,7,23,15,10,0,15,15,15,15,0,2,16,17,23,17,15,17,16,16,8,8,16,17,14,15,8,0,14,16,17,0,16,16,14,15,17,16,17,9,15,16,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,18,14,17,10,22,15,16,9,9,23,16,21,15,8,0,14,15,15,16,0,16,14,15,15,15,16,16,16,22,8,15,22,0,0,22,22,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,15,15,15,17,9,8,16,16,15,16,11,0,16,15,18,16,16,0,15,15,17,15,16,11,15,17,8,18,16,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,9,15,15,15,8,7,14,14,15,15,9,0,14,14,16,14,14,15,0,14,14,14,14,7,14,14,7,15,15,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,15,14,14,14,9,15,15,15,15,15,22,15,21,21,15,0,14,15,22,15,15,15,14,0,15,15,15,8,22,15,8,15,15,0,0,15,15,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,22,15,15,8,8,15,15,14,14,10,0,16,15,24,17,15,17,14,15,0,15,15,10,15,17,10,17,15,0,0,15,15,7,16,8,10,0,15,8,15,15,0,2,15,17,16,17,13,15,16,15,8,8,15,16,14,14,8,0,14,16,15,16,15,15,14,15,15,0,16,8,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,15,16,16,8,8,16,17,14,15,8,0,14,16,15,17,16,16,14,15,15,16,0,9,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,15,8,9,8,8,16,9,14,8,10,0,9,8,10,9,16,11,7,8,10,8,9,0,8,17,8,10,15,0,0,15,15,7,14,8,10,0,8,1,8,8,0,0,15,8,16,15,15,15,15,15,16,16,22,15,21,21,15,0,14,15,22,15,16,15,14,22,15,15,15,8,0,15,8,15,15,0,0,15,15,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,22,16,15,8,8,22,16,21,14,10,0,16,16,17,16,22,17,14,15,17,16,16,17,15,0,8,17,22,0,0,22,22,7,21,8,10,0,15,8,15,15,0,0,22,16,23,22,15,10,8,8,8,8,8,8,7,7,8,0,7,8,10,10,8,8,7,8,10,8,8,8,8,8,0,8,8,0,0,8,8,7,9,8,8,0,8,1,8,8,0,2,8,10,7,10,10,15,15,16,9,8,15,15,15,15,11,0,16,15,18,15,15,18,15,15,17,15,15,10,15,17,8,0,16,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,9,22,15,16,9,8,22,15,22,15,9,0,14,15,16,15,22,16,15,15,15,15,15,15,15,22,8,16,0,0,0,22,22,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,15,15,8,8,22,15,21,14,8,0,14,15,15,15,22,15,14,15,15,15,15,15,15,22,8,15,22,0,0,0,22,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,15,22,15,15,8,8,22,15,21,14,8,0,14,15,15,15,22,15,14,15,15,15,15,15,15,22,8,15,22,0,0,22,0,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,15,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,23,14,14,14,14,28,14,28,21,14,0,14,14,23,16,21,14,14,21,16,14,14,14,21,21,9,14,21,0,0,21,21,7,0,14,7,0,14,14,14,14,0,2,21,16,28,23,16,8,8,8,15,15,15,8,14,14,15,0,7,8,15,8,8,8,7,15,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,0,8,0,8,8,8,8,0,0,8,8,14,8,8,8,8,8,8,8,8,8,7,7,10,0,9,8,10,8,8,10,7,8,10,8,8,10,8,10,8,10,8,0,0,8,8,7,7,8,0,0,8,1,8,8,0,0,8,8,9,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,8,8,15,15,14,14,8,0,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,0,8,15,15,0,0,15,15,14,15,8,8,8,8,8,8,15,8,14,14,8,0,7,8,15,8,8,8,7,15,8,8,8,1,15,8,1,8,8,0,0,8,8,0,14,8,1,0,8,0,8,8,0,0,8,8,14,8,1,15,15,15,8,8,15,15,14,14,8,0,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,0,15,0,0,15,15,14,15,8,15,15,15,8,8,15,15,14,14,8,0,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,23,16,15,8,8,22,15,21,14,9,0,14,15,16,15,22,15,15,15,15,15,15,15,15,22,8,15,22,0,0,22,22,7,21,8,8,0,15,8,15,15,0,0,0,15,21,22,16,17,16,15,8,8,15,16,14,14,8,0,14,16,17,18,15,15,14,15,17,16,16,8,15,16,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,0,14,17,10,21,14,14,14,14,28,14,28,21,16,0,16,14,23,14,21,16,14,21,16,14,14,16,21,23,7,16,21,0,0,21,21,7,28,14,9,0,14,14,14,14,0,0,21,14,0,21,14,24,15,15,8,8,22,15,21,14,8,0,14,15,17,17,22,15,14,15,17,15,15,15,15,22,10,15,22,0,0,22,22,7,23,8,8,0,15,8,15,15,0,2,22,17,21,0,17,21,9,9,9,8,15,8,15,8,10,0,7,8,15,10,15,9,9,8,13,8,8,15,8,15,10,9,16,0,0,15,15,7,16,8,8,0,8,1,8,8,0,2,16,10,14,17,0,0,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,0,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,14,0,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,7,7,7,0,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,7,7,7,7,0,7,9,7,7,7,7,0,7,7,7,9,7,9,7,7,9,7,7,7,9,7,7,7,0,0,9,9,7,7,7,7,0,7,2,7,9,0,0,7,7,7,7,7,14,14,14,7,7,0,15,14,14,8,14,0,14,15,15,14,15,14,14,14,15,15,8,14,14,7,15,14,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,14,14,7,9,15,0,14,14,8,14,0,14,15,15,16,15,16,14,14,17,15,8,14,16,7,15,14,0,0,17,17,7,14,7,7,0,14,9,14,23,0,7,14,14,14,14,7,14,14,14,7,7,14,14,0,15,7,14,0,14,14,14,14,14,15,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,15,7,7,0,14,7,14,14,0,1,14,14,16,14,7,14,14,14,7,7,14,14,15,0,7,14,0,14,14,14,14,14,15,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,15,7,7,0,14,7,14,14,0,1,14,14,16,14,7,7,7,7,7,7,8,8,7,7,0,9,0,7,10,8,7,10,7,7,9,8,8,10,7,9,7,10,7,0,0,8,8,7,7,7,9,0,7,0,7,7,0,0,7,7,9,7,7,14,14,14,7,7,14,14,14,14,9,0,0,14,16,14,14,16,14,14,16,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,7,7,14,14,14,14,7,14,0,0,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,14,14,7,7,15,15,14,14,10,16,0,14,0,15,14,17,14,14,16,15,15,10,14,16,7,17,14,0,0,15,15,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,14,14,14,7,7,15,15,14,14,8,14,0,14,15,0,14,15,14,14,14,15,15,8,14,14,7,15,14,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,14,14,7,9,14,16,14,14,7,14,0,14,14,14,0,14,16,14,14,16,14,7,14,16,7,14,14,0,0,16,16,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,14,14,14,7,7,15,15,14,14,10,16,0,14,17,15,14,0,14,14,16,15,15,10,14,16,7,17,14,0,0,15,15,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,14,14,14,7,9,14,16,15,15,7,14,0,14,14,14,16,14,0,14,14,16,14,7,14,16,7,14,14,0,0,16,16,8,15,7,7,0,14,9,14,16,0,1,14,14,15,14,7,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,0,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,14,14,7,7,14,14,14,14,9,16,0,14,16,14,14,16,14,14,0,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,14,14,14,7,9,15,17,14,14,8,14,0,14,15,15,16,15,16,14,14,0,15,8,14,16,7,15,14,0,0,17,17,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,14,14,14,7,7,15,15,14,14,8,14,0,14,15,15,14,15,14,14,14,15,0,8,14,14,7,15,14,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,7,7,7,7,7,8,8,7,7,10,9,0,7,10,8,7,10,7,7,9,8,8,0,7,9,7,10,7,0,0,8,8,7,7,7,9,0,7,0,7,7,0,0,7,7,9,7,7,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,0,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,14,14,14,7,9,14,16,14,14,9,16,0,14,16,14,16,16,16,14,16,16,14,9,14,0,7,16,14,0,0,16,16,7,14,7,9,0,14,9,14,16,0,0,14,14,16,14,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,14,14,14,7,7,15,15,14,14,10,16,0,14,17,15,14,17,14,14,16,15,15,10,14,16,7,0,14,0,0,15,15,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,0,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,7,9,15,17,14,14,8,14,0,14,15,15,16,15,16,14,14,17,15,8,14,16,7,15,14,0,0,0,17,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,14,14,14,7,9,15,17,14,14,8,14,0,14,15,15,16,15,16,14,14,17,15,8,14,16,7,15,14,0,0,17,0,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,7,7,7,7,7,7,7,8,8,7,7,0,7,7,7,7,7,8,7,7,7,7,7,7,7,7,7,7,0,0,7,7,0,8,7,7,0,7,0,7,7,0,1,7,7,8,7,7,14,14,14,7,7,14,14,15,15,7,14,0,14,14,14,14,14,15,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,0,7,7,0,14,7,14,14,0,1,14,14,15,14,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,0,7,0,7,0,7,7,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,9,9,0,7,9,7,7,9,7,7,9,7,7,9,7,9,7,9,7,0,0,7,7,7,7,7,0,0,7,0,7,7,0,0,7,7,9,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,0,7,14,14,0,0,14,14,14,14,7,7,7,7,0,2,7,9,7,7,0,7,0,7,7,7,9,7,9,7,7,9,7,0,7,9,0,7,7,0,0,9,9,0,7,0,0,0,7,0,7,9,0,0,7,7,7,7,0,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,0,14,0,0,14,14,14,14,7,14,14,14,7,9,14,23,14,14,7,14,0,14,14,14,16,14,16,14,14,16,14,7,14,16,7,14,14,0,0,16,16,7,14,7,7,0,14,9,14,0,0,7,14,14,14,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,7,0,0,0,0,1,0,0,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,0,14,14,14,7,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,0,14,14,7,14,14,14,7,7,14,14,16,16,9,16,0,14,16,14,14,16,15,14,16,14,14,9,14,16,7,16,14,0,0,14,14,8,15,7,9,0,14,7,14,14,0,1,14,14,0,14,7,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,0,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,0,0,18,17,8,10,18,26,16,16,8,15,14,0,15,25,24,23,16,17,22,25,26,16,17,16,10,23,17,0,0,18,17,9,16,10,9,0,26,10,17,17,0,3,18,17,14,25,10,18,0,17,8,10,18,19,16,16,8,16,14,0,15,18,17,15,16,17,15,18,19,8,17,17,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,18,14,18,10,17,17,0,8,18,17,17,21,27,15,15,14,0,22,24,17,22,24,26,16,24,17,8,18,17,17,23,18,0,0,17,17,18,16,18,17,0,24,11,24,17,0,2,17,24,14,19,11,8,8,8,0,8,8,8,7,7,8,8,7,0,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,18,8,0,10,10,10,16,15,8,7,0,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,18,16,0,17,4,17,10,0,2,10,17,7,11,11,18,18,17,8,10,0,18,16,16,8,15,14,0,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,26,19,17,8,10,18,0,16,16,8,16,14,0,15,26,25,24,16,17,23,27,28,17,17,17,10,24,17,0,0,18,17,9,16,10,9,0,27,10,17,17,0,3,19,18,14,25,10,16,16,21,7,10,16,16,0,20,7,14,14,0,14,16,16,14,17,18,15,16,16,7,17,15,9,14,17,0,0,16,16,11,16,10,8,0,16,10,16,16,0,2,16,16,14,17,10,16,16,27,7,16,16,16,20,0,14,14,14,0,21,23,16,21,23,25,14,23,16,7,16,14,16,21,16,0,0,16,16,18,16,16,14,0,23,9,23,16,0,2,16,23,14,16,9,8,8,15,8,15,8,8,7,14,0,8,7,0,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,15,16,15,8,8,15,16,14,14,8,0,14,0,15,16,15,15,14,15,15,16,16,8,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,14,14,14,7,7,14,14,14,14,7,14,0,0,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,22,8,15,15,15,14,21,15,15,14,0,0,22,15,22,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,25,18,24,8,17,17,26,16,23,15,16,14,0,22,0,24,30,23,24,22,33,26,16,17,16,17,30,17,0,0,17,17,16,16,17,15,0,32,10,24,17,0,2,17,25,14,24,10,24,17,17,8,10,17,25,16,16,8,15,14,0,15,24,0,23,16,17,23,25,25,16,17,15,10,23,17,0,0,17,17,9,16,10,8,0,25,10,17,17,0,2,18,17,14,24,10,23,15,22,8,15,15,24,14,21,15,15,14,0,22,30,23,0,21,22,23,31,24,17,15,15,15,31,15,0,0,15,15,14,14,15,15,0,31,8,22,15,0,0,16,22,14,22,8,16,16,24,7,17,16,16,17,23,14,14,14,0,21,23,16,21,0,23,15,23,16,7,17,15,16,21,17,0,0,16,16,16,16,17,15,0,23,10,23,16,0,2,16,23,14,17,10,17,17,26,8,17,17,17,18,25,15,15,14,0,22,24,17,22,23,0,15,24,17,8,17,15,17,22,17,0,0,17,17,18,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,22,15,16,8,9,15,23,15,14,8,15,14,0,15,22,23,23,15,15,0,23,23,16,16,16,8,23,16,0,0,15,15,7,14,9,9,0,23,9,15,15,0,0,16,15,14,23,9,25,18,24,8,17,17,27,16,23,15,16,14,0,22,33,25,31,23,24,23,0,27,17,17,16,17,31,17,0,0,17,17,16,16,17,15,0,33,10,24,17,0,2,18,25,14,24,10,26,19,17,8,10,18,28,16,16,8,16,14,0,15,26,25,24,16,17,23,27,0,17,17,17,10,24,17,0,0,18,17,9,16,10,9,0,27,10,17,17,0,3,19,18,14,25,10,16,8,8,8,8,8,17,7,7,8,8,7,0,8,16,16,17,7,8,16,17,17,0,8,8,8,17,8,0,0,8,8,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,17,17,18,8,11,17,17,17,16,8,15,14,0,15,17,17,15,17,17,16,17,17,8,0,16,10,15,18,0,0,17,17,9,16,11,9,0,17,11,17,17,0,2,17,17,14,18,11,16,17,17,8,9,16,17,15,14,8,16,14,0,15,16,15,15,15,15,16,16,17,8,16,0,8,16,16,0,0,16,15,7,14,9,11,0,16,9,15,15,0,1,16,16,16,18,9,10,10,17,8,17,10,10,9,16,15,8,7,0,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,23,15,23,8,15,15,24,14,21,15,15,14,0,22,30,23,31,21,22,23,31,24,17,15,16,15,0,15,0,0,15,15,14,14,15,16,0,31,8,22,15,0,0,16,22,14,23,8,17,17,18,8,11,17,17,17,16,8,15,14,0,15,17,17,15,17,17,16,17,17,8,18,16,10,15,0,0,0,17,17,9,16,11,9,0,17,11,17,17,0,2,17,17,14,18,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,17,8,10,18,18,16,16,8,15,14,0,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,0,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,17,17,17,8,10,17,17,16,16,8,15,14,0,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,9,9,18,7,16,9,9,11,18,14,7,7,0,14,16,9,14,16,18,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,16,16,16,7,9,16,16,16,16,7,14,14,0,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,10,10,18,8,18,10,10,10,16,15,8,7,0,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,0,16,0,17,4,17,10,0,2,10,17,7,11,11,9,9,17,8,16,9,9,8,14,15,8,7,0,15,15,8,15,15,15,9,15,9,8,9,11,15,16,9,0,0,9,8,14,7,16,0,0,16,2,15,8,0,1,9,15,7,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,18,24,8,17,18,27,16,23,15,15,14,0,22,32,25,31,23,24,23,33,27,17,17,16,17,31,17,0,0,18,17,16,16,17,16,0,0,10,24,17,0,3,19,24,14,25,10,10,10,11,1,4,10,10,10,9,1,8,7,0,8,10,10,8,10,10,9,10,10,1,11,9,3,8,11,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,11,4,17,17,24,8,17,17,17,16,23,15,15,14,0,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,0,17,0,2,17,24,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,0,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,0,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,18,18,17,8,10,18,19,16,16,8,15,14,0,15,17,18,16,16,17,16,18,19,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,0,17,14,18,10,17,18,24,8,17,17,18,16,23,15,16,14,0,22,25,17,22,23,24,15,25,18,8,17,16,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,14,14,14,7,7,14,14,14,14,7,14,14,0,14,14,14,14,14,14,14,14,14,7,14,16,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,25,18,19,8,11,18,25,17,16,8,15,14,0,15,24,24,22,17,17,23,24,25,15,18,18,10,23,18,0,0,18,17,9,16,11,11,0,25,11,17,17,0,3,18,17,14,0,11,10,10,11,8,11,10,10,10,9,8,8,7,0,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,0,0,16,16,8,8,15,15,15,14,9,23,14,15,0,18,15,16,15,15,22,15,15,8,15,15,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,16,17,14,17,14,16,0,15,8,8,15,15,14,14,9,16,14,15,0,15,15,15,15,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,16,15,14,15,9,16,15,0,9,15,15,15,16,22,16,16,14,22,0,23,15,24,22,22,15,22,15,8,15,15,15,23,16,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,9,8,8,9,0,15,15,8,15,15,16,16,7,8,0,8,8,9,8,15,8,8,8,8,15,8,8,9,9,0,0,8,8,7,14,15,8,0,8,8,8,8,0,0,8,8,14,8,9,8,8,15,15,0,15,8,14,21,22,15,7,15,0,15,8,15,14,22,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,22,15,0,15,8,15,8,0,0,8,15,14,8,8,15,15,15,15,15,0,16,21,21,16,22,15,15,0,16,15,16,14,22,15,16,16,9,22,15,8,16,15,0,0,16,16,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,15,15,15,8,8,16,0,14,14,9,15,15,15,0,16,15,16,14,15,15,16,16,9,15,15,8,16,15,0,0,16,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,15,14,16,15,14,21,14,0,22,15,22,14,14,0,15,14,16,15,21,14,14,14,7,21,14,7,15,15,0,0,14,14,7,21,14,7,0,14,14,14,14,0,0,14,14,21,14,8,14,14,22,15,21,21,14,22,0,22,22,14,21,0,21,14,22,22,28,14,21,14,7,21,14,14,22,15,0,0,14,14,14,21,21,14,0,21,14,21,14,0,0,14,21,21,14,8,9,9,16,16,22,16,9,15,22,0,19,10,15,0,16,8,19,16,22,10,16,9,11,15,10,15,19,9,0,0,9,9,14,14,22,17,0,15,8,15,8,0,0,9,15,16,8,10,23,16,16,16,15,22,15,22,22,19,0,16,15,0,17,15,18,16,22,24,15,15,10,22,17,10,18,16,0,0,15,15,7,23,15,10,0,15,15,15,15,0,2,16,17,23,17,15,14,14,14,7,7,15,15,14,14,10,16,0,14,0,15,14,17,14,14,16,15,15,10,14,16,7,17,14,0,0,15,15,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,15,15,22,8,15,15,15,14,21,15,15,14,0,0,22,15,22,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,15,23,8,15,16,16,15,21,16,17,15,22,0,0,15,24,21,22,17,23,16,9,15,15,17,23,15,0,0,16,16,14,16,15,15,0,22,8,22,15,0,2,15,24,14,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,0,15,0,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,16,15,24,9,15,16,16,16,22,19,18,17,22,0,24,15,0,22,22,17,23,16,11,15,17,15,26,16,0,0,16,16,14,14,15,17,0,22,8,22,15,0,0,15,22,16,15,9,15,15,22,8,14,14,14,15,22,16,16,14,21,0,21,14,22,0,21,14,21,14,7,14,14,14,22,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,15,21,14,14,9,15,15,22,15,22,22,15,21,28,22,22,14,22,0,22,15,22,21,0,15,22,15,8,22,15,15,22,15,0,0,15,15,14,21,22,15,0,22,15,22,15,0,0,15,22,21,15,8,22,15,15,8,8,15,15,14,14,10,24,16,15,0,17,15,17,14,15,0,15,15,10,15,17,10,17,15,0,0,15,15,7,16,8,10,0,15,8,15,15,0,2,15,17,16,17,13,15,15,22,8,15,16,16,14,21,16,15,15,22,0,23,15,23,21,22,15,0,16,9,15,15,15,23,15,0,0,16,16,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,15,15,15,8,8,16,16,14,14,9,15,15,15,0,16,15,16,14,15,15,16,0,9,15,15,8,16,15,0,0,16,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,8,8,8,8,8,9,9,7,7,11,10,10,8,0,9,8,11,7,8,10,9,9,0,8,10,8,11,8,0,0,9,9,7,7,8,10,0,8,1,8,8,0,0,8,8,9,8,8,15,15,15,15,15,22,15,21,21,15,22,14,15,0,15,15,15,14,22,15,15,15,8,0,15,8,15,15,0,0,15,15,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,15,15,15,8,8,15,15,14,14,10,17,16,15,0,15,15,17,14,15,17,15,15,10,15,0,8,17,15,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,8,10,8,15,8,15,8,8,7,14,15,10,7,15,0,17,8,15,14,15,10,15,8,8,8,8,0,15,8,0,0,8,8,14,9,15,15,0,15,1,15,8,0,2,8,17,7,10,10,15,15,23,9,15,16,16,15,22,19,18,17,22,0,23,15,26,22,22,17,23,16,11,15,17,15,0,16,0,0,16,16,14,14,15,17,0,22,8,22,15,0,0,15,22,16,15,9,15,15,16,9,8,15,15,15,15,9,16,14,15,0,15,15,16,15,15,15,15,15,8,15,15,8,16,0,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,8,8,16,16,14,14,9,15,15,15,0,16,15,16,14,15,15,16,16,9,15,15,8,16,15,0,0,0,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,15,15,15,8,8,16,16,14,14,9,15,15,15,0,16,15,16,14,15,15,16,16,9,15,15,8,16,15,0,0,16,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,7,7,14,7,14,7,7,7,14,14,7,7,14,0,14,7,14,14,14,7,14,7,7,7,7,14,14,7,0,0,7,7,0,7,14,14,0,14,0,14,7,0,0,7,14,7,7,7,16,14,14,14,14,21,14,21,21,14,23,14,14,0,16,14,14,14,21,16,14,14,7,21,14,9,14,14,0,0,14,14,7,0,14,7,0,14,14,14,14,0,2,14,16,21,16,9,8,8,15,15,22,15,8,14,21,22,15,7,15,0,15,8,15,14,22,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,0,15,0,15,8,15,8,0,0,8,15,14,8,8,8,8,15,8,15,8,8,7,14,17,10,9,15,0,15,8,17,14,15,10,15,8,10,8,10,15,17,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,9,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,22,8,15,15,15,14,21,15,15,14,22,0,22,15,22,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,0,8,22,15,0,0,15,22,14,15,8,8,8,8,8,8,15,8,14,14,8,15,7,8,0,8,8,8,7,15,8,8,8,1,15,8,1,8,8,0,0,8,8,0,14,8,1,0,8,0,8,8,0,0,8,8,14,8,1,15,15,22,8,15,15,15,14,21,15,15,14,22,0,22,15,22,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,0,15,0,0,15,22,14,15,8,15,15,15,8,8,15,15,14,14,8,15,14,15,0,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,16,16,15,8,8,15,15,14,14,9,16,14,15,0,15,15,15,15,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,0,15,14,15,9,17,15,22,8,15,15,15,14,21,15,17,14,22,0,24,15,22,21,22,17,22,15,8,15,15,17,22,15,0,0,15,15,14,16,15,15,0,22,8,22,15,0,2,15,0,14,17,10,14,14,14,14,14,21,14,21,21,16,23,16,14,0,14,14,16,14,21,16,14,14,9,21,16,7,16,14,0,0,14,14,7,21,14,9,0,14,14,14,14,0,0,14,14,0,14,7,17,15,15,8,8,15,15,14,14,8,17,14,15,0,17,15,15,14,15,17,15,15,8,15,15,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,17,14,0,10,14,9,9,9,8,8,8,8,8,10,15,7,8,0,10,8,9,9,8,13,8,8,8,8,8,10,9,9,0,0,8,8,7,9,8,8,0,8,1,8,8,0,2,9,10,7,10,0,0,17,18,8,10,17,25,18,16,8,17,14,25,18,0,24,24,17,18,24,25,25,16,17,15,12,23,17,0,0,17,18,9,18,10,8,0,26,10,18,17,0,4,17,19,14,26,12,17,0,17,8,10,17,18,16,16,8,16,14,18,15,0,17,15,16,17,15,18,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,18,14,17,10,18,17,0,8,17,18,19,17,24,15,16,14,24,23,0,19,25,23,24,16,24,18,9,18,15,17,22,18,0,0,17,17,16,16,17,15,0,24,10,24,18,0,2,17,24,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,0,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,17,8,0,10,10,9,16,15,8,7,17,15,0,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,17,17,18,8,10,0,19,16,17,9,16,15,17,16,0,18,17,16,17,15,18,19,10,17,15,10,16,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,25,18,19,8,10,19,0,16,17,9,17,15,26,16,0,26,26,16,17,23,27,28,18,18,16,10,24,18,0,0,18,18,9,16,10,8,0,25,10,17,18,0,2,17,18,14,24,10,18,16,17,7,9,16,16,0,16,7,14,14,16,15,0,16,15,17,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,17,9,17,16,0,2,16,16,14,16,9,16,16,24,7,16,17,17,16,0,14,15,14,23,21,0,17,22,23,23,14,23,17,8,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,23,14,16,9,8,8,15,8,15,9,9,7,14,0,8,8,15,16,0,8,16,14,15,8,16,9,9,8,8,15,16,8,0,0,9,9,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,17,16,16,8,8,16,17,14,15,8,0,14,16,17,0,16,16,14,15,17,16,17,9,15,16,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,18,14,17,10,14,14,14,7,7,15,15,14,14,8,14,0,14,15,0,14,15,14,14,14,15,15,8,14,14,7,15,14,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,25,18,24,8,17,17,26,16,23,15,16,14,0,22,0,24,30,23,24,22,33,26,16,17,16,17,30,17,0,0,17,17,16,16,17,15,0,32,10,24,17,0,2,17,25,14,24,10,18,15,23,8,15,16,16,15,21,16,17,15,22,0,0,15,24,21,22,17,23,16,9,15,15,17,23,15,0,0,16,16,14,16,15,15,0,22,8,22,15,0,2,15,24,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,19,8,10,18,26,16,17,8,16,14,24,15,0,0,24,16,17,23,24,25,16,18,15,10,22,18,0,0,17,17,9,16,10,8,0,24,10,17,18,0,2,17,17,14,24,10,24,15,25,8,15,17,26,15,22,16,16,15,30,24,0,24,0,21,22,23,31,25,18,16,15,15,31,16,0,0,16,16,14,14,15,15,0,30,8,22,16,0,0,15,22,14,22,8,17,16,23,7,16,16,16,17,23,14,14,14,23,21,0,16,21,0,24,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,24,9,24,16,0,2,16,23,14,16,9,18,17,24,8,17,17,17,17,23,15,15,14,24,22,0,17,22,24,0,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,25,10,25,17,0,2,17,24,14,17,10,24,15,16,8,8,15,23,14,14,8,17,14,22,17,0,23,23,14,15,0,22,22,15,16,15,10,22,16,0,0,15,15,7,16,8,8,0,22,8,15,16,0,2,15,17,14,24,10,25,18,24,8,17,18,27,16,23,16,16,15,33,23,0,24,31,23,24,22,0,27,17,17,16,17,31,17,0,0,18,18,16,16,17,15,0,32,10,24,17,0,2,17,25,14,24,10,25,18,18,8,10,19,28,16,17,9,17,15,26,16,0,25,25,16,17,22,27,0,18,17,16,10,24,17,0,0,18,18,9,16,10,8,0,25,10,17,17,0,2,17,18,14,24,10,16,8,9,8,8,10,18,7,8,9,9,8,16,9,0,16,18,7,8,15,17,18,0,8,8,8,17,8,0,0,9,9,7,7,8,8,0,16,1,8,8,0,0,8,8,7,15,8,17,17,18,8,10,17,18,16,16,8,15,14,17,15,0,18,16,16,17,16,17,17,8,0,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,15,16,15,8,8,15,16,14,14,8,16,14,16,15,0,15,15,14,15,15,16,16,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,12,10,17,8,17,10,10,9,16,15,10,7,17,17,0,10,15,16,17,10,17,10,8,10,8,0,15,10,0,0,10,10,16,11,17,15,0,17,3,17,10,0,4,10,19,7,12,12,23,15,22,8,15,16,24,14,21,16,15,15,30,23,0,22,31,21,22,22,31,24,17,15,15,15,0,15,0,0,16,16,14,14,15,15,0,30,8,22,15,0,0,15,22,14,22,8,17,17,18,8,10,17,18,16,16,8,15,14,17,15,0,18,16,16,17,16,17,17,8,18,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,18,18,16,16,9,15,15,17,16,0,17,16,16,17,15,18,18,9,17,15,10,16,17,0,0,0,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,18,17,17,8,10,18,18,17,16,9,15,15,17,16,0,17,16,17,18,15,18,18,9,17,15,10,16,17,0,0,18,0,9,16,10,8,0,18,10,18,17,0,2,17,17,14,17,10,9,9,16,7,16,9,9,9,16,14,7,7,16,14,0,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,18,16,16,7,9,16,16,16,16,7,16,14,16,16,0,16,14,16,16,16,16,16,7,16,14,11,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,4,16,18,14,18,11,10,10,17,8,17,10,10,9,16,15,8,7,17,15,0,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,17,7,10,10,8,8,15,8,15,8,8,7,14,15,8,7,15,15,0,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,17,24,8,17,17,25,17,23,15,15,14,32,22,0,24,30,24,25,22,32,25,16,17,15,17,30,17,0,0,17,18,16,16,17,15,0,0,10,25,17,0,2,17,24,14,24,10,10,10,10,1,3,10,10,9,9,1,8,7,10,8,0,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,18,17,24,8,17,17,17,17,23,15,15,14,24,22,0,17,22,24,25,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,25,10,0,17,0,2,17,24,14,17,10,17,17,18,8,10,17,18,16,16,8,15,14,17,15,0,18,16,16,17,16,17,17,8,18,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,2,0,2,2,2,2,2,0,2,0,2,2,0,2,0,2,2,2,2,2,0,2,0,4,0,2,0,0,2,2,2,4,2,0,0,2,2,2,2,0,0,2,5,0,4,4,17,17,17,8,10,17,17,16,16,8,15,14,17,15,0,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,0,17,14,17,10,19,18,24,8,17,17,18,16,23,15,18,14,25,24,0,17,22,23,24,17,25,18,8,17,16,19,22,17,0,0,17,17,16,18,17,15,0,24,10,24,17,0,5,17,0,14,19,12,14,14,14,7,7,14,14,14,14,7,14,14,14,14,0,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,26,17,17,8,10,17,24,16,16,8,17,14,24,17,0,24,22,16,17,24,24,24,15,17,15,12,22,17,0,0,17,17,9,18,10,8,0,24,10,17,17,0,4,17,19,14,0,12,12,10,10,8,10,10,10,9,9,8,10,7,10,10,0,10,8,9,10,10,10,10,8,10,8,12,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,12,7,12,0,0,18,18,9,10,24,24,24,17,8,22,14,24,15,24,0,23,16,18,22,24,24,22,18,22,10,22,24,0,0,25,25,9,23,10,8,0,25,10,17,17,0,2,25,17,21,31,17,18,0,17,9,10,17,17,16,17,8,15,14,17,15,17,0,15,16,18,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,18,17,14,17,10,18,17,0,8,10,18,19,17,17,8,16,14,17,15,19,0,18,16,17,16,17,18,9,19,15,10,15,18,0,0,18,18,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,9,9,8,0,9,8,8,7,8,8,9,7,8,8,8,0,8,7,9,8,8,8,8,9,8,8,8,8,0,0,8,8,7,7,8,8,0,9,1,8,8,0,0,9,8,7,8,8,10,10,10,9,0,10,12,9,9,8,9,9,10,8,10,0,8,11,10,8,12,10,8,11,10,10,8,10,0,0,12,12,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,24,17,18,8,10,0,18,23,17,8,23,14,17,15,18,0,16,16,17,15,17,18,16,17,22,10,15,24,0,0,24,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,24,17,19,8,12,18,0,16,17,8,16,16,25,15,26,0,25,18,17,24,27,26,17,18,17,10,23,18,0,0,19,19,9,16,10,8,0,25,12,17,20,0,2,18,17,14,24,10,24,16,17,7,9,23,16,0,16,7,21,14,16,14,16,0,15,16,16,14,16,16,14,17,21,9,14,23,0,0,24,24,9,23,9,7,0,16,9,16,16,0,2,23,16,21,23,16,17,17,17,8,9,17,17,16,0,7,15,14,16,14,17,0,15,16,17,14,16,17,8,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,17,16,14,16,9,8,8,8,8,8,8,8,7,7,0,8,7,8,8,8,0,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,22,15,16,9,9,23,16,21,15,8,0,14,15,15,16,0,16,14,15,15,15,16,16,16,22,8,15,22,0,0,22,22,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,15,14,14,14,7,9,14,16,14,14,7,14,0,14,14,14,0,14,16,14,14,16,14,7,14,16,7,14,14,0,0,16,16,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,24,17,17,8,10,17,25,16,16,8,15,14,0,15,24,0,23,16,17,23,25,25,16,17,15,10,23,17,0,0,17,17,9,16,10,8,0,25,10,17,17,0,2,18,17,14,24,10,15,15,15,8,8,15,15,14,14,8,15,14,15,0,15,0,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,24,17,19,8,10,18,26,16,17,8,16,14,24,15,0,0,24,16,17,23,24,25,16,18,15,10,22,18,0,0,17,17,9,16,10,8,0,24,10,17,18,0,2,17,17,14,24,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,18,8,8,16,25,15,15,8,16,14,23,15,24,0,0,16,15,24,23,24,17,17,15,8,23,16,0,0,16,16,7,14,8,8,0,23,8,15,16,0,0,16,15,14,22,8,16,16,16,7,11,16,18,16,16,7,14,16,16,14,16,0,16,0,16,14,18,16,7,16,16,9,14,16,0,0,18,18,9,16,9,7,0,16,11,16,18,0,2,16,16,14,16,9,18,18,17,9,10,17,17,16,17,8,15,14,17,15,17,0,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,18,17,14,17,10,22,15,16,8,8,15,24,14,14,8,15,14,23,15,23,0,24,14,15,0,23,23,16,16,15,8,23,16,0,0,15,15,7,14,8,8,0,23,8,15,16,0,0,16,15,14,22,8,24,17,17,8,12,17,27,16,16,8,15,16,25,15,24,0,23,18,17,23,0,25,16,17,17,10,23,17,0,0,19,19,9,16,10,8,0,25,12,17,19,0,2,18,17,14,24,10,24,17,18,8,10,18,26,16,17,8,16,14,25,15,25,0,24,16,17,23,25,0,17,17,15,10,23,17,0,0,17,17,9,16,10,8,0,25,10,17,17,0,2,18,17,14,24,10,22,8,9,8,8,16,17,14,8,8,16,7,16,8,16,0,17,7,8,16,16,17,0,8,15,8,16,15,0,0,15,15,7,14,8,8,0,16,1,8,8,0,0,16,8,14,22,15,18,17,19,9,11,17,18,17,16,8,16,14,17,15,18,0,17,16,17,16,17,17,8,0,15,10,15,18,0,0,18,18,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,22,15,15,8,10,22,17,21,14,8,22,16,15,15,15,0,15,16,15,15,17,15,15,15,0,8,15,22,0,0,24,24,7,21,8,8,0,15,10,15,17,0,0,22,15,21,22,15,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,0,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,22,15,15,8,8,15,23,14,14,8,15,14,23,15,22,0,23,14,15,23,23,23,16,15,15,8,0,15,0,0,15,15,7,14,8,8,0,23,8,15,15,0,0,16,15,14,22,8,24,17,18,8,10,24,18,23,16,8,22,14,17,15,18,0,16,16,17,16,17,17,15,18,22,10,15,0,0,0,24,24,9,23,10,8,0,17,10,17,18,0,2,24,17,21,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,17,18,8,12,24,19,24,16,8,22,16,17,15,17,0,16,18,17,15,19,17,15,18,24,10,15,24,0,0,0,27,9,23,10,8,0,17,12,17,19,0,2,24,17,21,24,17,25,17,18,8,12,24,19,24,16,8,22,16,17,15,17,0,16,18,17,15,19,17,15,18,24,10,15,24,0,0,27,0,9,23,10,8,0,17,12,17,19,0,2,24,17,21,24,17,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,0,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,0,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,0,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,0,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,0,0,8,1,8,8,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,18,17,9,10,17,25,16,17,8,15,14,25,15,24,0,23,16,18,23,25,25,16,17,15,10,23,17,0,0,17,17,9,16,10,8,0,0,10,17,17,0,2,19,17,14,24,10,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,0,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,0,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,17,18,8,12,17,20,16,16,8,15,16,17,15,18,0,16,18,17,16,19,17,8,18,17,10,15,18,0,0,19,19,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,0,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,25,18,17,9,10,24,18,23,17,8,22,14,18,15,17,0,16,16,18,16,18,18,16,17,22,10,16,24,0,0,24,24,9,23,10,8,0,19,10,17,17,0,2,0,17,21,24,17,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,0,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,0,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,31,17,17,8,10,24,24,23,16,8,22,14,24,15,24,0,22,16,17,22,24,24,22,17,22,10,22,24,0,0,24,24,9,23,10,8,0,24,10,17,17,0,2,24,17,21,0,17,17,10,10,8,10,17,10,16,9,8,15,7,10,8,10,0,8,9,10,8,10,10,15,10,15,10,8,17,0,0,17,17,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,0,15,17,8,8,15,23,16,14,8,15,14,23,16,24,23,0,14,15,22,23,23,16,16,15,8,23,15,0,0,16,16,7,14,8,8,0,23,8,15,15,0,0,15,15,14,22,8,15,0,15,8,8,15,15,14,14,8,15,14,15,15,15,15,0,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,15,0,9,15,16,17,17,23,16,17,14,22,24,25,18,0,22,22,16,22,16,9,17,15,15,23,17,0,0,16,16,14,14,15,15,0,22,8,22,16,0,0,15,22,14,15,9,8,8,9,0,8,10,8,8,8,9,9,7,8,9,8,8,0,8,8,8,8,8,8,8,8,8,9,9,0,0,8,8,7,7,8,8,0,10,1,8,8,0,0,8,8,7,8,9,8,8,15,8,0,8,8,7,14,15,8,7,15,15,15,8,0,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,15,15,16,10,8,0,17,14,15,9,16,15,15,16,17,16,0,14,15,15,16,17,10,15,15,8,16,15,0,0,16,16,7,14,8,8,0,17,8,15,15,0,0,15,15,14,15,8,23,15,17,8,8,17,0,14,15,9,16,15,24,16,26,25,0,14,15,24,25,26,19,16,15,8,25,16,0,0,16,16,7,14,8,8,0,24,8,15,16,0,0,16,15,14,22,8,16,14,17,8,7,14,14,0,15,8,15,14,14,16,15,15,0,15,14,14,14,14,7,15,14,7,15,15,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,8,14,14,23,8,14,15,15,15,0,15,16,14,21,22,22,15,0,22,21,14,21,15,8,14,14,14,22,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,8,8,16,9,15,9,9,8,15,0,11,10,15,19,16,8,0,15,15,10,16,9,11,8,10,15,19,9,0,0,9,9,14,7,15,17,0,15,1,15,8,0,0,8,15,9,8,9,15,15,17,9,8,16,16,15,16,11,0,16,15,18,16,16,0,15,15,17,15,16,11,15,17,8,18,16,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,9,14,14,14,7,7,15,15,14,14,10,16,0,14,17,15,14,0,14,14,16,15,15,10,14,16,7,17,14,0,0,15,15,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,23,15,22,8,15,15,24,14,21,15,15,14,0,22,30,23,0,21,22,23,31,24,17,15,15,15,31,15,0,0,15,15,14,14,15,15,0,31,8,22,15,0,0,16,22,14,22,8,16,15,24,9,15,16,16,16,22,19,18,17,22,0,24,15,0,22,22,17,23,16,11,15,17,15,26,16,0,0,16,16,14,14,15,17,0,22,8,22,15,0,0,15,22,16,15,9,24,15,25,8,15,17,26,15,22,16,16,15,30,24,0,24,0,21,22,23,31,25,18,16,15,15,31,16,0,0,16,16,14,14,15,15,0,30,8,22,16,0,0,15,22,14,22,8,23,15,18,8,8,16,25,15,15,8,16,14,23,15,24,0,0,16,15,24,23,24,17,17,15,8,23,16,0,0,16,16,7,14,8,8,0,23,8,15,16,0,0,16,15,14,22,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,22,8,14,14,14,15,22,15,15,14,21,22,21,16,0,0,21,14,21,14,7,14,14,14,22,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,0,21,0,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,22,15,16,8,8,15,24,14,14,10,17,16,23,17,23,24,0,14,15,0,23,23,18,16,17,8,25,16,0,0,15,15,7,14,8,10,0,23,8,15,16,0,0,16,15,16,22,8,23,15,22,8,15,16,25,14,21,16,15,15,31,23,31,23,0,21,22,23,0,25,18,15,15,15,32,15,0,0,16,16,14,14,15,15,0,31,8,22,15,0,0,16,22,14,22,8,23,15,16,8,8,17,26,14,15,9,16,15,24,16,25,24,0,14,15,23,25,0,19,15,15,8,25,15,0,0,16,16,7,14,8,8,0,24,8,15,15,0,0,16,15,14,22,8,16,8,9,8,8,10,19,7,8,11,11,10,17,11,18,17,0,7,8,18,18,19,0,8,10,8,20,8,0,0,9,9,7,7,8,10,0,17,1,8,8,0,0,9,8,9,15,8,16,15,17,8,8,15,16,15,14,8,15,14,15,15,16,17,0,14,15,16,15,15,8,0,15,8,15,16,0,0,16,16,7,14,8,8,0,15,8,15,16,0,0,15,15,14,15,8,15,15,15,8,8,15,15,14,14,10,17,16,15,17,15,15,0,14,15,17,15,15,10,15,0,8,17,15,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,8,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,0,14,15,8,15,8,8,8,8,0,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,23,15,23,9,15,16,25,15,22,19,18,17,31,26,31,23,0,22,22,25,32,25,20,15,17,15,0,16,0,0,16,16,14,14,15,17,0,31,8,22,15,0,0,16,22,16,22,9,15,15,17,9,8,15,16,15,15,9,16,14,15,16,16,16,0,15,15,16,15,15,8,16,15,8,16,0,0,0,15,15,7,14,8,8,0,15,8,15,16,0,0,15,15,14,15,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,15,16,8,8,16,16,15,14,9,15,15,15,16,16,16,0,14,15,15,16,16,9,16,15,8,16,15,0,0,0,17,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,16,15,16,8,8,16,16,15,14,9,15,15,15,16,16,16,0,14,15,15,16,16,9,16,15,8,16,15,0,0,17,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,7,7,14,7,14,7,7,7,14,14,7,7,14,14,14,7,0,14,14,7,14,7,7,7,7,14,14,7,0,0,7,7,0,7,14,14,0,14,0,14,7,0,0,7,14,7,7,7,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,0,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,0,7,7,0,14,7,14,14,0,0,14,14,14,14,7,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,0,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,0,15,0,15,1,15,8,0,0,8,15,7,8,8,8,8,15,8,15,8,8,7,14,17,10,9,15,17,15,8,0,14,15,10,15,8,10,8,10,15,17,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,9,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,22,10,15,17,24,14,21,15,15,14,31,22,30,23,0,21,22,23,31,24,17,15,15,15,31,15,0,0,15,15,14,14,15,15,0,0,8,22,15,0,0,16,22,14,22,8,8,8,8,1,1,8,8,7,7,1,8,7,8,8,8,8,0,7,8,8,8,8,1,8,8,1,8,8,0,0,8,8,0,7,1,1,0,8,0,8,8,0,0,8,8,7,8,1,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,0,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,0,15,0,0,15,22,14,15,8,15,15,16,8,8,15,16,14,14,8,15,14,15,15,16,16,0,14,15,16,15,15,8,16,15,8,15,16,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,8,8,15,16,14,14,8,15,14,16,15,15,16,0,14,15,16,16,16,9,15,15,8,16,15,0,0,15,15,7,14,8,8,0,16,8,15,15,0,0,0,15,14,15,8,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,0,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,0,14,15,8,14,14,14,7,7,14,14,14,14,9,16,16,14,16,14,14,0,14,14,16,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,0,14,7,22,15,15,8,8,15,22,14,14,8,15,14,22,15,22,22,0,14,15,22,22,22,15,15,15,8,22,15,0,0,15,15,7,14,8,8,0,22,8,15,15,0,0,15,15,14,0,8,8,8,9,9,8,8,8,8,8,9,9,7,8,9,8,8,0,8,8,8,8,8,8,8,8,8,9,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,0,0,17,16,7,9,16,16,17,16,8,15,14,16,15,17,16,14,0,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,17,9,17,16,0,2,17,16,14,16,10,17,0,16,7,9,16,16,16,16,8,15,14,16,15,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,17,16,14,16,10,16,16,0,8,17,16,16,18,24,15,15,14,24,22,23,16,22,0,23,15,23,16,7,17,15,16,22,18,0,0,16,16,16,16,17,15,0,23,10,23,16,0,2,16,23,14,17,11,7,7,8,0,7,7,7,8,8,8,8,7,7,8,7,7,8,0,7,7,7,7,7,7,7,7,8,8,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,8,9,9,17,7,0,9,11,10,16,14,7,9,17,14,16,11,14,0,16,8,18,9,7,10,10,16,14,10,0,0,11,11,16,9,17,15,0,16,5,16,11,0,2,9,16,7,10,10,16,16,16,7,9,0,16,16,16,7,14,14,16,14,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,16,7,11,16,0,16,16,7,14,16,16,14,16,18,14,0,16,14,18,16,7,16,16,9,14,16,0,0,18,18,9,16,9,7,0,16,11,16,18,0,2,16,16,14,16,9,17,16,18,8,10,16,16,0,18,8,15,15,17,15,17,16,15,0,17,15,16,16,7,17,15,9,15,18,0,0,16,17,10,17,10,8,0,17,10,17,16,0,3,16,16,15,17,11,16,16,24,8,16,16,16,18,0,15,15,15,23,22,23,16,22,0,23,14,23,16,7,16,14,16,22,17,0,0,16,16,17,17,16,15,0,23,9,23,16,0,3,16,23,15,16,10,8,8,15,8,14,7,7,8,15,0,9,7,14,16,14,7,15,0,14,7,14,7,7,7,7,14,15,8,0,0,7,7,14,7,14,14,0,14,0,14,7,0,0,8,14,7,7,9,15,15,15,8,7,14,14,15,15,9,0,14,14,16,14,14,15,0,14,14,14,14,7,14,14,7,15,15,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,15,14,14,14,9,14,14,14,7,9,14,16,15,15,7,14,0,14,14,14,16,14,0,14,14,16,14,7,14,16,7,14,14,0,0,16,16,8,15,7,7,0,14,9,14,16,0,1,14,14,15,14,7,16,16,24,7,17,16,16,17,23,14,14,14,0,21,23,16,21,0,23,15,23,16,7,17,15,16,21,17,0,0,16,16,16,16,17,15,0,23,10,23,16,0,2,16,23,14,17,10,15,15,22,8,14,14,14,15,22,16,16,14,21,0,21,14,22,0,21,14,21,14,7,14,14,14,22,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,15,21,14,14,9,17,16,23,7,16,16,16,17,23,14,14,14,23,21,0,16,21,0,24,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,24,9,24,16,0,2,16,23,14,16,9,16,16,16,7,11,16,18,16,16,7,14,16,16,14,16,0,16,0,16,14,18,16,7,16,16,9,14,16,0,0,18,18,9,16,9,7,0,16,11,16,18,0,2,16,16,14,16,9,14,14,22,8,14,14,14,15,22,15,15,14,21,22,21,16,0,0,21,14,21,14,7,14,14,14,22,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,16,23,7,16,16,16,17,23,14,14,14,23,21,24,16,21,0,0,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,24,9,24,16,0,2,16,23,14,16,9,14,14,15,7,8,14,14,15,14,7,14,14,15,14,14,14,14,0,14,0,14,14,7,15,15,7,14,15,0,0,14,14,7,14,8,8,0,14,8,14,14,0,0,14,14,14,15,8,16,16,23,7,18,16,18,16,23,14,14,16,23,21,23,18,21,0,23,14,0,16,7,16,16,16,21,16,0,0,18,18,16,16,16,14,0,23,11,23,18,0,2,16,23,14,16,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,0,16,14,16,0,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,0,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,16,16,17,7,10,16,16,17,16,7,14,14,17,14,16,16,14,0,16,15,16,16,7,0,15,9,14,17,0,0,16,16,9,16,10,8,0,16,10,16,16,0,2,16,16,14,17,10,14,14,15,7,10,14,16,15,14,7,14,16,15,14,14,16,14,0,14,15,16,14,7,15,0,7,14,15,0,0,16,16,7,14,8,8,0,14,10,14,16,0,0,14,14,14,15,8,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,0,16,7,16,9,7,9,7,0,14,9,0,0,9,9,16,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,14,14,22,8,14,14,14,15,22,15,15,14,21,22,21,14,22,0,21,14,21,14,7,14,14,14,0,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,16,16,18,8,10,16,16,18,17,8,15,14,17,15,16,16,15,0,16,15,16,16,7,17,15,9,15,0,0,0,16,16,9,16,10,8,0,16,10,16,16,0,2,16,16,14,17,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,7,11,16,18,16,16,7,14,16,16,14,16,18,14,0,16,14,18,16,7,16,16,9,14,16,0,0,0,18,9,16,9,7,0,16,11,16,18,0,2,16,16,14,16,9,17,16,16,7,11,16,18,17,16,7,14,16,16,14,17,18,14,0,17,14,18,16,7,16,16,9,14,16,0,0,18,0,9,16,9,7,0,17,11,17,18,0,2,16,16,14,16,9,9,9,16,7,16,9,9,10,17,14,7,8,16,14,16,9,14,0,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,10,16,14,0,16,2,16,9,0,3,9,16,8,9,9,16,16,16,7,9,16,16,17,17,7,14,15,16,14,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,10,0,9,7,0,16,9,16,16,0,3,16,16,16,16,9,9,9,17,7,17,9,9,10,16,14,7,7,17,14,16,9,14,0,16,8,16,9,7,10,8,16,14,10,0,0,9,9,16,9,0,15,0,16,3,16,9,0,2,9,16,7,10,10,7,7,15,7,15,7,7,8,15,14,7,7,15,14,14,7,14,0,14,8,14,7,7,8,8,14,14,8,0,0,7,7,14,7,15,0,0,14,1,14,7,0,0,7,14,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,16,23,7,16,16,16,17,23,14,14,14,23,21,24,16,21,0,24,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,0,9,24,16,0,2,16,23,14,16,9,9,9,10,0,5,9,11,10,9,0,7,9,10,7,9,11,7,0,9,8,11,9,0,10,10,2,7,10,0,0,11,11,2,9,3,1,0,9,0,9,11,0,2,9,9,7,10,3,17,16,23,7,16,16,16,17,23,14,14,14,23,21,24,16,21,0,24,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,24,9,0,16,0,2,16,23,14,16,9,16,16,16,7,11,16,18,16,16,7,14,16,16,14,16,18,14,0,16,14,18,16,7,16,16,9,14,16,0,0,18,18,9,16,9,7,0,16,11,16,0,0,2,16,16,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,3,3,0,0,1,2,0,2,2,0,0,2,0,2,2,0,2,0,2,0,2,0,0,2,2,3,3,2,0,0,2,2,2,2,0,0,2,2,1,2,2,17,17,16,7,9,16,16,16,16,8,15,14,16,15,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,0,16,14,16,10,16,16,23,7,16,16,16,16,23,14,14,14,23,21,23,16,21,0,23,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,0,14,16,9,14,14,14,7,7,14,14,15,15,7,14,15,14,14,14,14,14,0,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,16,7,7,0,14,7,14,14,0,1,14,14,0,14,7,16,16,17,7,10,16,16,17,16,7,14,14,17,14,16,16,14,0,16,15,16,16,7,17,15,9,14,17,0,0,16,16,9,16,10,8,0,16,10,16,16,0,2,16,16,14,0,10,10,10,11,8,10,9,9,11,10,9,9,7,10,9,9,9,8,0,9,8,9,9,7,10,8,9,8,11,0,0,9,9,9,9,10,8,0,9,3,9,9,0,2,10,9,7,10,0,0,18,17,9,10,17,17,17,17,8,15,14,17,15,18,18,15,17,0,15,17,17,8,17,15,10,15,17,0,0,17,18,9,16,10,8,0,19,10,18,17,0,2,18,17,14,17,10,18,0,17,9,10,17,17,16,17,8,15,14,17,15,17,18,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,18,17,14,17,10,17,17,0,8,17,17,17,18,25,15,15,14,26,22,24,17,22,23,0,15,24,17,8,17,15,17,22,17,0,0,17,17,18,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,9,9,8,0,15,15,8,14,15,15,15,7,8,15,8,9,8,7,0,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,15,8,0,9,8,8,8,0,0,9,8,14,8,8,10,10,17,15,0,17,10,16,23,22,15,7,17,22,17,10,15,16,0,8,17,10,8,17,8,17,15,10,0,0,10,10,16,16,24,15,0,17,10,17,10,0,2,10,17,14,10,10,17,17,17,15,17,0,17,24,23,17,22,14,17,22,17,17,15,16,0,15,17,17,8,24,15,10,15,17,0,0,17,17,9,23,17,8,0,17,17,17,17,0,2,17,17,21,17,10,17,17,17,8,10,17,0,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,17,16,18,14,16,24,16,0,25,15,21,14,18,21,17,16,14,17,0,14,16,16,7,23,14,9,14,16,0,0,16,17,11,23,16,7,0,17,16,17,16,0,2,16,16,21,16,9,17,17,25,15,23,23,16,25,0,21,21,14,25,28,23,17,21,23,0,14,23,16,7,23,14,16,21,16,0,0,16,16,18,23,23,14,0,24,16,23,16,0,2,17,23,21,16,9,8,8,15,15,22,17,8,15,21,0,15,7,15,22,15,8,15,14,0,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,22,15,0,15,8,15,8,0,0,8,15,14,8,8,15,15,15,15,15,22,15,21,21,15,0,14,15,22,15,15,15,14,0,15,15,15,8,22,15,8,15,15,0,0,15,15,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,0,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,17,17,26,8,17,17,17,18,25,15,15,14,0,22,24,17,22,23,0,15,24,17,8,17,15,17,22,17,0,0,17,17,18,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,15,15,22,15,22,22,15,21,28,22,22,14,22,0,22,15,22,21,0,15,22,15,8,22,15,15,22,15,0,0,15,15,14,21,22,15,0,22,15,22,15,0,0,15,22,21,15,8,18,17,24,8,17,17,17,17,23,15,15,14,24,22,0,17,22,24,0,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,25,10,25,17,0,2,17,24,14,17,10,18,18,17,9,10,17,17,16,17,8,15,14,17,15,17,0,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,18,17,14,17,10,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,0,21,0,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,17,16,23,7,16,16,16,17,23,14,14,14,23,21,24,16,21,0,0,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,24,9,24,16,0,2,16,23,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,0,0,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,0,15,0,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,0,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,0,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,17,17,17,15,17,24,17,23,23,15,22,14,17,22,17,17,15,16,0,15,17,17,8,0,15,10,15,17,0,0,17,17,9,23,17,8,0,17,17,17,17,0,2,17,17,21,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,0,15,15,15,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,0,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,22,21,0,15,22,15,8,15,15,15,0,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,0,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,18,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,0,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,18,10,18,17,0,2,17,17,14,17,10,9,9,18,7,16,9,9,11,18,14,7,7,18,14,16,9,14,16,0,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,16,16,16,14,16,23,16,23,23,14,21,14,16,21,16,16,14,16,0,14,16,16,7,23,14,9,14,16,0,0,16,16,9,0,16,7,0,16,16,16,16,0,2,16,16,21,16,9,10,10,17,15,24,17,10,16,23,22,15,7,17,22,17,10,15,16,0,8,17,10,8,17,8,17,15,10,0,0,10,10,16,16,0,15,0,17,10,17,10,0,2,10,17,14,10,10,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,0,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,18,24,9,17,17,17,17,24,15,15,14,24,22,25,18,22,24,0,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,0,10,25,17,0,2,18,24,14,17,10,10,10,10,8,10,17,10,16,16,8,15,7,10,15,10,10,8,9,0,8,10,10,1,17,8,3,8,10,0,0,10,10,2,16,10,1,0,10,0,10,10,0,9,10,10,14,10,3,18,17,24,8,17,17,17,17,23,15,15,14,24,22,25,17,22,24,0,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,25,10,0,17,0,2,17,24,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,0,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,9,2,2,0,0,2,2,0,2,2,18,18,17,9,10,17,17,16,17,8,15,14,17,15,17,18,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,0,17,14,17,10,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,0,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,14,14,14,14,14,21,14,21,21,14,21,14,14,21,14,14,14,14,0,14,14,14,7,21,14,7,14,14,0,0,14,14,7,21,14,7,0,14,14,14,14,0,0,14,14,0,14,7,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,0,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,0,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,0,15,15,8,8,15,22,14,14,8,22,14,22,22,24,22,22,14,15,0,22,22,15,15,15,10,22,15,0,0,15,15,7,16,8,8,0,22,8,15,15,0,2,15,17,14,24,13,15,0,15,15,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,22,8,22,15,8,15,15,0,0,15,15,7,14,8,8,0,15,15,15,15,0,0,15,15,14,15,8,15,15,0,8,9,15,16,15,14,8,15,14,16,15,16,16,16,15,15,0,15,15,8,17,16,8,15,17,0,0,15,15,7,14,9,9,0,15,9,15,16,0,0,15,15,14,16,9,8,15,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,0,8,15,8,15,8,8,8,8,0,0,8,8,7,7,8,8,0,8,8,8,8,0,0,8,8,7,8,8,8,8,9,8,0,8,8,8,7,8,8,7,9,8,8,8,8,8,8,0,8,8,8,9,9,8,8,9,0,0,8,8,7,7,9,9,0,8,2,8,8,0,0,8,8,7,9,9,15,15,15,8,8,0,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,22,15,16,8,8,15,0,14,14,8,15,14,23,15,23,24,24,14,15,0,23,23,16,16,15,8,23,16,0,0,15,15,7,14,8,8,0,23,8,15,16,0,0,16,15,14,22,8,14,14,15,7,8,14,14,0,14,7,14,14,15,14,14,14,14,15,14,0,14,14,7,15,15,7,14,15,0,0,14,14,7,14,8,8,0,14,8,14,14,0,0,14,14,14,15,8,14,14,14,7,7,14,14,14,0,7,14,14,14,14,14,14,14,14,14,0,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,8,8,8,8,8,8,8,7,7,0,10,9,8,10,8,8,10,7,8,0,8,8,10,8,10,8,10,8,0,0,8,8,7,7,8,10,0,8,1,8,8,0,0,8,8,9,8,8,22,15,15,8,8,15,15,14,14,10,0,16,15,24,17,15,17,14,15,0,15,15,10,15,17,10,17,15,0,0,15,15,7,16,8,10,0,15,8,15,15,0,2,15,17,16,17,13,14,14,14,7,7,14,14,14,14,9,16,0,14,16,14,14,16,14,14,0,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,22,15,16,8,9,15,23,15,14,8,15,14,0,15,22,23,23,15,15,0,23,23,16,16,16,8,23,16,0,0,15,15,7,14,9,9,0,23,9,15,15,0,0,16,15,14,23,9,22,15,15,8,8,15,15,14,14,10,24,16,15,0,17,15,17,14,15,0,15,15,10,15,17,10,17,15,0,0,15,15,7,16,8,10,0,15,8,15,15,0,2,15,17,16,17,13,24,15,16,8,8,15,23,14,14,8,17,14,22,17,0,23,23,14,15,0,22,22,15,16,15,10,22,16,0,0,15,15,7,16,8,8,0,22,8,15,16,0,2,15,17,14,24,10,22,15,16,8,8,15,24,14,14,8,15,14,23,15,23,0,24,14,15,0,23,23,16,16,15,8,23,16,0,0,15,15,7,14,8,8,0,23,8,15,16,0,0,16,15,14,22,8,22,15,16,8,8,15,24,14,14,10,17,16,23,17,23,24,0,14,15,0,23,23,18,16,17,8,25,16,0,0,15,15,7,14,8,10,0,23,8,15,16,0,0,16,15,16,22,8,14,14,15,7,8,14,14,15,14,7,14,14,15,14,14,14,14,0,14,0,14,14,7,15,15,7,14,15,0,0,14,14,7,14,8,8,0,14,8,14,14,0,0,14,14,14,15,8,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,0,0,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,15,15,8,8,15,23,14,14,8,15,14,23,15,22,23,23,14,15,0,0,23,16,15,15,8,23,15,0,0,15,15,7,14,8,8,0,23,8,15,15,0,0,16,15,14,22,8,22,22,15,15,8,15,23,14,14,8,15,14,23,15,22,23,23,14,15,0,23,0,16,22,15,8,23,15,0,0,15,15,7,14,8,8,0,23,15,15,15,0,0,16,15,14,22,8,15,8,8,8,8,8,16,7,7,10,10,9,16,10,15,16,18,7,8,0,16,16,0,8,10,8,18,8,0,0,8,8,7,7,8,10,0,16,1,8,8,0,0,9,8,9,15,8,15,22,17,15,9,15,16,15,14,8,15,14,16,15,16,16,16,15,15,0,15,22,8,0,16,8,15,17,0,0,15,15,7,14,9,9,0,15,16,15,16,0,0,15,15,14,16,9,15,15,16,8,9,15,15,15,14,10,17,16,16,17,15,15,17,15,15,0,15,15,10,16,0,8,17,16,0,0,15,15,7,14,9,11,0,15,9,15,15,0,0,15,15,16,16,9,10,8,8,8,8,8,8,7,7,8,10,7,8,10,10,8,8,7,8,0,8,8,8,8,8,0,8,8,0,0,8,8,7,9,8,8,0,8,1,8,8,0,2,8,10,7,10,10,22,15,15,8,8,15,23,14,14,10,17,16,23,17,22,23,25,14,15,0,23,23,18,15,17,8,0,15,0,0,15,15,7,14,8,10,0,23,8,15,15,0,0,16,15,16,22,8,15,15,17,8,9,15,16,15,14,8,15,14,16,15,16,16,16,15,15,0,15,15,8,17,16,8,15,0,0,0,15,15,7,14,9,9,0,15,9,15,16,0,0,15,15,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,0,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,15,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,16,14,14,7,7,14,14,14,14,7,16,14,14,16,16,14,14,14,14,0,14,14,7,14,14,9,14,14,0,0,14,14,7,0,7,7,0,14,7,14,14,0,2,14,16,14,16,9,8,8,9,8,9,8,8,8,7,8,8,7,9,8,8,8,8,8,8,0,8,8,8,9,9,8,8,9,0,0,8,8,7,7,0,9,0,8,2,8,8,0,0,8,8,7,9,9,8,8,9,8,9,8,8,8,7,10,10,9,9,10,8,8,10,8,8,0,8,8,10,9,11,8,10,9,0,0,8,8,7,7,9,0,0,8,2,8,8,0,0,8,8,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,15,15,8,8,15,23,14,14,8,15,14,23,15,22,23,23,14,15,0,23,23,16,15,15,8,23,15,0,0,15,15,7,14,8,8,0,0,8,15,15,0,0,16,15,14,22,8,8,15,9,8,2,8,8,8,7,1,8,7,9,8,8,8,8,8,8,0,8,15,1,16,9,1,8,9,0,0,8,8,0,7,2,2,0,8,0,8,8,0,0,8,8,7,9,2,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,0,15,0,0,15,15,14,15,8,15,15,16,8,8,15,16,14,14,8,15,14,15,15,16,16,16,14,15,0,15,15,8,16,15,8,15,16,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,15,15,15,8,8,15,16,14,14,8,15,14,16,15,15,16,16,14,15,0,16,16,9,15,15,8,16,15,0,0,15,15,7,14,8,8,0,16,8,15,15,0,0,0,15,14,15,8,17,15,15,8,8,15,15,14,14,8,17,14,15,17,17,15,15,14,15,0,15,15,8,15,15,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,0,14,17,10,14,14,14,7,7,14,14,14,14,9,16,16,14,16,14,14,16,14,14,0,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,0,14,7,24,15,16,8,9,15,22,15,14,8,17,14,23,17,24,22,22,15,15,0,22,22,15,16,16,10,22,16,0,0,15,15,7,16,9,9,0,22,9,15,15,0,2,15,17,14,0,11,13,8,9,8,9,8,8,8,7,8,13,7,9,13,10,8,8,8,8,0,8,8,8,9,9,10,8,9,0,0,8,8,7,9,9,9,0,8,2,8,8,0,2,8,10,7,11,0,0,17,17,8,10,17,25,16,16,8,15,14,25,15,25,24,23,16,17,22,0,25,16,17,15,10,23,17,0,0,17,17,9,16,10,8,0,25,10,17,17,0,2,17,17,14,24,10,17,0,17,8,10,17,18,16,16,8,16,14,18,15,18,17,15,16,17,15,0,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,18,14,17,10,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,0,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,0,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,17,8,0,10,12,9,16,15,8,9,17,15,17,12,15,18,17,8,0,10,8,10,10,17,15,10,0,0,12,12,16,9,17,15,0,17,5,17,12,0,2,10,17,7,10,10,17,17,17,8,10,0,18,16,16,9,15,15,17,16,18,17,16,16,17,15,0,18,9,17,15,10,16,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,25,18,17,8,12,18,0,16,16,9,16,17,27,16,27,27,25,18,17,23,0,28,18,17,18,10,25,17,0,0,20,20,9,16,10,8,0,26,12,17,19,0,2,18,18,14,24,10,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,0,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,23,7,16,16,16,16,0,14,14,14,23,21,23,16,21,23,23,14,0,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,23,14,16,9,8,8,15,8,15,9,9,7,14,0,8,8,15,16,16,8,16,14,15,8,0,9,9,8,8,15,16,8,0,0,9,9,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,15,16,15,8,8,15,16,14,14,8,0,14,16,15,16,15,15,14,15,15,0,16,8,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,14,14,14,7,9,15,17,14,14,8,14,0,14,15,15,16,15,16,14,14,0,15,8,14,16,7,15,14,0,0,17,17,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,25,18,24,8,17,17,27,16,23,15,16,14,0,22,33,25,31,23,24,23,0,27,17,17,16,17,31,17,0,0,17,17,16,16,17,15,0,33,10,24,17,0,2,18,25,14,24,10,15,15,22,8,15,16,16,14,21,16,15,15,22,0,23,15,23,21,22,15,0,16,9,15,15,15,23,15,0,0,16,16,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,25,18,24,8,17,18,27,16,23,16,16,15,33,23,0,24,31,23,24,22,0,27,17,17,16,17,31,17,0,0,18,18,16,16,17,15,0,32,10,24,17,0,2,17,25,14,24,10,24,17,17,8,12,17,27,16,16,8,15,16,25,15,24,0,23,18,17,23,0,25,16,17,17,10,23,17,0,0,19,19,9,16,10,8,0,25,12,17,19,0,2,18,17,14,24,10,23,15,22,8,15,16,25,14,21,16,15,15,31,23,31,23,0,21,22,23,0,25,18,15,15,15,32,15,0,0,16,16,14,14,15,15,0,31,8,22,15,0,0,16,22,14,22,8,16,16,23,7,18,16,18,16,23,14,14,16,23,21,23,18,21,0,23,14,0,16,7,16,16,16,21,16,0,0,18,18,16,16,16,14,0,23,11,23,18,0,2,16,23,14,16,9,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,0,15,0,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,24,14,17,10,22,15,15,8,8,15,23,14,14,8,15,14,23,15,22,23,23,14,15,0,0,23,16,15,15,8,23,15,0,0,15,15,7,14,8,8,0,23,8,15,15,0,0,16,15,14,22,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,18,17,8,10,18,28,16,16,9,16,15,27,16,27,25,25,16,17,23,0,0,18,17,16,10,25,17,0,0,18,18,9,16,10,8,0,26,10,17,17,0,2,18,18,14,24,10,16,8,8,8,8,9,18,7,7,9,8,8,17,9,17,16,18,7,8,16,0,18,0,8,8,8,18,8,0,0,9,9,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,0,17,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,15,16,15,8,10,15,18,14,14,8,16,16,16,15,16,17,15,16,15,15,0,16,8,15,0,8,15,15,0,0,17,17,7,14,8,8,0,15,10,15,17,0,0,15,16,14,15,8,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,0,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,23,15,22,8,15,16,25,14,21,16,15,15,31,23,31,23,32,21,22,23,0,25,18,15,15,15,0,15,0,0,16,16,14,14,15,15,0,31,8,22,15,0,0,16,22,14,22,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,0,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,12,18,20,16,16,9,15,17,17,16,18,19,16,18,17,15,0,18,9,17,17,10,16,17,0,0,0,20,9,16,10,8,0,17,12,17,24,0,2,17,17,14,17,10,17,17,17,8,12,18,20,16,16,9,15,17,17,16,18,19,16,18,17,15,0,18,9,17,17,10,16,17,0,0,20,0,9,16,10,8,0,17,12,17,19,0,2,17,17,14,17,10,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,0,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,0,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,0,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,17,7,10,10,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,0,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,17,24,8,17,17,26,16,23,15,15,14,33,22,32,25,31,23,24,23,0,26,17,17,15,17,31,17,0,0,17,17,16,16,17,15,0,0,10,24,17,0,2,18,24,14,24,10,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,0,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,0,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,0,17,0,2,17,24,14,17,10,17,17,17,8,12,17,19,16,16,8,15,16,17,15,17,19,15,18,17,15,0,17,8,17,17,10,15,17,0,0,24,19,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,0,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,17,17,17,8,10,17,18,16,16,8,15,14,18,15,17,18,16,16,17,16,0,18,9,17,15,10,16,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,0,17,14,17,10,17,18,24,8,17,17,18,16,23,15,16,14,25,22,25,17,22,23,24,15,0,18,8,17,16,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,0,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,24,17,17,8,10,17,24,16,16,8,15,14,24,15,24,24,22,16,17,22,0,24,15,17,15,10,22,17,0,0,17,17,9,16,10,8,0,24,10,17,17,0,2,17,17,14,0,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,0,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,0,18,17,8,10,18,26,16,16,8,15,14,26,15,25,24,23,16,17,22,25,0,16,17,16,10,23,17,0,0,18,17,9,16,10,9,0,26,10,17,17,0,3,18,17,14,25,10,18,0,17,15,10,18,19,16,16,8,16,14,19,15,18,17,15,16,17,22,18,0,8,24,17,10,15,17,0,0,18,17,9,16,10,9,0,18,17,17,17,0,3,18,18,14,18,10,17,17,0,8,10,18,18,16,17,8,16,14,17,15,18,18,16,16,17,15,17,0,9,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,8,15,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,15,8,0,8,15,8,8,8,8,0,0,8,8,7,7,8,8,0,8,8,8,8,0,0,8,8,7,8,8,10,10,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,11,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,18,18,18,8,10,0,20,16,17,9,16,15,18,16,19,18,17,16,17,15,18,0,10,17,16,10,16,17,0,0,19,18,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,26,19,18,8,10,20,0,16,17,9,17,15,28,16,28,26,26,16,17,23,28,0,19,17,17,10,25,17,0,0,19,18,9,16,10,9,0,27,10,17,17,0,3,19,18,14,25,10,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,0,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,17,7,9,17,17,16,0,7,15,14,16,14,17,17,15,16,16,14,16,0,8,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,8,8,8,8,8,9,9,7,7,0,8,8,8,9,9,8,9,7,8,8,9,0,9,8,8,8,9,8,0,0,9,9,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,15,16,16,8,8,16,17,14,15,8,0,14,16,15,17,16,16,14,15,15,16,0,9,15,16,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,14,14,14,7,7,15,15,14,14,8,14,0,14,15,15,14,15,14,14,14,15,0,8,14,14,7,15,14,0,0,15,15,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,26,19,17,8,10,18,28,16,16,8,16,14,0,15,26,25,24,16,17,23,27,0,17,17,17,10,24,17,0,0,18,17,9,16,10,9,0,27,10,17,17,0,3,19,18,14,25,10,15,15,15,8,8,16,16,14,14,9,15,15,15,0,16,15,16,14,15,15,16,0,9,15,15,8,16,15,0,0,16,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,25,18,18,8,10,19,28,16,17,9,17,15,26,16,0,25,25,16,17,22,27,0,18,17,16,10,24,17,0,0,18,18,9,16,10,8,0,25,10,17,17,0,2,17,18,14,24,10,24,17,18,8,10,18,26,16,17,8,16,14,25,15,25,0,24,16,17,23,25,0,17,17,15,10,23,17,0,0,17,17,9,16,10,8,0,25,10,17,17,0,2,18,17,14,24,10,23,15,16,8,8,17,26,14,15,9,16,15,24,16,25,24,0,14,15,23,25,0,19,15,15,8,25,15,0,0,16,16,7,14,8,8,0,24,8,15,15,0,0,16,15,14,22,8,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,0,16,14,16,0,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,0,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,22,22,15,15,8,15,23,14,14,8,15,14,23,15,22,23,23,14,15,0,23,0,16,22,15,8,23,15,0,0,15,15,7,14,8,8,0,23,15,15,15,0,0,16,15,14,22,8,25,18,17,8,10,18,28,16,16,9,16,15,27,16,27,25,25,16,17,23,0,0,18,17,16,10,25,17,0,0,18,18,9,16,10,8,0,26,10,17,17,0,2,18,18,14,24,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,8,9,8,8,10,19,7,8,9,9,8,17,9,18,17,19,7,8,16,18,0,0,8,8,8,18,8,0,0,9,9,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,17,24,17,15,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,22,17,0,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,17,17,17,17,0,2,17,17,14,17,10,16,17,15,8,8,16,17,14,14,8,16,14,17,15,16,15,15,14,15,15,16,0,8,15,0,8,15,15,0,0,16,15,7,14,8,9,0,16,8,15,15,0,1,16,16,14,16,8,10,10,10,8,11,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,23,15,15,8,8,16,25,14,14,9,15,15,24,16,24,23,25,14,15,23,25,0,18,15,15,8,0,15,0,0,16,16,7,14,8,8,0,24,8,15,15,0,0,16,15,14,22,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,0,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,17,8,10,19,19,16,16,9,15,15,18,16,18,17,16,16,17,15,18,0,9,17,16,10,16,17,0,0,0,18,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,17,17,17,8,10,18,18,16,16,9,15,15,17,16,18,17,16,16,17,15,18,0,9,17,15,10,16,17,0,0,18,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,0,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,0,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,8,8,8,9,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,0,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,18,17,8,10,18,27,16,16,8,15,14,27,15,25,25,24,16,17,23,26,0,17,17,16,10,24,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,19,17,14,25,10,10,17,10,8,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,15,10,0,1,17,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,0,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,0,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,0,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,18,18,17,8,10,18,19,16,16,8,15,14,19,15,17,18,16,16,17,16,18,0,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,0,17,14,18,10,17,18,17,8,10,17,18,16,16,8,16,14,18,15,18,17,15,16,17,15,18,0,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,0,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,25,18,17,8,10,18,25,16,16,8,15,14,25,15,24,24,22,16,17,22,24,0,15,17,16,10,22,17,0,0,18,17,9,16,10,9,0,25,10,17,17,0,3,18,17,14,0,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,0,9,8,8,9,15,16,14,7,8,15,7,16,8,16,22,16,7,8,15,16,16,0,8,15,8,16,16,0,0,15,15,7,14,8,8,0,16,1,8,8,0,0,15,8,14,22,15,9,0,8,8,9,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,10,8,8,10,11,0,0,8,8,7,7,10,10,0,8,1,10,8,0,0,10,8,9,8,8,8,8,0,8,8,9,9,7,8,8,9,7,8,8,9,9,9,7,8,8,8,9,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,9,9,8,8,0,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,15,8,9,8,8,0,10,14,8,9,16,8,8,9,10,16,10,7,8,8,9,10,0,8,15,8,9,15,0,0,16,16,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,15,16,8,9,8,8,10,0,7,8,9,9,8,17,9,18,17,19,7,8,16,18,19,0,8,8,8,18,8,0,0,9,9,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,14,7,7,7,7,14,7,0,7,7,14,7,7,7,7,14,7,7,7,7,7,7,0,7,14,7,7,14,0,0,14,14,7,14,7,7,0,7,0,7,7,0,0,14,7,14,14,14,7,7,8,7,7,8,8,7,0,7,8,7,7,7,8,8,8,7,7,7,7,8,0,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,8,10,8,8,8,9,9,7,7,0,10,10,8,11,9,8,11,7,8,10,9,9,0,10,10,8,13,10,0,0,9,9,7,7,10,12,0,8,1,10,8,0,0,10,8,11,8,8,15,8,9,8,8,16,9,14,8,10,0,9,8,10,9,16,11,7,8,10,8,9,0,8,17,8,10,15,0,0,15,15,7,14,8,10,0,8,1,8,8,0,0,15,8,16,15,15,7,7,7,7,7,8,8,7,7,10,9,0,7,10,8,7,10,7,7,9,8,8,0,7,9,7,10,7,0,0,8,8,7,7,7,9,0,7,0,7,7,0,0,7,7,9,7,7,16,8,8,8,8,8,17,7,7,8,8,7,0,8,16,16,17,7,8,16,17,17,0,8,8,8,17,8,0,0,8,8,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,8,8,8,8,8,9,9,7,7,11,10,10,8,0,9,8,11,7,8,10,9,9,0,8,10,8,11,8,0,0,9,9,7,7,8,10,0,8,1,8,8,0,0,8,8,9,8,8,16,8,9,8,8,10,18,7,8,9,9,8,16,9,0,16,18,7,8,15,17,18,0,8,8,8,17,8,0,0,9,9,7,7,8,8,0,16,1,8,8,0,0,8,8,7,15,8,22,8,9,8,8,16,17,14,8,8,16,7,16,8,16,0,17,7,8,16,16,17,0,8,15,8,16,15,0,0,15,15,7,14,8,8,0,16,1,8,8,0,0,16,8,14,22,15,16,8,9,8,8,10,19,7,8,11,11,10,17,11,18,17,0,7,8,18,18,19,0,8,10,8,20,8,0,0,9,9,7,7,8,10,0,17,1,8,8,0,0,9,8,9,15,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,0,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,0,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,15,8,8,8,8,8,16,7,7,10,10,9,16,10,15,16,18,7,8,0,16,16,0,8,10,8,18,8,0,0,8,8,7,7,8,10,0,16,1,8,8,0,0,9,8,9,15,8,16,8,8,8,8,9,18,7,7,9,8,8,17,9,17,16,18,7,8,16,0,18,0,8,8,8,18,8,0,0,9,9,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,16,8,9,8,8,10,19,7,8,9,9,8,17,9,18,17,19,7,8,16,18,0,0,8,8,8,18,8,0,0,9,9,7,7,8,8,0,17,1,8,8,0,0,9,8,7,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,8,8,8,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,0,8,8,10,10,0,0,8,8,7,7,10,10,0,8,1,10,8,0,0,10,8,9,8,8,15,8,8,8,8,15,8,14,7,10,17,9,8,10,8,15,10,7,8,10,8,8,0,8,0,8,10,15,0,0,15,15,7,14,8,10,0,8,1,8,8,0,0,15,8,16,15,15,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,0,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,16,10,8,8,8,9,18,7,7,13,10,10,17,11,17,16,20,7,8,18,18,18,0,10,10,8,0,10,0,0,9,9,7,7,10,12,0,17,1,10,8,0,0,11,8,11,15,8,16,11,8,8,9,15,8,14,7,10,15,7,8,8,8,15,8,7,8,8,8,8,0,10,15,8,10,0,0,0,15,15,7,14,10,10,0,8,1,10,8,0,0,17,8,16,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,8,8,8,8,16,9,14,7,9,15,8,8,9,9,15,9,7,8,8,9,9,0,8,15,8,9,15,0,0,0,16,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,15,15,8,8,8,8,16,9,14,7,9,15,8,8,9,9,15,9,7,8,8,9,9,0,8,15,8,9,15,0,0,16,0,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,15,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,14,7,7,7,7,14,7,14,7,7,14,7,7,7,7,14,7,7,7,7,7,7,0,7,14,7,7,14,0,0,14,14,7,0,7,7,0,7,0,7,7,0,0,14,7,14,14,14,8,10,8,8,8,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,10,8,8,10,10,0,0,8,8,7,7,0,10,0,8,1,10,8,0,0,10,8,9,8,8,8,10,8,8,8,8,8,7,7,12,10,9,8,10,8,8,10,7,8,10,8,8,0,10,10,8,12,10,0,0,8,8,7,7,10,0,0,8,1,10,8,0,0,10,8,11,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,8,8,8,8,8,17,7,7,8,8,7,17,8,16,16,17,7,8,16,17,17,0,8,8,8,17,8,0,0,8,8,7,7,8,8,0,0,1,8,8,0,0,9,8,7,15,8,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,0,0,1,1,0,1,1,8,10,8,8,8,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,10,8,8,10,10,0,0,8,8,7,7,10,10,0,8,1,0,8,0,0,10,8,9,8,8,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,0,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,10,8,8,8,15,9,14,7,10,15,7,9,8,8,16,9,7,8,9,9,9,0,10,15,8,11,17,0,0,15,15,7,14,10,10,0,9,1,10,8,0,0,0,8,16,15,15,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,0,7,8,8,14,9,7,7,7,14,7,14,7,11,16,9,7,9,7,14,9,7,7,9,7,7,0,9,16,7,11,16,0,0,14,14,7,14,9,11,0,7,0,9,7,0,0,16,7,0,14,14,22,8,8,8,8,15,15,14,7,8,15,7,15,8,15,22,15,7,8,15,15,15,0,8,15,8,15,15,0,0,15,15,7,14,8,8,0,15,1,8,8,0,0,15,8,14,0,15,15,8,8,8,8,15,8,14,7,8,15,7,8,8,8,15,8,7,8,8,8,8,0,8,15,8,8,15,0,0,15,15,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,0,0,17,18,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,0,15,10,15,17,0,0,18,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,17,0,17,15,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,22,17,24,10,0,15,10,17,19,0,0,17,17,9,16,12,10,0,17,17,19,17,0,2,19,17,16,17,10,18,17,0,8,11,17,18,18,16,8,15,14,18,15,18,19,17,17,17,17,17,17,8,0,16,10,15,19,0,0,18,18,9,16,11,9,0,17,11,17,18,0,2,17,17,14,18,11,8,15,8,0,16,15,8,14,14,22,16,7,8,15,8,9,8,7,15,15,8,15,8,0,8,15,8,8,0,0,8,8,14,14,15,15,0,8,15,8,8,0,7,8,8,14,8,15,10,10,11,16,0,17,10,17,16,15,16,7,11,15,10,11,8,10,17,9,10,10,8,0,9,10,8,11,0,0,10,10,9,16,18,9,0,10,11,10,10,0,2,10,10,14,11,11,17,17,17,15,17,0,17,23,23,15,22,14,17,22,17,17,15,16,24,15,17,17,8,0,15,10,15,17,0,0,17,17,9,23,17,8,0,17,17,17,17,0,2,17,17,21,17,10,17,17,18,8,10,17,0,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,0,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,17,16,18,14,17,23,16,0,23,14,21,14,17,21,16,17,15,17,23,15,16,16,7,0,15,9,14,17,0,0,17,17,9,23,17,8,0,16,17,16,16,0,2,16,16,21,17,10,16,16,16,14,16,23,16,23,0,14,21,14,16,21,16,16,14,16,23,14,16,16,7,0,14,9,14,16,0,0,16,16,9,23,16,7,0,16,16,16,16,0,2,16,16,21,16,9,8,10,8,22,15,15,8,14,14,0,15,7,8,15,8,8,8,7,15,8,8,8,10,0,8,15,10,10,0,0,8,8,14,14,17,17,0,8,8,10,8,0,7,10,8,16,8,15,15,15,15,16,16,22,15,21,21,15,0,14,15,22,15,16,15,14,22,15,15,15,8,0,15,8,15,15,0,0,15,15,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,0,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,17,17,18,8,11,17,17,17,16,8,15,14,0,15,17,17,15,17,17,16,17,17,8,0,16,10,15,18,0,0,17,17,9,16,11,9,0,17,11,17,17,0,2,17,17,14,18,11,15,15,15,15,15,22,15,21,21,15,22,14,15,0,15,15,15,14,22,15,15,15,8,0,15,8,15,15,0,0,15,15,7,21,15,8,0,15,15,15,15,0,0,15,15,21,15,8,17,17,18,8,10,17,18,16,16,8,15,14,17,15,0,18,16,16,17,16,17,17,8,0,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,18,17,19,9,11,17,18,17,16,8,16,14,17,15,18,0,17,16,17,16,17,17,8,0,15,10,15,18,0,0,18,18,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,16,15,17,8,8,15,16,15,14,8,15,14,15,15,16,17,0,14,15,16,15,15,8,0,15,8,15,16,0,0,16,16,7,14,8,8,0,15,8,15,16,0,0,15,15,14,15,8,16,16,17,7,10,16,16,17,16,7,14,14,17,14,16,16,14,0,16,15,16,16,7,0,15,9,14,17,0,0,16,16,9,16,10,8,0,16,10,16,16,0,2,16,16,14,17,10,17,17,17,15,17,24,17,23,23,15,22,14,17,22,17,17,15,16,0,15,17,17,8,0,15,10,15,17,0,0,17,17,9,23,17,8,0,17,17,17,17,0,2,17,17,21,17,10,15,22,17,15,9,15,16,15,14,8,15,14,16,15,16,16,16,15,15,0,15,22,8,0,16,8,15,17,0,0,15,15,7,14,9,9,0,15,16,15,16,0,0,15,15,14,16,9,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,0,17,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,17,24,17,15,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,22,17,0,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,17,17,17,17,0,2,17,17,14,17,10,8,10,8,8,8,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,0,8,8,10,10,0,0,8,8,7,7,10,10,0,8,1,10,8,0,0,10,8,9,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,16,8,9,15,15,15,14,8,15,14,16,15,15,15,15,15,15,16,15,15,8,0,0,8,15,16,0,0,15,15,7,14,9,9,0,15,9,15,15,0,0,15,15,14,16,9,10,10,10,15,10,10,10,9,9,15,8,7,10,8,10,10,8,9,10,8,10,10,8,0,8,0,8,10,0,0,10,10,16,9,10,15,0,10,3,10,10,0,9,10,10,7,10,17,15,17,15,8,8,15,15,14,14,10,15,14,15,15,15,15,15,14,15,15,15,15,10,0,15,8,0,17,0,0,15,15,7,14,10,11,0,15,8,17,15,0,0,17,15,16,15,8,17,19,19,8,11,17,18,17,16,10,15,14,18,15,18,18,16,17,17,17,17,17,10,0,16,10,17,0,0,0,17,17,9,16,13,11,0,17,11,19,18,0,2,19,17,16,18,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,17,18,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,0,15,10,15,17,0,0,0,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,18,17,18,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,0,15,10,15,17,0,0,18,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,9,9,9,14,9,9,9,9,9,14,7,7,9,7,9,9,7,9,9,7,9,9,7,0,7,16,7,9,0,0,9,9,0,9,9,14,0,9,2,9,9,0,9,9,9,7,9,16,16,16,16,14,16,23,16,23,23,14,21,14,16,21,16,16,14,16,23,14,16,16,7,0,14,9,14,16,0,0,16,16,9,0,16,7,0,16,16,16,16,0,2,16,16,21,16,9,10,12,11,15,18,17,10,17,16,17,15,7,11,15,10,10,8,10,17,9,10,10,10,0,9,10,10,13,0,0,10,10,9,16,0,11,0,10,11,12,10,0,2,12,10,16,11,11,8,10,9,15,9,8,8,8,7,17,8,7,9,8,8,8,8,8,8,9,8,8,10,0,9,15,11,11,0,0,8,8,14,7,11,0,0,8,2,10,8,0,7,10,8,9,9,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,0,10,17,17,0,2,17,17,14,17,10,10,17,11,15,11,17,10,17,16,8,15,7,11,15,10,10,8,10,17,16,10,17,1,0,9,3,8,11,0,0,10,10,2,16,11,2,0,10,0,10,10,0,2,10,10,14,11,4,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,0,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,19,17,16,17,10,17,17,18,8,10,17,18,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,0,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,7,2,2,2,2,2,7,0,0,2,0,2,2,0,2,2,0,2,2,0,0,0,9,0,2,0,0,2,2,9,2,2,7,0,2,2,2,2,0,0,2,2,0,2,9,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,0,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,19,17,0,2,0,17,16,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,14,16,14,14,14,21,14,21,21,16,21,14,14,21,14,14,14,14,21,14,14,14,9,0,14,7,16,16,0,0,14,14,7,21,16,9,0,14,14,16,14,0,0,16,14,0,14,7,17,17,18,8,11,17,17,17,16,8,15,14,18,15,17,17,15,17,17,16,17,17,8,0,16,10,15,18,0,0,17,17,9,16,11,9,0,17,11,17,17,0,2,17,17,14,0,11,10,10,11,15,11,10,10,10,9,15,8,7,11,8,10,10,8,10,10,9,10,10,8,0,9,17,8,11,0,0,10,10,16,9,11,16,0,10,4,10,10,0,9,10,10,7,11,0,0,16,15,8,8,23,16,21,14,8,22,14,16,15,15,22,15,14,15,15,15,16,15,15,0,8,15,22,0,0,23,22,7,21,8,9,0,16,8,15,15,0,1,23,15,21,23,15,16,0,15,8,8,16,17,14,14,8,16,14,17,15,16,15,15,14,15,15,16,17,8,15,0,8,15,15,0,0,16,15,7,14,8,9,0,16,8,15,15,0,1,16,16,14,16,8,15,15,0,8,9,15,15,15,14,8,15,14,17,15,15,15,15,15,15,16,15,15,8,16,0,8,16,16,0,0,15,15,7,14,9,10,0,15,9,15,15,0,0,15,15,14,17,9,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,0,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,8,8,9,8,0,8,10,8,7,8,8,9,9,8,8,10,8,10,8,9,10,8,8,9,0,8,8,9,0,0,10,10,7,7,9,9,0,8,4,8,10,0,0,8,8,7,9,9,23,16,15,8,8,0,16,21,14,8,22,14,16,15,15,22,15,14,15,15,15,16,15,15,0,8,15,22,0,0,23,22,7,21,8,9,0,16,8,15,15,0,1,23,15,21,23,15,16,17,15,8,10,16,0,14,14,8,16,16,17,15,16,17,15,16,15,15,18,17,8,15,0,8,15,15,0,0,18,17,7,14,8,9,0,16,10,15,17,0,1,16,16,14,16,8,21,14,15,7,8,21,14,0,14,7,21,14,15,14,14,21,14,15,14,15,14,14,14,15,0,7,14,22,0,0,21,21,7,21,8,8,0,14,8,14,14,0,0,21,14,21,22,15,14,14,14,7,7,14,14,14,0,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,0,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,8,8,8,8,8,8,8,7,7,0,10,9,8,10,8,8,10,7,8,10,8,8,10,8,0,8,10,8,0,0,8,8,7,7,8,10,0,8,1,8,8,0,0,8,8,9,8,8,22,16,15,8,8,22,16,21,14,10,0,16,16,17,16,22,17,14,15,17,16,16,17,15,0,8,17,22,0,0,22,22,7,21,8,10,0,15,8,15,15,0,0,22,16,23,22,15,14,14,14,7,9,14,16,14,14,9,16,0,14,16,14,16,16,16,14,16,16,14,9,14,0,7,16,14,0,0,16,16,7,14,7,9,0,14,9,14,16,0,0,14,14,16,14,7,16,17,17,8,9,16,17,15,14,8,16,14,0,15,16,15,15,15,15,16,16,17,8,16,0,8,16,16,0,0,16,15,7,14,9,11,0,16,9,15,15,0,1,16,16,16,18,9,15,15,15,8,8,15,15,14,14,10,17,16,15,0,15,15,17,14,15,17,15,15,10,15,0,8,17,15,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,8,15,16,15,8,8,15,16,14,14,8,16,14,16,15,0,15,15,14,15,15,16,16,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,16,14,15,8,22,15,15,8,10,22,17,21,14,8,22,16,15,15,15,0,15,16,15,15,17,15,15,15,0,8,15,22,0,0,24,24,7,21,8,8,0,15,10,15,17,0,0,22,15,21,22,15,15,15,15,8,8,15,15,14,14,10,17,16,15,17,15,15,0,14,15,17,15,15,10,15,0,8,17,15,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,8,14,14,15,7,10,14,16,15,14,7,14,16,15,14,14,16,14,0,14,15,16,14,7,15,0,7,14,15,0,0,16,16,7,14,8,8,0,14,10,14,16,0,0,14,14,14,15,8,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,0,15,15,15,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,15,15,16,8,9,15,15,15,14,10,17,16,16,17,15,15,17,15,15,0,15,15,10,16,0,8,17,16,0,0,15,15,7,14,9,11,0,15,9,15,15,0,0,15,15,16,16,9,15,16,15,8,10,15,18,14,14,8,16,16,16,15,16,17,15,16,15,15,0,16,8,15,0,8,15,15,0,0,17,17,7,14,8,8,0,15,10,15,17,0,0,15,16,14,15,8,16,17,15,8,8,16,17,14,14,8,16,14,17,15,16,15,15,14,15,15,16,0,8,15,0,8,15,15,0,0,16,15,7,14,8,9,0,16,8,15,15,0,1,16,16,14,16,8,15,8,8,8,8,15,8,14,7,10,17,9,8,10,8,15,10,7,8,10,8,8,0,8,0,8,10,15,0,0,15,15,7,14,8,10,0,8,1,8,8,0,0,15,8,16,15,15,15,15,16,8,9,15,15,15,14,8,15,14,16,15,15,15,15,15,15,16,15,15,8,0,0,8,15,16,0,0,15,15,7,14,9,9,0,15,9,15,15,0,0,15,15,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,0,0,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,15,15,16,8,8,15,15,14,14,10,17,16,16,17,15,15,17,14,15,17,15,15,10,15,0,8,0,15,0,0,15,15,7,14,8,11,0,15,8,15,15,0,0,15,15,16,16,8,22,15,16,8,9,22,15,22,14,8,22,14,16,15,15,22,15,15,15,16,15,15,15,16,0,8,15,0,0,0,22,22,7,21,9,9,0,15,9,15,15,0,0,22,15,21,23,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,16,15,8,10,23,18,21,14,8,22,16,16,15,15,24,15,16,15,15,17,16,15,15,0,8,15,22,0,0,0,24,7,21,8,9,0,16,10,15,17,0,1,23,15,21,23,15,22,15,15,8,10,22,17,21,14,8,22,16,15,15,15,24,15,16,15,15,17,15,15,15,0,8,15,22,0,0,24,0,7,21,8,8,0,15,10,15,17,0,0,22,15,21,22,15,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,0,7,14,21,0,0,21,21,7,0,7,7,0,14,7,14,14,0,0,21,14,21,21,14,8,8,9,8,9,8,8,8,7,8,8,7,9,8,8,8,8,8,8,9,8,8,8,9,0,8,8,9,0,0,8,8,7,7,0,9,0,8,2,8,8,0,0,8,8,7,9,9,9,9,10,8,9,9,9,8,7,10,10,9,11,10,8,8,10,8,8,11,8,9,10,9,0,8,11,9,0,0,9,8,7,7,9,0,0,9,2,8,8,0,1,9,8,9,11,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,15,8,8,16,16,14,14,8,15,14,16,15,15,15,15,14,15,15,15,16,8,15,0,8,15,15,0,0,16,15,7,14,8,9,0,0,8,15,15,0,1,16,15,14,16,8,8,8,9,1,4,8,10,8,7,1,8,9,9,8,8,10,8,10,8,9,10,8,1,9,0,1,8,9,0,0,10,10,0,7,2,2,0,8,0,8,10,0,0,8,8,7,9,2,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,15,15,15,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,0,15,0,0,15,15,14,15,8,15,15,15,8,10,15,17,14,14,8,15,16,15,15,15,17,15,16,15,15,17,15,8,15,0,8,15,15,0,0,17,17,7,14,8,8,0,15,10,15,0,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,23,16,15,8,8,23,16,21,14,8,22,14,16,15,15,22,15,14,15,15,15,16,15,15,0,8,15,22,0,0,23,22,7,21,8,9,0,16,8,15,15,0,1,0,15,21,23,15,15,16,15,8,8,15,16,14,14,8,16,14,16,15,16,15,15,14,15,15,16,16,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,0,14,15,8,21,14,14,7,7,21,14,21,14,9,23,16,16,16,14,21,16,14,14,16,14,14,16,14,0,7,16,21,0,0,21,21,7,21,7,9,0,14,7,14,14,0,0,21,14,0,21,14,23,16,17,8,9,23,16,22,14,8,22,14,18,15,15,22,15,15,15,16,15,16,15,16,0,8,16,23,0,0,23,22,7,21,9,11,0,16,9,15,15,0,1,23,15,21,0,16,15,8,9,8,9,15,8,15,7,8,15,7,9,8,8,15,8,8,8,9,8,8,15,9,0,8,8,16,0,0,15,15,7,14,9,9,0,8,2,8,8,0,0,15,8,14,16,0,0,10,10,8,10,10,10,9,9,8,10,7,10,10,12,10,8,9,10,10,10,10,8,10,8,0,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,12,7,12,12,10,0,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,10,10,0,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,8,8,8,0,8,8,8,7,7,15,8,7,8,8,8,8,8,7,8,8,8,8,8,15,8,0,8,8,0,0,8,8,14,7,8,15,0,8,1,8,8,0,7,8,8,7,8,15,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,11,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,10,10,10,8,10,0,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,10,10,10,8,10,10,0,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,9,7,9,9,9,0,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,0,7,9,0,0,9,9,9,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,9,9,16,7,16,9,9,9,0,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,0,14,9,0,0,9,9,16,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,8,8,15,15,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,8,15,8,0,15,8,0,0,8,8,22,7,15,23,0,15,1,15,8,0,7,8,15,7,8,15,10,8,8,8,8,8,8,7,7,8,0,7,8,10,10,8,8,7,8,10,8,8,8,8,8,0,8,8,0,0,8,8,7,9,8,8,0,8,1,8,8,0,2,8,10,7,10,10,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,10,10,17,8,17,10,10,9,16,15,8,7,0,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,10,8,15,8,15,8,8,7,14,15,10,7,15,0,17,8,15,14,15,10,15,8,8,8,8,0,15,8,0,0,8,8,14,9,15,15,0,15,1,15,8,0,2,8,17,7,10,10,12,10,17,8,17,10,10,9,16,15,10,7,17,17,0,10,15,16,17,10,17,10,8,10,8,0,15,10,0,0,10,10,16,11,17,15,0,17,3,17,10,0,4,10,19,7,12,12,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,0,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,0,14,15,8,15,8,8,8,8,0,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,0,16,7,16,9,7,9,7,0,14,9,0,0,9,9,16,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,0,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,10,8,8,8,8,8,8,7,7,8,10,7,8,10,10,8,8,7,8,0,8,8,8,8,8,0,8,8,0,0,8,8,7,9,8,8,0,8,1,8,8,0,2,8,10,7,10,10,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,0,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,17,7,10,10,10,10,10,8,11,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,0,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,10,15,10,10,10,9,9,15,8,7,10,8,10,10,8,9,10,8,10,10,8,0,8,0,8,10,0,0,10,10,16,9,10,15,0,10,3,10,10,0,9,10,10,7,10,17,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,0,0,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,0,0,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,0,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,0,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,0,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,16,14,16,9,9,9,16,22,7,7,16,14,16,9,14,16,16,7,16,9,7,16,7,0,14,9,1,1,9,9,0,10,16,22,1,16,2,17,9,1,9,9,17,8,9,16,11,9,9,7,9,9,9,9,9,7,9,7,9,9,11,9,7,9,9,9,9,9,7,9,7,0,7,9,1,1,9,9,10,0,9,7,1,9,2,10,9,1,4,9,12,8,11,11,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,17,7,10,10,8,8,15,15,15,8,8,7,14,23,8,7,15,15,15,8,15,14,15,8,15,8,8,15,8,0,15,8,0,0,8,8,22,7,15,0,0,15,1,15,8,0,7,8,15,7,8,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,0,3,17,10,0,2,10,17,7,10,10,3,3,3,1,3,3,3,2,2,1,1,0,3,1,3,3,1,2,3,1,3,3,1,3,1,0,1,3,0,0,3,3,2,2,3,1,0,3,0,3,3,0,2,3,3,0,3,3,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,1,1,10,10,17,10,17,15,1,17,3,0,10,1,2,10,18,8,10,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,0,0,2,10,10,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,4,2,2,7,2,2,2,2,2,7,2,0,2,2,4,2,0,2,2,2,2,2,0,9,0,0,0,2,0,0,2,2,9,4,2,7,0,2,2,2,2,0,0,2,4,0,4,11,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,0,10,7,10,10,12,10,17,8,17,10,10,9,16,15,10,7,17,17,19,10,15,16,17,10,17,10,8,10,8,0,15,10,1,1,10,10,17,12,17,15,1,17,3,18,10,1,4,10,0,8,12,12,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,1,1,7,7,8,8,7,7,1,7,0,8,7,1,0,7,8,0,7,7,12,10,10,8,10,10,10,9,9,8,10,7,10,10,12,10,8,9,10,10,10,10,8,10,8,0,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,12,7,0,12,12,10,10,15,10,10,10,9,9,15,10,7,10,10,12,10,8,9,10,10,10,10,8,17,8,0,8,10,0,0,10,10,16,11,10,15,0,10,3,10,10,0,11,10,12,7,12,0,0,15,15,8,8,15,23,14,14,8,15,14,23,15,23,22,23,14,15,22,23,23,16,15,15,8,0,15,0,0,15,15,7,14,8,8,0,23,8,15,15,0,0,15,15,14,22,8,15,0,15,8,8,15,15,14,14,10,15,14,15,15,15,15,15,14,15,15,15,15,10,17,15,8,0,17,0,0,15,15,7,14,10,10,0,15,8,17,15,0,0,17,15,16,15,8,15,15,0,9,15,15,15,15,22,16,16,14,23,23,22,15,23,22,22,15,22,15,8,15,16,15,0,16,0,0,15,15,14,14,15,16,0,22,8,22,15,0,0,15,22,14,16,9,8,8,9,0,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,0,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,9,8,8,15,8,0,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,0,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,15,15,15,8,8,0,16,14,14,9,15,15,15,16,16,15,16,14,15,15,16,16,9,15,15,8,0,15,0,0,16,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,23,15,15,8,8,16,0,14,14,9,15,15,24,16,24,23,25,14,15,23,25,25,18,15,15,8,0,15,0,0,16,16,7,14,8,8,0,24,8,15,15,0,0,16,15,14,22,8,14,14,15,8,7,14,14,0,15,8,15,14,14,15,14,14,15,15,14,14,14,14,7,14,14,7,0,15,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,8,14,14,22,8,14,14,14,15,0,15,15,14,21,22,21,14,22,22,21,14,21,14,7,14,14,14,0,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,8,10,16,9,15,9,9,8,15,0,11,10,15,19,16,8,19,15,15,10,16,9,13,10,10,15,0,11,0,0,9,9,14,7,17,19,0,15,1,17,8,0,0,10,15,11,8,9,15,15,16,9,8,15,15,15,15,11,0,16,15,18,15,15,18,15,15,17,15,15,10,15,17,8,0,16,0,0,15,15,7,14,8,10,0,15,8,15,15,0,0,15,15,16,15,9,14,14,14,7,7,15,15,14,14,10,16,0,14,17,15,14,17,14,14,16,15,15,10,14,16,7,0,14,0,0,15,15,7,14,7,9,0,14,7,14,14,0,0,14,14,16,14,7,23,15,23,8,15,15,24,14,21,15,15,14,0,22,30,23,31,21,22,23,31,24,17,15,16,15,0,15,0,0,15,15,14,14,15,16,0,31,8,22,15,0,0,16,22,14,23,8,15,15,23,9,15,16,16,15,22,19,18,17,22,0,23,15,26,22,22,17,23,16,11,15,17,15,0,16,0,0,16,16,14,14,15,17,0,22,8,22,15,0,0,15,22,16,15,9,23,15,22,8,15,16,24,14,21,16,15,15,30,23,0,22,31,21,22,22,31,24,17,15,15,15,0,15,0,0,16,16,14,14,15,15,0,30,8,22,15,0,0,15,22,14,22,8,22,15,15,8,8,15,23,14,14,8,15,14,23,15,22,0,23,14,15,23,23,23,16,15,15,8,0,15,0,0,15,15,7,14,8,8,0,23,8,15,15,0,0,16,15,14,22,8,23,15,23,9,15,16,25,15,22,19,18,17,31,26,31,23,0,22,22,25,32,25,20,15,17,15,0,16,0,0,16,16,14,14,15,17,0,31,8,22,15,0,0,16,22,16,22,9,14,14,22,8,14,14,14,15,22,15,15,14,21,22,21,14,22,0,21,14,21,14,7,14,14,14,0,15,0,0,14,14,14,14,14,14,0,21,7,21,14,0,0,14,21,14,14,8,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,22,21,0,15,22,15,8,15,15,15,0,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,22,14,15,8,22,15,15,8,8,15,23,14,14,10,17,16,23,17,22,23,25,14,15,0,23,23,18,15,17,8,0,15,0,0,15,15,7,14,8,10,0,23,8,15,15,0,0,16,15,16,22,8,23,15,22,8,15,16,25,14,21,16,15,15,31,23,31,23,32,21,22,23,0,25,18,15,15,15,0,15,0,0,16,16,14,14,15,15,0,31,8,22,15,0,0,16,22,14,22,8,23,15,15,8,8,16,25,14,14,9,15,15,24,16,24,23,25,14,15,23,25,0,18,15,15,8,0,15,0,0,16,16,7,14,8,8,0,24,8,15,15,0,0,16,15,14,22,8,16,10,8,8,8,9,18,7,7,13,10,10,17,11,17,16,20,7,8,18,18,18,0,10,10,8,0,10,0,0,9,9,7,7,10,12,0,17,1,10,8,0,0,11,8,11,15,8,15,17,15,8,8,15,15,14,14,10,15,14,15,15,15,15,15,14,15,15,15,15,10,0,15,8,0,17,0,0,15,15,7,14,10,11,0,15,8,17,15,0,0,17,15,16,15,8,15,15,16,8,8,15,15,14,14,10,17,16,16,17,15,15,17,14,15,17,15,15,10,15,0,8,0,15,0,0,15,15,7,14,8,11,0,15,8,15,15,0,0,15,15,16,16,8,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,0,0,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,15,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,17,16,9,8,15,15,15,15,11,16,14,15,16,15,15,16,15,15,15,15,15,10,17,15,8,0,0,0,0,15,15,7,14,10,10,0,15,8,17,15,0,0,17,15,16,15,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,8,8,16,16,14,14,9,15,15,15,16,16,15,16,14,15,15,16,16,9,15,15,8,0,15,0,0,0,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,15,15,15,8,8,16,16,14,14,9,15,15,15,16,16,15,16,14,15,15,16,16,9,15,15,8,0,15,0,0,16,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,7,7,14,7,14,7,7,7,14,14,7,7,14,14,14,7,14,14,14,7,14,7,7,7,7,14,0,7,0,0,7,7,0,7,14,14,0,14,0,14,7,0,0,7,14,7,7,7,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,0,14,0,0,14,14,7,0,7,7,0,14,7,14,14,0,0,14,14,14,14,7,8,10,15,8,15,8,8,7,14,17,8,7,15,15,15,8,15,14,15,8,15,8,10,10,8,15,0,10,0,0,8,8,14,7,0,17,0,15,1,17,8,0,0,10,15,9,8,8,8,10,16,8,15,8,8,7,14,19,10,9,16,17,15,8,17,14,15,10,15,8,12,11,11,15,0,10,0,0,8,8,14,7,17,0,0,15,1,17,8,0,0,10,15,11,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,22,8,15,15,24,14,21,15,15,14,31,22,30,23,31,21,22,23,31,24,17,15,15,15,0,15,0,0,15,15,14,14,15,15,0,0,8,22,15,0,0,16,22,14,22,8,8,8,8,1,1,8,8,7,7,1,8,7,8,8,8,8,8,7,8,8,8,8,1,8,8,1,0,8,0,0,8,8,0,7,1,1,0,8,0,8,8,0,0,8,8,7,8,1,15,17,22,8,15,15,15,14,21,17,15,14,22,22,22,15,22,21,22,15,22,15,10,17,15,15,0,17,0,0,15,15,14,14,17,17,0,22,8,0,15,0,0,17,22,16,15,8,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,0,15,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,17,15,8,8,15,16,14,14,10,15,14,16,15,15,16,16,14,15,16,16,16,11,17,15,8,0,17,0,0,15,15,7,14,10,10,0,16,8,17,15,0,0,0,15,16,15,8,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,22,21,22,15,22,15,8,15,15,15,0,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,0,14,15,8,14,16,14,7,7,14,14,14,14,11,16,16,14,16,14,14,16,14,14,16,14,14,11,16,16,7,0,16,0,0,14,14,7,14,9,11,0,14,7,16,14,0,0,16,14,0,14,7,22,15,16,8,8,15,22,14,14,8,15,14,23,15,22,22,22,14,15,22,22,22,15,15,16,8,0,15,0,0,15,15,7,14,8,9,0,22,8,15,15,0,0,15,15,14,0,8,8,8,9,9,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,0,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,0,0,18,17,8,11,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,16,17,22,10,15,0,0,0,24,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,18,0,17,8,11,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,11,19,15,10,17,0,0,0,17,17,9,16,12,10,0,17,10,19,17,0,2,19,17,16,17,10,17,17,0,9,11,17,18,18,17,9,16,14,18,16,18,18,17,18,17,17,17,17,8,19,16,10,16,0,0,0,17,17,9,16,11,9,0,17,11,17,18,0,2,17,17,14,18,12,8,8,9,0,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,9,0,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,9,11,11,11,8,0,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,9,11,9,10,8,0,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,11,24,17,17,8,10,0,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,0,0,0,24,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,17,17,18,8,10,17,0,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,18,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,23,16,18,8,10,23,16,0,17,8,22,14,17,15,16,23,15,18,16,15,16,16,14,17,22,9,15,0,0,0,23,23,9,23,10,8,0,16,10,16,16,0,2,23,16,21,24,18,16,16,17,8,9,16,16,17,0,8,15,14,16,15,16,16,15,17,16,14,16,16,7,16,14,9,15,0,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,10,8,10,9,9,8,8,8,8,8,0,9,7,8,9,8,8,9,8,8,8,8,8,10,10,8,8,11,0,0,0,8,8,7,7,10,10,0,8,1,10,8,0,0,10,8,9,8,9,22,15,16,9,8,22,15,22,15,9,0,14,15,16,15,22,16,15,15,15,15,15,15,15,22,8,16,0,0,0,22,22,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,16,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,0,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,14,7,17,17,18,8,11,17,17,17,16,8,15,14,0,15,17,17,15,17,17,16,17,17,8,18,16,10,15,0,0,0,17,17,9,16,11,9,0,17,11,17,17,0,2,17,17,14,18,11,15,15,16,9,8,15,15,15,15,9,16,14,15,0,15,15,16,15,15,15,15,15,8,15,15,8,16,0,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,9,17,17,18,8,10,17,18,16,16,8,15,14,17,15,0,18,16,16,17,16,17,17,8,18,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,18,0,2,17,17,14,17,10,24,17,18,8,10,24,18,23,16,8,22,14,17,15,18,0,16,16,17,16,17,17,15,18,22,10,15,0,0,0,24,24,9,23,10,8,0,17,10,17,18,0,2,24,17,21,24,17,15,15,17,9,8,15,16,15,15,9,16,14,15,16,16,16,0,15,15,16,15,15,8,16,15,8,16,0,0,0,15,15,7,14,8,8,0,15,8,15,16,0,0,15,15,14,15,9,16,16,18,8,10,16,16,18,17,8,15,14,17,15,16,16,15,0,16,15,16,16,7,17,15,9,15,0,0,0,16,16,9,16,10,8,0,16,10,16,16,0,2,16,16,14,17,11,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,15,15,17,8,9,15,16,15,14,8,15,14,16,15,16,16,16,15,15,0,15,15,8,17,16,8,15,0,0,0,15,15,7,14,9,9,0,15,9,15,16,0,0,15,15,14,16,9,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,0,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,0,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,16,11,8,8,9,15,8,14,7,10,15,7,8,8,8,15,8,7,8,8,8,8,0,10,15,8,10,0,0,0,15,15,7,14,10,10,0,8,1,10,8,0,0,17,8,16,15,15,17,19,19,8,11,17,18,17,16,10,15,14,18,15,18,18,16,17,17,17,17,17,10,0,16,10,17,0,0,0,17,17,9,16,13,11,0,17,11,19,18,0,2,19,17,16,18,11,22,15,16,8,9,22,15,22,14,8,22,14,16,15,15,22,15,15,15,16,15,15,15,16,0,8,15,0,0,0,22,22,7,21,9,9,0,15,9,15,15,0,0,22,15,21,23,16,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,0,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,15,17,16,9,8,15,15,15,15,11,16,14,15,16,15,15,16,15,15,15,15,15,10,17,15,8,0,0,0,0,15,15,7,14,10,10,0,15,8,17,15,0,0,17,15,16,15,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,0,0,0,0,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,0,0,0,24,0,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,0,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,0,0,0,23,23,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,10,12,11,8,11,10,10,10,9,10,8,7,11,8,10,10,8,10,10,9,10,10,10,13,9,10,10,0,0,0,10,10,9,9,0,11,0,10,4,12,10,0,2,12,10,9,11,11,8,10,9,8,9,8,8,8,7,10,8,7,9,8,8,8,8,8,8,9,8,8,10,11,9,8,10,0,0,0,8,8,7,7,11,0,0,8,2,10,8,0,0,10,8,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,0,10,17,17,0,2,17,17,14,17,10,10,10,11,1,4,10,10,10,9,1,8,7,11,8,10,10,8,10,10,9,10,10,1,11,9,3,8,0,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,11,4,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,19,15,10,17,0,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,19,17,16,17,10,17,17,18,8,10,17,18,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,18,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,0,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,24,19,17,8,10,24,17,23,16,10,22,14,17,15,17,24,15,16,17,15,17,17,17,19,22,10,17,0,0,0,24,24,9,23,12,10,0,17,10,19,17,0,2,0,17,23,24,17,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,21,16,14,7,7,21,14,21,14,9,21,14,14,14,14,21,14,14,14,14,14,14,16,16,21,7,16,0,0,0,21,21,7,21,9,9,0,14,7,16,14,0,0,23,14,0,21,14,24,17,18,8,11,24,17,24,16,8,22,14,18,15,17,24,15,17,17,16,17,17,15,18,23,10,15,0,0,0,24,24,9,23,11,9,0,17,11,17,17,0,2,24,17,21,0,18,17,10,12,9,11,17,10,18,10,9,16,7,11,9,10,17,9,11,10,9,10,10,15,11,16,10,9,0,0,0,17,17,9,16,11,9,0,10,4,10,10,0,2,17,10,14,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,8,10,25,18,24,16,8,22,14,18,15,17,25,16,16,17,15,17,18,15,18,23,10,15,24,0,0,0,25,9,23,10,9,0,18,10,17,17,0,3,25,17,21,25,17,18,0,17,8,10,18,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,0,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,18,17,0,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,18,15,10,15,17,0,0,0,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,0,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,10,8,0,10,12,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,0,12,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,25,18,17,8,10,0,19,23,16,9,22,15,18,16,18,24,16,16,17,15,18,19,16,17,23,10,16,24,0,0,0,25,9,23,10,9,0,18,10,17,17,0,3,25,17,21,25,17,18,18,17,8,12,19,0,16,16,9,15,17,18,16,18,19,16,18,17,15,20,19,9,17,18,10,16,17,0,0,0,20,9,16,10,9,0,18,12,17,19,0,3,18,17,14,18,10,24,16,17,7,9,23,16,0,16,7,21,14,16,14,16,24,15,16,16,14,16,16,14,17,21,9,14,23,0,0,0,24,9,23,9,7,0,16,9,16,16,0,2,23,16,21,23,16,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,0,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,8,8,8,8,8,9,9,7,7,0,8,8,8,9,9,8,9,7,8,8,9,9,9,8,8,8,9,8,0,0,0,9,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,22,15,15,8,8,22,15,21,14,8,0,14,15,15,15,22,15,14,15,15,15,15,15,15,22,8,15,22,0,0,0,22,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,15,14,14,14,7,9,15,17,14,14,8,14,0,14,15,15,16,15,16,14,14,17,15,8,14,16,7,15,14,0,0,0,17,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,18,18,17,8,10,18,18,16,16,8,15,14,0,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,0,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,15,15,15,8,8,16,16,14,14,9,15,15,15,0,16,15,16,14,15,15,16,16,9,15,15,8,16,15,0,0,0,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,17,17,8,10,18,18,16,16,9,15,15,17,16,0,17,16,16,17,15,18,18,9,17,15,10,16,17,0,0,0,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,25,17,18,8,12,24,19,24,16,8,22,16,17,15,17,0,16,18,17,15,19,17,15,18,24,10,15,24,0,0,0,27,9,23,10,8,0,17,12,17,19,0,2,24,17,21,24,17,16,15,16,8,8,16,16,15,14,9,15,15,15,16,16,16,0,14,15,15,16,16,9,16,15,8,16,15,0,0,0,17,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,16,16,16,7,11,16,18,16,16,7,14,16,16,14,16,18,14,0,16,14,18,16,7,16,16,9,14,16,0,0,0,18,9,16,9,7,0,16,11,16,18,0,2,16,16,14,16,9,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,0,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,0,15,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,17,17,8,12,18,20,16,16,9,15,17,17,16,18,19,16,18,17,15,0,18,9,17,17,10,16,17,0,0,0,20,9,16,10,8,0,17,12,17,24,0,2,17,17,14,17,10,18,18,17,8,10,19,19,16,16,9,15,15,18,16,18,17,16,16,17,15,18,0,9,17,16,10,16,17,0,0,0,18,9,16,10,9,0,18,10,17,17,0,3,18,17,14,18,10,15,8,8,8,8,16,9,14,7,9,15,8,8,9,9,15,9,7,8,8,9,9,0,8,15,8,9,15,0,0,0,16,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,15,18,17,18,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,0,15,10,15,17,0,0,0,18,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,23,16,15,8,10,23,18,21,14,8,22,16,16,15,15,24,15,16,15,15,17,16,15,15,0,8,15,22,0,0,0,24,7,21,8,9,0,16,10,15,17,0,1,23,15,21,23,15,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,0,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,15,15,15,8,8,16,16,14,14,9,15,15,15,16,16,15,16,14,15,15,16,16,9,15,15,8,0,15,0,0,0,16,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,0,0,0,0,24,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,17,18,8,12,25,20,24,16,9,22,17,17,16,18,27,17,18,17,15,20,18,16,18,24,10,16,24,0,0,0,0,9,23,10,8,0,17,12,17,19,0,2,24,17,21,24,17,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,0,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,0,23,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,0,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,8,8,8,9,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,0,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,17,8,10,18,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,0,17,9,16,10,9,0,0,10,17,17,0,3,18,17,14,18,10,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,0,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,0,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,17,17,8,12,17,19,16,16,8,15,16,17,15,17,19,15,18,17,15,24,17,8,17,17,10,15,17,0,0,0,19,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,0,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,25,18,17,8,10,25,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,0,24,9,23,10,9,0,18,10,17,17,0,3,0,17,21,25,17,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,0,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,0,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,25,18,17,8,10,25,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,0,24,9,23,10,9,0,18,10,17,17,0,3,25,17,21,0,17,17,10,10,8,10,17,10,16,9,8,15,7,10,8,10,17,8,9,10,8,10,10,15,10,15,10,8,17,0,0,0,17,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,0,17,18,8,10,24,17,25,16,8,22,14,17,15,18,25,16,17,18,15,17,17,15,18,22,10,15,24,0,0,25,0,9,23,10,8,0,18,10,18,17,0,2,24,17,21,24,17,17,0,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,18,17,0,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,18,15,10,15,17,0,0,18,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,0,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,10,10,10,8,0,10,12,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,12,0,9,9,10,8,0,10,5,10,12,0,2,10,10,7,10,10,24,17,17,8,10,0,18,23,16,9,22,15,17,16,18,24,16,16,17,15,18,18,16,17,22,10,16,24,0,0,25,0,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,17,17,17,8,12,18,0,16,16,9,15,17,17,16,18,19,16,18,17,15,20,18,9,17,17,10,16,17,0,0,20,0,9,16,10,8,0,17,12,17,19,0,2,17,17,14,17,10,25,16,17,7,9,23,16,0,16,7,21,14,16,14,17,24,15,17,17,14,16,16,14,17,21,9,14,23,0,0,24,0,9,23,9,7,0,17,9,17,16,0,2,23,16,21,23,16,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,0,9,16,9,7,0,16,9,16,16,0,2,16,16,14,16,9,8,8,8,8,8,9,9,7,7,0,8,8,8,9,9,8,9,7,8,8,9,9,9,8,8,8,9,8,0,0,9,0,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,8,22,15,15,8,8,22,15,21,14,8,0,14,15,15,15,22,15,14,15,15,15,15,15,15,22,8,15,22,0,0,22,0,7,21,8,8,0,15,8,15,15,0,0,22,15,21,22,15,14,14,14,7,9,15,17,14,14,8,14,0,14,15,15,16,15,16,14,14,17,15,8,14,16,7,15,14,0,0,17,0,7,14,7,7,0,14,9,14,16,0,0,14,14,14,14,7,17,17,17,8,10,17,17,16,16,8,15,14,0,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,15,15,15,8,8,16,16,14,14,9,15,15,15,0,16,15,16,14,15,15,16,16,9,15,15,8,16,15,0,0,16,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,18,17,17,8,10,18,18,17,16,9,15,15,17,16,0,17,16,17,18,15,18,18,9,17,15,10,16,17,0,0,18,0,9,16,10,8,0,18,10,18,17,0,2,17,17,14,17,10,25,17,18,8,12,24,19,24,16,8,22,16,17,15,17,0,16,18,17,15,19,17,15,18,24,10,15,24,0,0,27,0,9,23,10,8,0,17,12,17,19,0,2,24,17,21,24,17,16,15,16,8,8,16,16,15,14,9,15,15,15,16,16,16,0,14,15,15,16,16,9,16,15,8,16,15,0,0,17,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,16,16,7,11,16,18,17,16,7,14,16,16,14,17,18,14,0,17,14,18,16,7,16,16,9,14,16,0,0,18,0,9,16,9,7,0,17,11,17,18,0,2,16,16,14,16,9,18,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,0,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,18,10,18,17,0,2,17,17,14,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,15,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,17,17,17,8,12,18,20,16,16,9,15,17,17,16,18,19,16,18,17,15,0,18,9,17,17,10,16,17,0,0,20,0,9,16,10,8,0,17,12,17,19,0,2,17,17,14,17,10,17,17,17,8,10,18,18,16,16,9,15,15,17,16,18,17,16,16,17,15,18,0,9,17,15,10,16,17,0,0,18,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,15,8,8,8,8,16,9,14,7,9,15,8,8,9,9,15,9,7,8,8,9,9,0,8,15,8,9,15,0,0,16,0,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,15,18,17,18,8,10,17,17,17,16,8,15,14,17,15,17,18,16,16,17,15,17,17,8,0,15,10,15,17,0,0,18,0,9,16,10,8,0,17,10,17,17,0,2,17,17,14,17,10,22,15,15,8,10,22,17,21,14,8,22,16,15,15,15,24,15,16,15,15,17,15,15,15,0,8,15,22,0,0,24,0,7,21,8,8,0,15,10,15,17,0,0,22,15,21,22,15,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,0,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,10,15,15,15,8,8,16,16,14,14,9,15,15,15,16,16,15,16,14,15,15,16,16,9,15,15,8,0,15,0,0,16,0,7,14,8,8,0,15,8,15,15,0,0,15,15,14,15,8,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,0,0,0,24,0,9,23,10,8,0,17,10,17,17,0,2,24,17,21,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,17,18,8,12,25,20,24,16,9,22,17,17,16,18,27,17,18,17,15,20,18,16,18,24,10,16,24,0,0,0,0,9,23,10,8,0,17,12,17,19,0,2,24,17,21,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,0,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,0,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,0,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,0,7,7,8,0,0,8,1,8,8,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,18,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,0,10,18,17,0,2,17,17,14,17,10,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,0,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,18,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,18,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,18,10,0,17,0,2,17,17,14,17,10,17,17,17,8,12,17,19,16,16,8,15,16,17,15,17,19,15,18,17,15,19,17,8,17,17,10,15,17,0,0,19,0,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,0,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,24,0,0,24,0,9,23,10,8,0,17,10,17,17,0,2,0,17,21,24,17,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,0,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,24,0,0,24,0,9,23,10,8,0,17,10,17,17,0,2,24,17,21,0,17,17,10,10,8,10,17,10,16,9,8,15,7,10,8,10,17,8,9,10,8,10,10,15,10,15,10,8,17,0,0,17,0,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,0,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,9,0,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,9,9,0,7,16,9,9,11,18,14,7,7,18,14,16,9,14,16,18,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,7,7,7,0,7,7,7,7,7,14,7,7,7,7,7,7,7,7,7,7,7,7,7,14,7,14,7,7,0,0,7,7,0,7,7,14,0,7,0,7,7,0,7,7,7,7,7,14,9,9,16,7,0,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,9,9,9,7,9,0,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,9,9,9,7,9,9,0,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,9,9,11,7,9,9,9,0,12,7,7,8,11,7,9,9,7,10,11,7,9,9,7,9,7,9,7,9,0,0,9,9,0,10,9,7,0,9,2,9,9,0,3,9,9,8,9,9,9,9,18,7,16,9,9,12,0,14,7,8,18,14,16,9,14,17,18,7,16,9,7,9,7,16,14,9,0,0,9,9,0,10,16,14,0,16,2,16,9,0,3,9,16,8,9,9,7,7,14,14,14,7,7,7,14,0,7,7,14,14,14,7,14,14,14,7,14,7,7,14,7,22,14,7,0,0,7,7,0,7,14,22,0,14,0,14,7,0,7,7,14,7,7,14,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,7,7,7,7,7,7,7,8,8,7,7,0,7,7,7,7,7,8,7,7,7,7,7,7,7,7,7,7,0,0,7,7,0,8,7,7,0,7,0,7,7,0,1,7,7,8,7,7,9,9,18,7,16,9,9,11,18,14,7,7,0,14,16,9,14,16,18,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,7,7,14,7,14,7,7,7,14,14,7,7,14,0,14,7,14,14,14,7,14,7,7,7,7,14,14,7,0,0,7,7,0,7,14,14,0,14,0,14,7,0,0,7,14,7,7,7,9,9,16,7,16,9,9,9,16,14,7,7,16,14,0,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,0,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,7,7,14,7,14,7,7,7,14,14,7,7,14,14,14,7,0,14,14,7,14,7,7,7,7,14,14,7,0,0,7,7,0,7,14,14,0,14,0,14,7,0,0,7,14,7,7,7,9,9,16,7,16,9,9,10,17,14,7,8,16,14,16,9,14,0,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,10,16,14,0,16,2,16,9,0,3,9,16,8,9,9,9,9,18,7,16,9,9,11,18,14,7,7,18,14,16,9,14,16,0,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,0,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,16,2,16,9,0,2,9,16,7,9,9,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,0,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,9,9,9,14,9,9,9,9,9,14,7,7,9,7,9,9,7,9,9,7,9,9,7,0,7,16,7,9,0,0,9,9,0,9,9,14,0,9,2,9,9,0,9,9,9,7,9,16,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,0,0,7,7,0,7,7,7,0,7,0,7,7,0,0,7,7,7,7,7,9,9,16,14,16,9,9,9,16,22,7,7,16,14,16,9,14,16,16,7,16,9,7,16,7,0,14,9,1,1,9,9,0,10,16,22,1,16,2,17,9,1,9,9,17,8,9,16,7,7,14,7,14,7,7,7,14,14,7,7,14,14,14,7,14,14,14,7,14,7,7,7,7,14,0,7,0,0,7,7,0,7,14,14,0,14,0,14,7,0,0,7,14,7,7,7,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,0,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,0,0,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,0,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,0,0,9,9,7,0,9,2,9,9,0,2,9,9,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,7,9,9,9,10,10,7,7,8,9,7,9,9,7,10,9,7,9,9,7,9,7,10,7,9,1,1,9,9,0,0,9,7,1,9,2,10,9,1,3,9,10,9,9,9,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,0,14,0,16,2,16,9,0,2,9,16,7,9,9,7,7,14,14,14,7,7,7,14,22,7,7,14,14,14,7,14,14,14,7,14,7,7,14,7,22,14,7,0,0,7,7,0,7,14,0,0,14,0,14,7,0,7,7,14,7,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,0,2,16,9,0,2,9,16,7,9,9,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,0,2,2,0,0,2,0,2,2,0,2,2,2,0,2,2,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,17,14,9,1,1,9,9,0,10,16,14,1,16,2,0,9,1,2,9,17,8,9,9,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,0,0,2,9,9,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,2,2,2,7,2,2,2,3,3,7,0,1,2,0,2,2,0,3,2,0,2,2,0,9,0,9,0,2,0,0,2,2,0,3,2,7,0,2,2,2,2,0,0,2,2,1,2,9,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,0,9,7,9,9,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,17,14,9,1,1,9,9,0,10,16,14,1,16,2,17,9,1,2,9,0,8,9,9,7,7,7,7,7,7,7,8,8,7,7,8,7,7,7,7,7,8,7,7,7,7,7,7,7,8,7,7,1,1,7,7,0,9,7,7,1,7,0,8,7,1,1,7,8,0,7,7,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,0,9,9,9,9,14,9,9,9,9,9,14,7,7,9,7,9,9,7,9,9,7,9,9,7,16,7,16,7,9,0,0,9,9,0,9,9,14,0,9,2,9,9,0,9,9,9,7,9,0,0,16,16,7,9,23,16,23,16,7,23,14,16,16,18,23,14,16,16,16,16,16,14,16,21,11,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,4,23,18,21,25,18,16,0,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,0,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,7,7,7,0,14,14,7,14,14,14,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,0,14,7,0,7,7,7,7,0,0,7,7,14,7,7,9,9,9,14,0,16,9,16,16,14,14,7,9,14,9,9,7,9,16,7,9,9,7,16,7,9,7,9,0,0,9,9,9,0,16,7,0,9,9,9,9,0,2,9,9,14,9,9,23,16,16,14,16,0,16,30,23,14,28,14,16,21,16,23,14,16,23,14,16,16,14,23,21,9,14,23,0,0,23,23,9,0,16,7,0,16,16,16,16,0,2,23,16,28,23,16,16,16,16,7,9,16,0,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,23,16,16,14,16,30,16,0,24,14,28,15,16,21,16,23,14,17,23,14,16,16,14,23,21,9,14,23,0,0,23,23,10,0,16,7,0,16,16,16,16,0,3,23,16,29,23,16,16,16,16,14,16,23,16,24,0,14,21,15,16,21,16,16,14,17,23,14,16,16,7,23,14,9,14,16,0,0,16,16,10,0,16,7,0,16,16,16,16,0,3,16,16,23,16,9,7,7,7,14,14,14,7,14,14,0,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,0,14,7,0,7,7,7,7,0,0,7,7,14,7,7,23,14,14,14,14,28,14,28,21,14,0,14,14,23,16,21,14,14,21,16,14,14,14,21,21,9,14,21,0,0,21,21,7,0,14,7,0,14,14,14,14,0,2,21,16,28,23,16,14,14,14,7,7,14,14,15,15,7,14,0,14,14,14,14,14,15,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,0,7,7,0,14,7,14,14,0,1,14,14,15,14,7,16,16,16,7,9,16,16,16,16,7,14,14,0,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,14,14,14,14,21,14,21,21,14,23,14,14,0,16,14,14,14,21,16,14,14,7,21,14,9,14,14,0,0,14,14,7,0,14,7,0,14,14,14,14,0,2,14,16,21,16,9,18,16,16,7,9,16,16,16,16,7,16,14,16,16,0,16,14,16,16,16,16,16,7,16,14,11,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,4,16,18,14,18,11,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,0,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,0,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,0,7,7,0,14,7,14,14,0,0,14,14,14,14,7,16,16,16,7,9,16,16,17,17,7,14,15,16,14,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,10,0,9,7,0,16,9,16,16,0,3,16,16,16,16,9,16,16,16,14,16,23,16,23,23,14,21,14,16,21,16,16,14,16,0,14,16,16,7,23,14,9,14,16,0,0,16,16,9,0,16,7,0,16,16,16,16,0,2,16,16,21,16,9,16,14,14,7,7,14,14,14,14,7,16,14,14,16,16,14,14,14,14,0,14,14,7,14,14,9,14,14,0,0,14,14,7,0,7,7,0,14,7,14,14,0,2,14,16,14,16,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,0,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,0,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,16,0,2,16,16,14,16,9,14,7,7,7,7,14,7,14,7,7,14,7,7,7,7,14,7,7,7,7,7,7,0,7,14,7,7,14,0,0,14,14,7,0,7,7,0,7,0,7,7,0,0,14,7,14,14,14,16,16,16,14,16,23,16,23,23,14,21,14,16,21,16,16,14,16,23,14,16,16,7,0,14,9,14,16,0,0,16,16,9,0,16,7,0,16,16,16,16,0,2,16,16,21,16,9,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,0,7,14,21,0,0,21,21,7,0,7,7,0,14,7,14,14,0,0,21,14,21,21,14,11,9,9,7,9,9,9,9,9,7,9,7,9,9,11,9,7,9,9,9,9,9,7,9,7,0,7,9,1,1,9,9,10,0,9,7,1,9,2,10,9,1,4,9,12,8,11,11,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,0,14,0,0,14,14,7,0,7,7,0,14,7,14,14,0,0,14,14,14,14,7,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,0,0,0,23,23,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,0,23,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,0,9,0,9,7,0,16,9,16,16,0,2,23,16,21,23,16,9,9,9,7,9,9,9,10,10,7,7,8,9,7,9,9,7,10,9,7,9,9,7,9,7,10,7,9,1,1,9,9,0,0,9,7,1,9,2,10,9,1,3,9,10,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,14,16,16,9,16,16,14,14,7,9,14,9,9,7,9,16,7,9,9,7,16,7,9,7,9,0,0,9,9,9,0,0,7,0,9,9,9,9,0,2,9,9,14,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,0,7,0,0,7,0,7,7,0,0,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,0,0,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,0,9,16,16,0,2,16,16,14,16,9,9,9,9,7,9,16,9,16,16,7,14,7,9,14,9,9,7,9,16,7,9,9,0,16,7,2,7,9,0,0,9,9,2,0,9,0,0,9,0,9,9,0,2,9,9,14,9,2,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,10,14,16,1,1,16,16,10,0,9,7,1,16,9,0,16,1,2,16,17,15,16,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,0,0,2,16,16,14,16,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,4,2,2,0,2,2,2,3,3,0,2,1,2,2,4,2,0,3,2,2,2,2,0,2,0,4,0,2,0,0,2,2,3,0,2,0,0,2,2,2,2,0,0,2,4,1,4,4,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,2,0,16,21,23,16,18,16,16,7,9,16,16,16,16,7,16,14,16,16,18,16,14,16,16,16,16,16,7,16,14,12,14,16,1,1,16,16,10,0,9,7,1,16,9,17,16,1,4,16,0,15,18,11,21,14,14,14,14,28,14,29,23,14,28,15,14,21,14,21,14,16,21,14,14,14,14,21,21,8,14,21,1,1,21,21,9,0,14,7,1,14,14,15,14,1,1,21,15,0,21,14,25,16,16,7,9,23,16,23,16,7,23,14,16,16,18,23,14,16,16,16,16,16,14,16,21,11,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,4,23,18,21,0,18,18,9,9,7,9,16,9,16,9,7,16,7,9,9,11,16,7,9,9,9,9,9,14,9,14,11,7,16,0,0,16,16,9,0,9,7,0,9,2,9,9,0,4,16,11,14,18,0,0,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,10,0,10,8,10,10,10,9,9,10,8,7,10,8,10,10,8,9,10,8,10,10,10,12,8,10,10,12,0,0,10,10,9,9,0,10,0,10,3,12,10,0,2,12,10,9,10,10,10,10,0,8,18,10,10,10,16,15,8,7,18,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,0,16,0,17,4,17,10,0,2,10,17,7,11,11,8,8,8,0,15,15,8,14,14,15,15,7,8,15,8,8,8,7,15,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,0,8,0,8,8,8,8,0,0,8,8,14,8,8,10,10,18,15,0,17,10,17,23,22,15,7,18,22,17,10,15,17,24,9,17,10,8,18,9,17,15,11,0,0,10,10,16,16,0,16,0,17,11,17,10,0,2,10,17,14,11,11,10,10,10,15,17,0,10,16,16,15,15,7,10,15,10,10,8,9,17,8,10,10,8,17,8,10,8,10,0,0,10,10,9,16,0,8,0,10,10,10,10,0,2,10,10,14,10,10,10,10,10,8,10,10,0,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,10,14,17,16,9,0,16,14,14,7,10,14,9,9,7,10,16,8,9,9,7,17,8,9,7,10,0,0,9,9,9,16,0,8,0,9,10,9,9,0,2,9,9,14,10,10,9,9,16,14,23,16,9,16,0,21,14,7,16,21,16,9,14,16,23,7,16,9,7,16,7,16,14,9,0,0,9,9,16,16,0,14,0,16,9,16,9,0,2,9,16,14,9,9,8,10,15,15,22,15,8,14,21,0,15,7,15,22,15,8,15,14,22,8,15,8,10,17,8,15,17,10,0,0,8,8,14,14,0,17,0,15,8,17,8,0,0,10,15,16,8,8,8,8,8,15,15,15,8,14,14,15,0,7,8,15,8,8,8,7,15,8,8,8,8,15,8,8,8,8,0,0,8,8,7,14,0,8,0,8,8,8,8,0,0,8,8,14,8,8,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,0,7,0,7,0,7,7,0,0,7,7,7,7,7,10,10,18,8,18,10,10,10,16,15,8,7,0,15,17,10,15,17,17,9,17,10,8,11,9,17,15,11,0,0,10,10,16,9,0,16,0,17,4,17,10,0,2,10,17,7,11,11,8,8,15,15,22,15,8,14,21,22,15,7,15,0,15,8,15,14,22,8,15,8,8,15,8,15,15,8,0,0,8,8,14,14,0,15,0,15,8,15,8,0,0,8,15,14,8,8,10,10,17,8,17,10,10,9,16,15,8,7,17,15,0,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,17,7,10,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,0,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,0,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,0,15,0,15,1,15,8,0,0,8,15,7,8,8,9,9,17,7,17,9,9,10,16,14,7,7,17,14,16,9,14,0,16,8,16,9,7,10,8,16,14,10,0,0,9,9,16,9,0,15,0,16,3,16,9,0,2,9,16,7,10,10,10,10,17,15,24,17,10,16,23,22,15,7,17,22,17,10,15,16,0,8,17,10,8,17,8,17,15,10,0,0,10,10,16,16,0,15,0,17,10,17,10,0,2,10,17,14,10,10,8,8,9,8,9,8,8,8,7,8,8,7,9,8,8,8,8,8,8,0,8,8,8,9,9,8,8,9,0,0,8,8,7,7,0,9,0,8,2,8,8,0,0,8,8,7,9,9,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,0,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,17,7,10,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,8,10,8,8,8,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,10,8,8,10,10,0,0,8,8,7,7,0,10,0,8,1,10,8,0,0,10,8,9,8,8,10,12,11,15,18,17,10,17,16,17,15,7,11,15,10,10,8,10,17,9,10,10,10,0,9,10,10,13,0,0,10,10,9,16,0,11,0,10,11,12,10,0,2,12,10,16,11,11,8,8,9,8,9,8,8,8,7,8,8,7,9,8,8,8,8,8,8,9,8,8,8,9,0,8,8,9,0,0,8,8,7,7,0,9,0,8,2,8,8,0,0,8,8,7,9,9,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,17,7,10,10,8,10,15,8,15,8,8,7,14,17,8,7,15,15,15,8,15,14,15,8,15,8,10,10,8,15,0,10,0,0,8,8,14,7,0,17,0,15,1,17,8,0,0,10,15,9,8,8,10,12,11,8,11,10,10,10,9,10,8,7,11,8,10,10,8,10,10,9,10,10,10,13,9,10,10,0,0,0,10,10,9,9,0,11,0,10,4,12,10,0,2,12,10,9,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,0,10,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,0,9,9,0,8,0,10,3,10,10,0,2,10,10,7,10,10,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,0,14,0,16,2,16,9,0,2,9,16,7,9,9,9,9,9,14,16,16,9,16,16,14,14,7,9,14,9,9,7,9,16,7,9,9,7,16,7,9,7,9,0,0,9,9,9,0,0,7,0,9,9,9,9,0,2,9,9,14,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,16,8,16,8,8,8,14,17,8,7,16,15,15,8,15,15,15,9,15,8,10,11,9,15,17,11,0,0,8,8,14,7,0,0,0,15,2,17,8,0,0,10,15,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,0,3,17,10,0,2,10,17,7,10,10,3,3,4,8,11,10,3,10,9,8,8,0,4,8,3,3,1,3,10,2,3,3,1,11,2,3,1,4,0,0,3,3,2,9,0,2,0,3,0,3,3,0,2,3,3,7,4,4,10,12,17,8,17,10,10,9,16,17,8,7,17,15,17,10,15,16,17,8,17,10,10,12,8,17,17,12,0,0,10,10,16,9,0,17,0,17,3,0,10,0,2,12,17,9,10,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,0,0,2,10,10,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,0,0,0,2,2,2,2,0,0,2,2,0,2,2,10,12,10,8,10,10,10,9,9,10,8,7,10,8,10,10,8,9,10,8,10,10,10,12,8,10,10,12,0,0,10,10,9,9,0,10,0,10,3,12,10,0,2,0,10,9,10,10,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,0,7,10,10,7,9,7,14,14,14,7,14,14,16,14,7,7,14,7,7,7,7,14,7,7,7,9,16,7,7,9,9,0,0,7,7,7,14,0,9,0,7,7,9,7,0,0,9,7,0,7,7,10,10,11,8,11,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,0,9,0,10,4,10,10,0,2,10,10,7,0,11,10,10,11,8,11,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,0,9,0,10,4,10,10,0,2,10,10,7,11,0,0,9,8,8,8,9,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,9,0,8,8,8,9,9,7,7,12,8,7,9,8,8,8,8,7,8,8,8,9,10,10,9,8,10,10,0,0,9,8,7,7,10,0,0,9,1,10,8,0,1,13,8,9,9,8,8,8,0,8,16,8,8,8,14,15,8,7,17,15,15,8,15,15,15,9,15,8,8,9,10,15,16,9,0,0,8,8,14,7,16,0,0,15,2,15,8,0,0,8,15,7,10,9,8,8,8,0,8,8,8,7,7,15,8,7,8,8,8,8,8,7,8,8,8,8,8,15,8,15,8,8,0,0,8,8,14,7,8,0,0,8,1,8,8,0,7,8,8,7,8,15,8,8,16,8,0,8,8,8,14,15,8,7,16,15,15,8,15,15,15,9,15,8,8,9,9,15,15,9,0,0,8,8,14,7,16,0,0,15,2,15,8,0,0,8,15,7,9,9,9,9,8,8,8,0,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,9,9,8,8,8,9,0,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,7,7,8,7,8,7,7,0,7,7,7,7,8,7,7,7,7,8,7,8,7,7,7,8,8,7,7,8,0,0,7,7,7,7,8,0,0,7,1,7,7,0,0,7,7,7,8,8,7,7,14,7,14,7,7,7,0,14,7,7,14,14,14,7,14,15,14,7,14,7,7,7,7,14,14,7,0,0,7,7,14,7,14,0,0,14,0,14,7,0,0,7,14,7,7,7,8,12,15,15,15,8,8,7,14,0,10,9,15,17,15,8,17,14,15,10,15,8,12,17,10,23,19,10,0,0,8,8,22,7,17,0,0,15,1,17,8,0,7,12,15,11,8,15,8,8,8,8,8,8,8,7,7,10,0,9,8,10,8,8,10,7,8,10,8,8,10,8,10,8,10,8,0,0,8,8,7,7,8,0,0,8,1,8,8,0,0,8,8,9,8,8,7,7,7,7,7,7,7,7,7,9,9,0,7,9,7,7,9,7,7,9,7,7,9,7,9,7,9,7,0,0,7,7,7,7,7,0,0,7,0,7,7,0,0,7,7,9,7,7,9,9,17,8,16,9,9,8,14,15,8,7,0,15,15,8,15,15,15,9,15,9,8,9,11,15,16,9,0,0,9,8,14,7,16,0,0,16,2,15,8,0,1,9,15,7,11,9,8,8,15,8,15,8,8,7,14,17,10,9,15,0,15,8,17,14,15,10,15,8,10,8,10,15,17,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,9,8,8,8,8,15,8,15,8,8,7,14,15,8,7,15,15,0,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,7,8,8,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,0,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,0,0,8,1,8,8,0,0,8,8,7,8,8,8,8,15,8,15,8,8,7,14,17,10,9,15,17,15,8,0,14,15,10,15,8,10,8,10,15,17,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,9,8,8,7,7,15,7,15,7,7,8,15,14,7,7,15,14,14,7,14,0,14,8,14,7,7,8,8,14,14,8,0,0,7,7,14,7,15,0,0,14,1,14,7,0,0,7,14,7,8,8,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,0,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,7,8,8,8,8,9,8,9,8,8,8,7,10,10,9,9,10,8,8,10,8,8,0,8,8,10,9,11,8,10,9,0,0,8,8,7,7,9,0,0,8,2,8,8,0,0,8,8,9,9,9,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,0,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,15,7,8,8,9,9,8,8,8,9,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,0,8,8,9,8,8,8,0,0,9,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,8,10,8,8,8,8,8,7,7,12,10,9,8,10,8,8,10,7,8,10,8,8,0,10,10,8,12,10,0,0,8,8,7,7,10,0,0,8,1,10,8,0,0,10,8,11,8,8,8,10,9,15,9,8,8,8,7,17,8,7,9,8,8,8,8,8,8,9,8,8,10,0,9,15,11,11,0,0,8,8,14,7,11,0,0,8,2,10,8,0,7,10,8,9,9,16,9,9,10,8,9,9,9,8,7,10,10,9,11,10,8,8,10,8,8,11,8,9,10,9,0,8,11,9,0,0,9,8,7,7,9,0,0,9,2,8,8,0,1,9,8,9,11,9,8,8,15,15,15,8,8,7,14,23,8,7,15,15,15,8,15,14,15,8,15,8,8,15,8,0,15,8,0,0,8,8,22,7,15,0,0,15,1,15,8,0,7,8,15,7,8,15,8,10,16,8,15,8,8,7,14,19,10,9,16,17,15,8,17,14,15,10,15,8,12,11,11,15,0,10,0,0,8,8,14,7,17,0,0,15,1,17,8,0,0,10,15,11,9,8,8,10,9,8,9,8,8,8,7,10,8,7,9,8,8,8,8,8,8,9,8,8,10,11,9,8,10,0,0,0,8,8,7,7,11,0,0,8,2,10,8,0,0,10,8,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,8,8,8,9,9,7,7,8,8,7,9,8,8,8,8,7,8,8,8,9,8,8,9,8,8,8,0,0,0,8,7,7,8,0,0,9,1,8,8,0,1,9,8,7,9,8,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,0,7,7,8,0,0,8,1,8,8,0,0,8,8,7,8,8,7,7,14,14,14,7,7,7,14,22,7,7,14,14,14,7,14,14,14,7,14,7,7,14,7,22,14,7,0,0,7,7,0,7,14,0,0,14,0,14,7,0,7,7,14,7,7,14,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,0,7,0,0,7,0,7,7,0,0,7,7,7,7,7,8,10,16,8,16,8,8,8,14,17,8,7,16,15,15,8,15,15,15,9,15,8,10,11,9,15,17,11,0,0,8,8,14,7,0,0,0,15,2,17,8,0,0,10,15,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,15,8,15,9,9,7,14,15,8,7,16,15,15,8,15,14,15,8,15,9,8,8,9,15,15,8,0,0,9,8,14,7,15,0,0,0,1,15,8,0,1,9,15,7,9,8,1,1,2,1,2,1,1,1,0,1,1,0,2,1,1,1,1,1,1,2,1,1,1,2,2,1,1,2,0,0,1,1,0,0,2,0,0,1,0,1,1,0,0,1,1,0,2,2,8,10,15,8,15,8,8,7,14,17,8,7,15,15,15,8,15,14,15,8,15,8,10,10,8,15,17,10,0,0,8,8,14,7,17,0,0,15,1,0,8,0,0,10,15,9,8,8,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,0,0,8,1,8,0,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,7,0,1,1,0,0,7,0,0,1,0,0,0,0,0,0,0,0,1,0,7,1,7,0,0,0,0,1,0,7,0,0,0,0,1,0,0,0,0,0,1,0,0,1,7,9,13,8,8,8,9,9,7,7,12,8,7,9,8,8,8,8,7,8,8,8,9,10,10,9,8,10,10,0,0,9,8,7,7,10,0,0,9,1,10,8,0,1,0,8,9,9,8,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,0,7,8,8,7,9,7,7,7,7,7,7,7,11,9,9,7,9,7,7,9,7,7,9,7,7,11,9,9,7,11,9,0,0,7,7,7,7,9,0,0,7,0,9,7,0,0,9,7,0,7,7,9,9,10,8,9,9,9,8,7,8,8,7,11,8,8,8,8,8,8,9,8,9,8,9,11,8,9,9,0,0,9,8,7,7,9,0,0,9,2,8,8,0,1,9,8,7,0,9,8,8,9,15,9,8,8,8,7,15,8,7,9,8,8,8,8,8,8,9,8,8,8,16,9,15,8,9,0,0,8,8,14,7,9,0,0,8,2,8,8,0,7,8,8,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,9,10,18,26,17,17,8,15,14,26,15,26,25,23,17,19,22,25,26,16,17,16,10,23,17,0,0,18,18,9,16,10,9,0,0,10,18,17,0,3,19,17,14,25,10,19,0,17,9,10,18,18,16,17,8,15,14,18,15,17,18,15,16,18,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,19,17,14,18,10,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,0,10,24,17,0,2,17,24,14,17,10,9,9,8,0,8,10,8,7,8,8,8,7,8,8,8,9,10,7,9,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,0,1,8,8,0,0,9,8,7,8,8,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,0,3,17,10,0,2,10,17,7,10,10,18,18,17,10,10,0,18,16,16,8,15,14,18,15,17,17,17,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,18,17,14,18,10,26,18,17,8,10,18,0,16,16,8,15,14,27,15,25,25,24,16,17,23,26,27,17,17,16,10,24,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,19,17,14,25,10,17,16,16,7,9,16,16,0,16,7,14,14,16,14,17,16,14,17,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,0,9,17,16,0,2,16,16,14,16,9,17,17,23,8,16,16,16,16,0,14,14,14,23,21,23,17,21,23,24,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,0,9,23,16,0,2,17,23,14,16,9,8,8,15,8,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,0,1,15,8,0,0,8,15,7,8,8,15,15,15,8,8,15,15,14,14,8,0,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,0,8,15,15,0,0,15,15,14,15,8,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,0,7,14,14,0,0,14,14,14,14,7,26,18,24,8,17,18,27,16,23,15,15,14,0,22,32,25,31,23,24,23,33,27,17,17,16,17,31,17,0,0,18,17,16,16,17,16,0,0,10,24,17,0,3,19,24,14,25,10,15,15,22,8,15,15,15,14,21,15,15,14,22,0,22,15,22,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,0,8,22,15,0,0,15,22,14,15,8,26,17,24,8,17,17,25,17,23,15,15,14,32,22,0,24,30,24,25,22,32,25,16,17,15,17,30,17,0,0,17,18,16,16,17,15,0,0,10,25,17,0,2,17,24,14,24,10,25,18,17,9,10,17,25,16,17,8,15,14,25,15,24,0,23,16,18,23,25,25,16,17,15,10,23,17,0,0,17,17,9,16,10,8,0,0,10,17,17,0,2,19,17,14,24,10,23,15,22,10,15,17,24,14,21,15,15,14,31,22,30,23,0,21,22,23,31,24,17,15,15,15,31,15,0,0,15,15,14,14,15,15,0,0,8,22,15,0,0,16,22,14,22,8,17,16,23,7,16,16,16,17,23,14,14,14,23,21,24,16,21,0,24,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,0,9,24,16,0,2,16,23,14,16,9,19,18,24,9,17,17,17,17,24,15,15,14,24,22,25,18,22,24,0,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,0,10,25,17,0,2,18,24,14,17,10,22,15,15,8,8,15,23,14,14,8,15,14,23,15,22,23,23,14,15,0,23,23,16,15,15,8,23,15,0,0,15,15,7,14,8,8,0,0,8,15,15,0,0,16,15,14,22,8,25,17,24,8,17,17,26,16,23,15,15,14,33,22,32,25,31,23,24,23,0,26,17,17,15,17,31,17,0,0,17,17,16,16,17,15,0,0,10,24,17,0,2,18,24,14,24,10,26,18,17,8,10,18,27,16,16,8,15,14,27,15,25,25,24,16,17,23,26,0,17,17,16,10,24,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,19,17,14,25,10,16,8,8,8,8,8,17,7,7,8,8,7,17,8,16,16,17,7,8,16,17,17,0,8,8,8,17,8,0,0,8,8,7,7,8,8,0,0,1,8,8,0,0,9,8,7,15,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,0,10,17,17,0,2,17,17,14,17,10,16,16,15,8,8,16,16,14,14,8,15,14,16,15,15,15,15,14,15,15,15,16,8,15,0,8,15,15,0,0,16,15,7,14,8,9,0,0,8,15,15,0,1,16,15,14,16,8,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,0,0,10,10,16,9,17,15,0,0,3,17,10,0,2,10,17,7,10,10,23,15,22,8,15,15,24,14,21,15,15,14,31,22,30,23,31,21,22,23,31,24,17,15,15,15,0,15,0,0,15,15,14,14,15,15,0,0,8,22,15,0,0,16,22,14,22,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,0,10,17,17,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,17,8,10,18,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,0,17,9,16,10,9,0,0,10,17,17,0,3,18,17,14,18,10,18,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,18,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,0,10,18,17,0,2,17,17,14,17,10,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,16,14,9,0,0,9,9,0,9,16,14,0,0,2,16,9,0,2,9,16,7,9,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,0,9,16,16,0,2,16,16,14,16,9,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,0,3,17,10,0,2,10,17,7,10,10,9,9,15,8,15,9,9,7,14,15,8,7,16,15,15,8,15,14,15,8,15,9,8,8,9,15,15,8,0,0,9,8,14,7,15,0,0,0,1,15,8,0,1,9,15,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,0,0,10,10,0,2,10,10,7,10,3,18,17,24,8,17,17,17,17,23,15,15,14,24,22,25,17,22,24,25,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,0,10,0,17,0,2,17,24,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,0,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,0,2,2,2,0,0,3,2,0,3,2,19,19,17,9,10,18,19,16,17,8,15,14,19,15,17,19,16,16,18,16,18,19,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,0,17,14,18,10,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,0,10,24,17,0,2,17,0,14,17,10,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,0,7,14,14,0,0,14,14,0,14,7,25,18,17,8,10,18,25,16,16,8,15,14,25,15,24,24,22,16,17,22,24,25,15,17,16,10,22,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,18,17,14,0,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,0,3,10,10,0,2,10,10,7,10,0,0,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,10,0,10,8,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,15,10,17,1,17,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,10,10,0,1,4,10,10,10,9,1,8,7,11,8,10,10,8,10,10,9,10,10,1,11,9,3,8,11,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,11,4,1,8,1,0,8,8,1,7,7,8,8,0,1,8,1,1,1,0,8,8,1,8,1,15,1,1,1,1,0,0,1,1,0,7,8,1,0,1,0,1,1,0,0,1,1,7,1,1,3,3,4,8,0,10,5,10,9,8,8,2,4,8,3,5,1,5,10,2,5,3,1,11,4,3,1,4,0,0,5,5,2,9,11,2,0,3,0,3,5,0,2,3,3,7,4,4,10,10,10,8,10,0,10,16,16,8,15,7,10,15,10,10,8,9,17,8,10,10,1,17,8,3,8,10,0,0,10,10,2,16,10,1,0,10,0,10,10,0,2,10,10,14,10,3,10,10,10,1,5,10,0,9,10,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,9,9,10,7,10,16,9,0,16,7,14,7,10,14,9,9,7,10,16,8,9,9,0,17,8,2,7,10,0,0,9,9,2,16,10,1,0,9,0,9,9,0,2,9,9,14,10,3,9,9,9,7,9,16,10,16,0,7,14,7,9,14,9,9,7,9,16,7,9,9,0,16,7,2,7,9,0,0,9,9,2,16,9,0,0,9,0,9,9,0,2,9,9,14,9,2,1,1,1,8,8,8,1,7,7,0,8,0,1,8,1,1,1,0,8,1,1,1,1,8,1,1,1,1,0,0,1,1,0,7,8,1,0,1,0,1,1,0,0,1,1,7,1,1,8,8,8,8,8,15,8,14,14,8,0,7,8,15,8,8,8,7,15,8,8,8,1,15,8,1,8,8,0,0,8,8,0,14,8,1,0,8,0,8,8,0,0,8,8,14,8,1,7,7,7,0,2,7,9,7,7,0,7,0,7,7,7,9,7,9,7,7,9,7,0,7,9,0,7,7,0,0,9,9,0,7,0,0,0,7,0,7,9,0,0,7,7,7,7,0,10,10,11,1,4,10,10,10,9,1,8,7,0,8,10,10,8,10,10,9,10,10,1,11,9,3,8,11,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,11,4,8,8,8,8,8,15,8,14,14,8,15,7,8,0,8,8,8,7,15,8,8,8,1,15,8,1,8,8,0,0,8,8,0,14,8,1,0,8,0,8,8,0,0,8,8,14,8,1,10,10,10,1,3,10,10,9,9,1,8,7,10,8,0,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,0,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,8,8,8,1,1,8,8,7,7,1,8,7,8,8,8,8,0,7,8,8,8,8,1,8,8,1,8,8,0,0,8,8,0,7,1,1,0,8,0,8,8,0,0,8,8,7,8,1,9,9,10,0,5,9,11,10,9,0,7,9,10,7,9,11,7,0,9,8,11,9,0,10,10,2,7,10,0,0,11,11,2,9,3,1,0,9,0,9,11,0,2,9,9,7,10,3,10,10,10,8,10,17,10,16,16,8,15,7,10,15,10,10,8,9,0,8,10,10,1,17,8,3,8,10,0,0,10,10,2,16,10,1,0,10,0,10,10,0,9,10,10,14,10,3,8,15,9,8,2,8,8,8,7,1,8,7,9,8,8,8,8,8,8,0,8,15,1,16,9,1,8,9,0,0,8,8,0,7,2,2,0,8,0,8,8,0,0,8,8,7,9,2,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,0,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,10,17,10,8,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,15,10,0,1,17,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,10,7,10,3,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,1,0,1,1,0,0,1,1,0,1,1,10,17,11,15,11,17,10,17,16,8,15,7,11,15,10,10,8,10,17,16,10,17,1,0,9,3,8,11,0,0,10,10,2,16,11,2,0,10,0,10,10,0,2,10,10,14,11,4,8,8,9,1,4,8,10,8,7,1,8,9,9,8,8,10,8,10,8,9,10,8,1,9,0,1,8,9,0,0,10,10,0,7,2,2,0,8,0,8,10,0,0,8,8,7,9,2,3,3,3,1,3,3,3,2,2,1,1,0,3,1,3,3,1,2,3,1,3,3,1,3,1,0,1,3,0,0,3,3,2,2,3,1,0,3,0,3,3,0,2,3,3,0,3,3,8,8,8,1,1,8,8,7,7,1,8,7,8,8,8,8,8,7,8,8,8,8,1,8,8,1,0,8,0,0,8,8,0,7,1,1,0,8,0,8,8,0,0,8,8,7,8,1,10,10,11,1,4,10,10,10,9,1,8,7,11,8,10,10,8,10,10,9,10,10,1,11,9,3,8,0,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,0,12,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,0,2,9,3,1,0,10,0,10,12,0,2,10,10,7,10,3,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,0,2,2,0,0,2,0,2,2,0,2,2,2,0,2,2,9,9,9,7,9,16,9,16,16,7,14,7,9,14,9,9,7,9,16,7,9,9,0,16,7,2,7,9,0,0,9,9,2,0,9,0,0,9,0,9,9,0,2,9,9,14,9,2,3,3,4,8,11,10,3,10,9,8,8,0,4,8,3,3,1,3,10,2,3,3,1,11,2,3,1,4,0,0,3,3,2,9,0,2,0,3,0,3,3,0,2,3,3,7,4,4,1,1,2,1,2,1,1,1,0,1,1,0,2,1,1,1,1,1,1,2,1,1,1,2,2,1,1,2,0,0,1,1,0,0,2,0,0,1,0,1,1,0,0,1,1,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,0,0,10,10,0,2,10,10,7,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,0,10,0,2,10,10,7,10,3,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,0,0,2,10,10,7,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,9,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,0,2,2,0,0,2,2,0,2,2,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,0,10,7,10,3,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,0,7,10,3,7,7,7,7,7,14,7,14,14,7,14,7,7,14,7,7,7,7,14,7,7,7,0,14,7,0,7,7,0,0,7,7,0,14,7,0,0,7,0,7,7,0,0,7,7,0,7,0,10,10,11,1,4,10,10,10,9,1,8,7,11,8,10,10,8,10,10,9,10,10,1,11,9,3,8,11,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,0,4,3,3,4,1,4,3,3,3,2,1,1,0,4,1,3,3,1,3,3,2,3,3,1,4,2,3,1,4,0,0,3,3,2,2,4,2,0,3,0,3,3,0,2,3,3,0,4,0,0,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,18,15,17,17,8,17,15,10,15,17,0,0,17,18,9,16,10,8,0,18,10,0,17,0,2,17,17,14,17,10,17,0,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,19,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,19,17,16,17,10,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,0,17,0,2,17,24,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,0,8,0,0,8,8,7,8,8,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,17,3,0,10,0,2,10,17,7,10,10,17,17,17,8,10,0,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,17,17,8,10,17,0,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,17,16,16,7,9,16,16,0,16,7,14,14,16,14,17,16,14,17,17,14,16,16,7,16,14,9,14,16,0,0,16,17,9,16,9,7,0,17,9,0,16,0,2,16,16,14,16,9,16,16,23,7,16,16,16,16,0,14,14,14,23,21,23,16,21,23,23,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,0,16,0,2,16,23,14,16,9,8,10,15,8,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,10,10,8,15,17,10,0,0,8,8,14,7,17,17,0,15,1,0,8,0,0,10,15,9,8,8,15,15,15,8,8,15,15,14,14,8,0,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,0,15,0,0,15,15,14,15,8,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,0,14,0,0,14,14,14,14,7,17,17,24,8,17,17,17,16,23,15,15,14,0,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,0,17,0,2,17,24,14,17,10,15,15,22,8,15,15,15,14,21,15,15,14,22,0,22,15,22,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,0,15,0,0,15,22,14,15,8,18,17,24,8,17,17,17,17,23,15,15,14,24,22,0,17,22,24,25,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,25,10,0,17,0,2,17,24,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,0,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,0,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,0,15,0,0,15,22,14,15,8,17,16,23,7,16,16,16,17,23,14,14,14,23,21,24,16,21,0,24,14,23,16,7,16,14,16,21,16,0,0,16,17,16,16,16,14,0,24,9,0,16,0,2,16,23,14,16,9,18,17,24,8,17,17,17,17,23,15,15,14,24,22,25,17,22,24,0,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,25,10,0,17,0,2,17,24,14,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,0,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,0,15,0,0,15,15,14,15,8,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,0,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,0,17,0,2,17,24,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,0,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,8,10,8,8,8,8,8,7,7,10,8,7,8,8,8,8,8,7,8,8,8,8,0,10,8,8,10,10,0,0,8,8,7,7,10,10,0,8,1,0,8,0,0,10,8,9,8,8,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,0,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,19,17,16,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,15,15,15,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,0,15,0,0,15,15,14,15,8,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,0,15,10,1,1,10,10,17,10,17,15,1,17,3,0,10,1,2,10,18,8,10,10,15,17,22,8,15,15,15,14,21,17,15,14,22,22,22,15,22,21,22,15,22,15,10,17,15,15,0,17,0,0,15,15,14,14,17,17,0,22,8,0,15,0,0,17,22,16,15,8,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,19,15,10,17,0,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,19,17,16,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,0,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,17,10,18,17,17,8,10,17,17,17,16,8,15,14,17,15,18,17,15,17,18,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,18,10,0,17,0,2,17,17,14,17,10,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,17,14,9,1,1,9,9,0,10,16,14,1,16,2,0,9,1,2,9,17,8,9,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,10,14,16,1,1,16,16,10,0,9,7,1,16,9,0,16,1,2,16,17,15,16,9,10,12,17,8,17,10,10,9,16,17,8,7,17,15,17,10,15,16,17,8,17,10,10,12,8,17,17,12,0,0,10,10,16,9,0,17,0,17,3,0,10,0,2,12,17,9,10,10,8,10,15,8,15,8,8,7,14,17,8,7,15,15,15,8,15,14,15,8,15,8,10,10,8,15,17,10,0,0,8,8,14,7,17,0,0,15,1,0,8,0,0,10,15,9,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,18,17,24,8,17,17,17,17,23,15,15,14,24,22,25,17,22,24,25,15,24,17,8,17,15,17,22,17,0,0,17,18,16,16,17,15,0,0,10,0,17,0,2,17,24,14,17,10,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,0,10,0,2,10,10,7,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,0,2,0,0,2,2,0,2,2,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,19,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,0,17,16,17,10,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,18,22,17,1,1,17,17,17,17,17,15,1,24,10,0,17,1,2,17,0,15,17,10,14,16,14,7,7,14,14,14,14,9,14,14,14,14,14,14,14,14,14,14,14,14,9,16,14,8,16,16,1,1,14,14,8,15,9,9,1,14,7,0,14,1,0,16,15,0,14,7,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,0,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,0,10,0,2,10,10,7,10,0,0,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,17,0,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,17,17,0,8,10,17,18,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,18,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,0,0,0,8,8,7,8,8,10,10,10,8,0,10,12,9,9,8,8,9,10,8,10,12,8,11,10,8,12,10,8,10,10,10,8,10,0,0,12,12,9,9,10,8,0,10,5,10,0,0,2,10,10,7,10,10,17,17,17,8,10,0,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,17,17,18,8,12,17,0,16,16,8,15,23,17,15,18,20,16,18,17,16,19,17,8,18,17,10,15,18,0,0,19,19,9,16,10,8,0,17,12,17,0,0,9,17,17,14,17,10,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,0,0,2,16,16,14,16,9,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,0,0,2,16,16,14,16,9,8,8,8,8,8,8,8,7,7,0,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,0,0,0,8,8,7,8,8,15,15,15,8,8,15,15,14,14,8,0,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,14,14,14,7,9,14,23,14,14,7,14,0,14,14,14,16,14,16,14,14,16,14,7,14,16,7,14,14,0,0,16,16,7,14,7,7,0,14,9,14,0,0,7,14,14,14,14,7,17,17,17,8,10,17,17,16,16,8,15,14,0,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,15,15,15,8,8,15,15,14,14,8,15,14,15,0,15,15,15,14,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,17,17,18,8,10,17,18,16,16,8,15,14,17,15,0,18,16,16,17,16,17,17,8,18,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,17,17,18,8,12,17,20,16,16,8,15,16,17,15,18,0,16,18,17,16,19,17,8,18,17,10,15,18,0,0,19,19,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,15,15,16,8,8,15,16,14,14,8,15,14,15,15,16,16,0,14,15,16,15,15,8,16,15,8,15,16,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,16,16,16,7,11,16,18,16,16,7,14,16,16,14,16,18,14,0,16,14,18,16,7,16,16,9,14,16,0,0,18,18,9,16,9,7,0,16,11,16,0,0,2,16,16,14,16,9,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,15,15,16,8,8,15,16,14,14,8,15,14,15,15,16,16,16,14,15,0,15,15,8,16,15,8,15,16,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,17,17,17,8,12,17,19,16,16,8,15,16,17,15,17,19,15,18,17,15,0,17,8,17,17,10,15,17,0,0,24,19,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,0,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,0,0,0,8,8,7,8,8,17,17,18,8,10,17,18,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,0,15,10,15,18,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,15,15,15,8,10,15,17,14,14,8,15,16,15,15,15,17,15,16,15,15,17,15,8,15,0,8,15,15,0,0,17,17,7,14,8,8,0,15,10,15,0,0,0,15,15,14,15,8,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,0,0,2,10,10,7,10,10,15,15,15,8,8,15,15,14,14,8,15,14,15,15,15,15,15,14,15,15,15,15,8,15,15,8,0,15,0,0,15,15,7,14,8,8,0,15,8,15,0,0,0,15,15,14,15,8,17,17,18,8,10,17,18,16,16,8,15,14,17,15,18,18,16,16,17,16,17,17,8,18,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,12,17,19,16,16,8,15,16,17,15,17,19,15,18,17,15,24,17,8,17,17,10,15,17,0,0,0,19,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,17,17,17,8,12,17,19,16,16,8,15,16,17,15,17,19,15,18,17,15,19,17,8,17,17,10,15,17,0,0,19,0,9,16,10,8,0,17,12,17,0,0,2,17,17,14,17,10,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,0,0,2,9,9,7,9,9,16,16,16,7,9,16,16,16,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,0,9,7,0,16,9,16,0,0,2,16,16,14,16,9,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,0,8,0,10,3,10,0,0,2,10,10,7,10,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,0,0,8,1,8,0,0,0,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,0,10,17,0,0,2,17,17,14,17,10,10,10,10,1,5,10,12,9,9,1,8,9,10,8,10,12,8,11,10,8,12,10,1,10,10,3,8,10,0,0,12,12,2,9,3,1,0,10,0,10,0,0,2,10,10,7,10,3,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,0,0,2,17,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,9,2,2,0,0,7,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,0,0,0,2,2,0,2,2,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,0,17,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,0,14,17,10,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,0,0,0,14,14,0,14,7,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,0,10,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,0,0,2,10,10,7,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,2,3,3,2,2,0,2,0,3,2,4,2,0,2,2,2,2,3,0,2,1,4,0,2,0,0,3,2,2,4,2,1,0,3,2,2,2,0,0,3,4,0,5,4,3,0,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,2,2,0,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,2,2,2,0,0,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,3,3,2,0,2,0,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,3,3,2,0,2,3,0,2,2,0,0,7,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,9,0,0,3,2,0,3,2,2,2,2,0,2,2,2,0,3,0,0,1,2,0,2,2,0,3,2,0,2,2,0,2,0,2,0,2,0,0,2,2,3,3,2,0,0,2,2,2,2,0,0,2,2,1,2,2,2,2,2,0,2,2,2,3,0,0,0,1,2,0,2,2,0,3,2,0,2,2,0,2,0,2,0,2,0,0,2,2,3,3,2,0,0,2,2,2,2,0,0,2,2,1,2,2,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,0,0,0,0,7,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,7,0,0,0,0,1,0,0,3,3,2,0,2,3,3,2,2,0,0,0,0,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,2,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,4,2,2,0,2,2,2,2,2,0,2,0,2,2,0,2,0,2,2,2,2,2,0,2,0,4,0,2,0,0,2,2,2,4,2,0,0,2,2,2,2,0,0,2,5,0,4,4,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,0,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,3,3,0,0,1,2,0,2,2,0,0,2,0,2,2,0,2,0,2,0,2,0,0,2,2,3,3,2,0,0,2,2,2,2,0,0,2,2,1,2,2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,0,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,9,2,2,0,0,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,0,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,0,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,7,2,2,2,2,2,7,0,0,2,0,2,2,0,2,2,0,2,2,0,0,0,9,0,2,0,0,2,2,9,2,2,7,0,2,2,2,2,0,0,2,2,0,2,9,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,4,2,2,7,2,2,2,2,2,7,2,0,2,2,4,2,0,2,2,2,2,2,0,9,0,0,0,2,0,0,2,2,9,4,2,7,0,2,2,2,2,0,0,2,4,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,0,0,0,2,2,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,0,2,2,2,2,1,0,3,2,2,2,0,0,3,2,0,3,2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,0,2,2,2,0,0,2,2,2,2,0,0,2,2,0,2,2,2,2,2,7,2,2,2,3,3,7,0,1,2,0,2,2,0,3,2,0,2,2,0,9,0,9,0,2,0,0,2,2,0,3,2,7,0,2,2,2,2,0,0,2,2,1,2,9,4,2,2,0,2,2,2,3,3,0,2,1,2,2,4,2,0,3,2,2,2,2,0,2,0,4,0,2,0,0,2,2,3,0,2,0,0,2,2,2,2,0,0,2,4,1,4,4,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,0,0,0,2,2,2,2,0,0,2,2,0,2,2,1,1,0,7,0,1,1,0,0,7,0,0,1,0,0,0,0,0,0,0,0,1,0,7,1,7,0,0,0,0,1,0,7,0,0,0,0,1,0,0,0,0,0,1,0,0,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,0,2,2,2,0,0,3,2,0,3,2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,9,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,0,2,2,0,0,2,2,0,2,2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,0,2,0,0,2,2,0,2,2,2,2,2,0,2,2,9,2,2,0,0,7,2,0,2,2,0,2,2,0,2,2,0,2,0,2,0,2,0,0,2,2,2,2,2,0,0,2,2,2,0,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,0,2,0,3,2,4,2,2,0,2,2,2,2,2,0,2,0,2,2,5,2,0,2,2,2,2,2,0,2,0,4,0,2,0,0,2,2,2,4,2,0,0,2,2,2,2,0,0,2,0,0,4,4,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,2,0,2,3,3,2,2,0,2,0,3,2,4,2,0,2,2,2,2,3,0,2,1,4,0,2,0,0,3,2,2,4,2,1,0,3,2,2,2,0,0,3,4,0,0,4,4,2,2,7,2,2,2,2,2,7,2,0,2,2,4,2,0,2,2,2,2,2,0,9,0,11,0,2,0,0,2,2,9,4,2,7,0,2,2,2,2,0,0,2,4,0,4,0,0,20,17,9,10,25,18,23,17,9,23,14,18,16,17,25,15,17,18,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,19,10,17,17,0,3,0,17,21,25,18,20,0,17,9,10,18,18,16,17,14,16,14,18,16,17,18,15,17,18,15,17,18,10,19,16,10,17,19,0,0,18,17,9,16,12,13,0,19,10,19,17,0,3,0,17,17,18,11,17,17,0,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,0,17,14,17,10,9,9,8,0,8,8,8,7,8,8,8,7,8,8,8,9,8,7,9,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,9,1,8,8,0,0,0,8,7,8,8,10,10,10,8,0,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,0,10,7,10,10,25,18,17,8,10,0,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,0,17,21,25,17,18,18,17,8,10,18,0,16,16,8,15,14,19,15,17,18,16,16,17,16,18,19,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,0,17,14,18,10,23,16,16,7,9,23,16,0,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,23,9,23,9,7,0,16,9,16,16,0,2,0,16,21,23,16,17,17,16,8,9,16,16,16,0,7,14,14,16,14,16,17,14,16,17,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,17,9,16,16,0,2,0,16,14,16,9,9,14,8,8,8,8,8,7,7,0,9,7,8,9,8,8,8,8,8,8,8,8,10,10,8,8,10,10,0,0,8,8,7,7,10,12,0,8,1,10,8,0,0,0,8,10,8,9,23,16,15,8,8,22,15,21,14,9,0,14,15,16,15,22,15,15,15,15,15,15,15,15,22,8,15,22,0,0,22,22,7,21,8,8,0,15,8,15,15,0,0,0,15,21,22,16,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,0,14,14,14,7,18,18,17,8,10,18,19,16,16,8,15,14,0,15,17,18,16,16,17,16,18,19,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,0,17,14,18,10,16,16,15,8,8,15,15,14,14,9,16,14,15,0,15,15,15,15,15,15,15,15,8,15,15,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,0,15,14,15,9,17,17,17,8,10,17,17,16,16,8,15,14,17,15,0,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,0,17,14,17,10,25,18,17,9,10,24,18,23,17,8,22,14,18,15,17,0,16,16,18,16,18,18,16,17,22,10,16,24,0,0,24,24,9,23,10,8,0,19,10,17,17,0,2,0,17,21,24,17,15,15,15,8,8,15,16,14,14,8,15,14,16,15,15,16,0,14,15,16,16,16,9,15,15,8,16,15,0,0,15,15,7,14,8,8,0,16,8,15,15,0,0,0,15,14,15,8,17,17,16,7,9,16,16,16,16,8,15,14,16,15,16,16,14,0,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,0,16,14,16,10,18,18,17,9,10,17,17,16,17,8,15,14,17,15,17,18,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,0,17,14,17,10,15,15,15,8,8,15,16,14,14,8,15,14,16,15,15,16,16,14,15,0,16,16,9,15,15,8,16,15,0,0,15,15,7,14,8,8,0,16,8,15,15,0,0,0,15,14,15,8,17,17,17,8,10,17,18,16,16,8,15,14,18,15,17,18,16,16,17,16,0,18,9,17,15,10,16,17,0,0,17,17,9,16,10,8,0,18,10,17,17,0,2,0,17,14,17,10,18,18,17,8,10,18,19,16,16,8,15,14,19,15,17,18,16,16,17,16,18,0,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,19,10,17,17,0,3,0,17,14,18,10,15,10,8,8,8,15,9,14,7,10,15,7,9,8,8,16,9,7,8,9,9,9,0,10,15,8,11,17,0,0,15,15,7,14,10,10,0,9,1,10,8,0,0,0,8,16,15,15,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,0,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,19,17,0,2,0,17,16,17,10,23,16,15,8,8,23,16,21,14,8,22,14,16,15,15,22,15,14,15,15,15,16,15,15,0,8,15,22,0,0,23,22,7,21,8,9,0,16,8,15,15,0,1,0,15,21,23,15,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,0,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,0,10,7,10,10,15,17,15,8,8,15,16,14,14,10,15,14,16,15,15,16,16,14,15,16,16,16,11,17,15,8,0,17,0,0,15,15,7,14,10,10,0,16,8,17,15,0,0,0,15,16,15,8,24,19,17,8,10,24,17,23,16,10,22,14,17,15,17,24,15,16,17,15,17,17,17,19,22,10,17,0,0,0,24,24,9,23,12,10,0,17,10,19,17,0,2,0,17,23,24,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,18,17,8,10,25,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,0,24,9,23,10,9,0,18,10,17,17,0,3,0,17,21,25,17,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,24,0,0,24,0,9,23,10,8,0,17,10,17,17,0,2,0,17,21,24,17,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,0,9,7,9,9,23,16,16,7,9,23,16,23,16,7,21,14,16,14,16,23,14,16,16,14,16,16,14,16,21,9,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,2,0,16,21,23,16,10,12,10,8,10,10,10,9,9,10,8,7,10,8,10,10,8,9,10,8,10,10,10,12,8,10,10,12,0,0,10,10,9,9,0,10,0,10,3,12,10,0,2,0,10,9,10,10,9,13,8,8,8,9,9,7,7,12,8,7,9,8,8,8,8,7,8,8,8,9,10,10,9,8,10,10,0,0,9,8,7,7,10,0,0,9,1,10,8,0,1,0,8,9,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,17,9,10,18,19,16,17,8,15,14,19,15,17,19,16,16,18,16,18,19,9,17,16,10,16,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,0,17,14,18,10,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,0,10,7,10,3,17,19,17,8,10,17,17,16,16,10,15,14,17,15,17,17,15,16,17,15,17,17,10,19,15,10,17,19,0,0,17,17,9,16,12,10,0,17,10,0,17,0,2,0,17,16,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,0,17,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,2,3,3,2,2,0,0,0,3,0,2,2,0,2,2,0,2,3,0,2,1,2,0,2,0,0,3,2,2,2,2,1,0,3,2,2,2,0,0,0,2,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,0,0,14,17,10,21,17,14,7,7,21,14,21,14,10,21,14,14,14,14,21,14,14,14,14,14,14,16,16,21,7,16,23,0,0,21,21,7,21,9,9,0,14,7,16,14,0,0,0,14,0,21,14,25,18,17,8,10,25,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,0,17,21,0,17,18,11,10,8,10,17,10,16,9,9,16,7,10,9,10,17,8,10,10,8,10,10,15,10,15,10,8,17,0,0,17,17,9,16,10,8,0,10,3,10,10,0,2,0,10,14,17,0,0,17,17,8,10,17,17,16,16,8,17,14,17,17,19,17,15,16,17,17,17,17,8,17,15,12,15,17,0,0,17,17,9,18,10,8,0,17,10,17,17,0,4,17,0,14,19,12,17,0,17,8,10,17,18,16,16,8,16,14,18,15,18,17,15,16,17,15,18,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,17,17,0,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,0,7,8,8,10,10,17,8,0,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,17,15,0,17,3,17,10,0,2,10,0,7,10,10,17,17,17,8,10,0,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,17,18,17,8,10,17,0,16,16,8,16,14,18,15,18,17,15,16,17,15,18,18,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,16,16,16,7,9,16,16,0,16,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,0,14,16,9,16,16,23,7,16,16,16,16,0,14,14,14,23,21,23,16,21,23,23,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,0,14,16,9,8,8,15,8,15,8,8,7,14,0,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,15,0,15,1,15,8,0,0,8,0,7,8,8,17,16,15,8,8,15,16,14,14,8,0,14,16,17,18,15,15,14,15,17,16,16,8,15,16,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,0,14,17,10,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,0,14,14,7,17,18,24,8,17,17,18,16,23,15,16,14,0,22,25,17,22,23,24,15,25,18,8,17,16,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,17,15,22,8,15,15,15,14,21,15,17,14,22,0,24,15,22,21,22,17,22,15,8,15,15,17,22,15,0,0,15,15,14,16,15,15,0,22,8,22,15,0,2,15,0,14,17,10,19,18,24,8,17,17,18,16,23,15,18,14,25,24,0,17,22,23,24,17,25,18,8,17,16,19,22,17,0,0,17,17,16,18,17,15,0,24,10,24,17,0,5,17,0,14,19,12,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,0,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,0,21,22,15,22,15,8,15,15,15,22,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,0,14,15,8,16,16,23,7,16,16,16,16,23,14,14,14,23,21,23,16,21,0,23,14,23,16,7,16,14,16,21,16,0,0,16,16,16,16,16,14,0,23,9,23,16,0,2,16,0,14,16,9,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,0,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,17,15,15,8,8,15,15,14,14,8,17,14,15,17,17,15,15,14,15,0,15,15,8,15,15,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,0,14,17,10,17,18,24,8,17,17,18,16,23,15,16,14,25,22,25,17,22,23,24,15,0,18,8,17,16,17,22,17,0,0,17,17,16,16,17,15,0,24,10,24,17,0,2,17,0,14,17,10,17,18,17,8,10,17,18,16,16,8,16,14,18,15,18,17,15,16,17,15,18,0,8,17,16,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,8,8,8,8,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,0,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,0,7,8,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,0,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,15,16,15,8,8,15,16,14,14,8,16,14,16,15,16,15,15,14,15,15,16,16,8,15,0,8,15,15,0,0,15,15,7,14,8,8,0,15,8,15,15,0,0,15,0,14,15,8,12,10,17,8,17,10,10,9,16,15,10,7,17,17,19,10,15,16,17,10,17,10,8,10,8,0,15,10,1,1,10,10,17,12,17,15,1,17,3,18,10,1,4,10,0,8,12,12,15,15,22,8,15,15,15,14,21,15,15,14,22,22,22,15,22,21,22,15,22,15,8,15,15,15,0,15,0,0,15,15,14,14,15,15,0,22,8,22,15,0,0,15,0,14,15,8,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,0,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,0,17,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,0,9,16,10,8,0,17,10,17,17,0,2,17,0,14,17,10,9,9,16,7,16,9,9,9,16,14,7,7,16,14,16,9,14,16,16,7,16,9,7,9,7,17,14,9,1,1,9,9,0,10,16,14,1,16,2,17,9,1,2,9,0,8,9,9,18,16,16,7,9,16,16,16,16,7,16,14,16,16,18,16,14,16,16,16,16,16,7,16,14,12,14,16,1,1,16,16,10,0,9,7,1,16,9,17,16,1,4,16,0,15,18,11,10,10,17,8,17,10,10,9,16,15,8,7,17,15,17,10,15,16,17,8,17,10,8,10,8,17,15,10,0,0,10,10,16,9,0,15,0,17,3,17,10,0,2,10,0,7,10,10,8,8,15,8,15,8,8,7,14,15,8,7,15,15,15,8,15,14,15,8,15,8,8,8,8,15,15,8,0,0,8,8,14,7,15,0,0,15,1,15,8,0,0,8,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,17,22,17,0,0,17,17,16,16,17,15,0,0,10,24,17,0,2,17,0,14,17,10,10,10,10,1,3,10,10,9,9,1,8,7,10,8,10,10,8,9,10,8,10,10,1,10,8,3,8,10,0,0,10,10,2,9,3,1,0,10,0,10,10,0,2,10,0,7,10,3,17,17,24,8,17,17,17,16,23,15,15,14,24,22,24,17,22,23,24,15,24,17,8,17,15,18,22,17,1,1,17,17,17,17,17,15,1,24,10,0,17,1,2,17,0,15,17,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,0,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,4,2,2,0,2,2,2,2,2,0,2,0,2,2,5,2,0,2,2,2,2,2,0,2,0,4,0,2,0,0,2,2,2,4,2,0,0,2,2,2,2,0,0,2,0,0,4,4,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,0,0,14,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,8,14,14,1,1,14,14,8,15,7,7,1,14,7,15,14,1,0,14,0,0,14,7,19,17,17,8,10,17,17,16,16,8,17,14,17,17,19,17,15,16,17,17,17,17,8,17,15,12,15,17,0,0,17,17,9,18,10,8,0,17,10,17,17,0,4,17,0,14,0,12,12,10,10,8,10,10,10,9,9,8,10,7,10,10,12,10,8,9,10,10,10,10,8,10,8,12,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,0,7,12,0,0,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,14,0,14,7,7,14,14,14,14,10,14,14,14,14,14,14,14,14,14,14,14,14,9,16,14,7,16,16,0,0,14,14,7,14,9,9,0,14,7,16,14,0,0,17,14,0,14,7,14,14,0,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,7,7,7,0,14,14,7,14,14,14,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,0,7,7,7,7,7,14,0,14,7,14,14,14,14,7,7,14,7,7,7,7,14,7,7,7,7,14,7,7,7,7,0,0,7,7,7,14,14,7,0,7,7,7,7,0,0,7,7,0,7,7,21,14,14,14,14,0,14,28,21,14,28,14,14,21,14,21,14,14,21,14,14,14,14,21,21,7,14,21,0,0,21,21,7,28,14,7,0,14,14,14,14,0,0,21,14,0,21,14,14,14,14,7,7,14,0,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,21,14,14,14,14,28,14,0,22,14,28,16,14,21,14,21,14,15,21,14,14,14,14,21,21,7,14,21,0,0,21,21,8,29,14,7,0,14,14,14,14,0,1,21,14,0,21,14,14,14,14,14,14,21,14,22,0,14,21,16,14,21,14,14,14,15,21,14,14,14,7,21,14,7,14,14,0,0,14,14,8,23,14,7,0,14,14,14,14,0,1,14,14,0,14,7,7,10,7,14,14,14,7,14,14,0,16,9,7,16,7,7,9,7,14,9,7,7,11,16,9,7,11,9,0,0,7,7,7,14,16,11,0,7,7,9,7,0,0,10,7,0,7,7,21,14,14,14,14,28,14,28,21,16,0,16,14,23,14,21,16,14,21,16,14,14,16,21,23,7,16,21,0,0,21,21,7,28,14,9,0,14,14,14,14,0,0,21,14,0,21,14,14,14,14,7,7,14,14,16,16,9,16,0,14,16,14,14,16,15,14,16,14,14,9,14,16,7,16,14,0,0,14,14,8,15,7,9,0,14,7,14,14,0,1,14,14,0,14,7,14,14,14,7,7,14,14,14,14,7,14,14,0,14,14,14,14,14,14,14,14,14,7,14,16,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,14,14,14,14,14,21,14,21,21,16,23,16,14,0,14,14,16,14,21,16,14,14,9,21,16,7,16,14,0,0,14,14,7,21,14,9,0,14,14,14,14,0,0,14,14,0,14,7,14,14,14,7,7,14,14,14,14,7,14,14,14,14,0,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,0,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,14,14,14,7,7,14,14,14,14,9,16,16,14,16,14,14,0,14,14,16,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,0,14,7,14,14,14,7,7,14,14,15,15,7,14,15,14,14,14,14,14,0,14,14,14,14,7,14,14,7,14,14,0,0,14,14,8,16,7,7,0,14,7,14,14,0,1,14,14,0,14,7,14,14,14,14,14,21,14,21,21,14,21,14,14,21,14,14,14,14,0,14,14,14,7,21,14,7,14,14,0,0,14,14,7,21,14,7,0,14,14,14,14,0,0,14,14,0,14,7,14,14,14,7,7,14,14,14,14,9,16,16,14,16,14,14,16,14,14,0,14,14,9,14,16,7,16,14,0,0,14,14,7,14,7,9,0,14,7,14,14,0,0,14,14,0,14,7,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,0,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,0,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,0,14,7,14,9,7,7,7,14,7,14,7,11,16,9,7,9,7,14,9,7,7,9,7,7,0,9,16,7,11,16,0,0,14,14,7,14,9,11,0,7,0,9,7,0,0,16,7,0,14,14,14,16,14,14,14,21,14,21,21,16,21,14,14,21,14,14,14,14,21,14,14,14,9,0,14,7,16,16,0,0,14,14,7,21,16,9,0,14,14,16,14,0,0,16,14,0,14,7,21,14,14,7,7,21,14,21,14,9,23,16,16,16,14,21,16,14,14,16,14,14,16,14,0,7,16,21,0,0,21,21,7,21,7,9,0,14,7,14,14,0,0,21,14,0,21,14,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,7,7,1,1,7,7,8,8,7,7,1,7,0,8,7,1,0,7,8,0,7,7,14,16,14,7,7,14,14,14,14,11,16,16,14,16,14,14,16,14,14,16,14,14,11,16,16,7,0,16,0,0,14,14,7,14,9,11,0,14,7,16,14,0,0,16,14,0,14,7,21,16,14,7,7,21,14,21,14,9,21,14,14,14,14,21,14,14,14,14,14,14,16,16,21,7,16,0,0,0,21,21,7,21,9,9,0,14,7,16,14,0,0,23,14,0,21,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,0,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,0,7,21,7,7,0,14,7,14,14,0,0,21,14,0,21,14,7,7,7,7,7,7,7,8,8,7,7,8,7,7,7,7,7,8,7,7,7,7,7,7,7,8,7,7,1,1,7,7,0,9,7,7,1,7,0,8,7,1,1,7,8,0,7,7,21,14,14,14,14,28,14,29,23,14,28,15,14,21,14,21,14,16,21,14,14,14,14,21,21,8,14,21,1,1,21,21,9,0,14,7,1,14,14,15,14,1,1,21,15,0,21,14,7,9,7,14,14,14,7,14,14,16,14,7,7,14,7,7,7,7,14,7,7,7,9,16,7,7,9,9,0,0,7,7,7,14,0,9,0,7,7,9,7,0,0,9,7,0,7,7,7,9,7,7,7,7,7,7,7,11,9,9,7,9,7,7,9,7,7,9,7,7,11,9,9,7,11,9,0,0,7,7,7,7,9,0,0,7,0,9,7,0,0,9,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,0,7,14,14,0,0,14,14,0,14,7,7,7,7,7,7,14,7,14,14,7,14,7,7,14,7,7,7,7,14,7,7,7,0,14,7,0,7,7,0,0,7,7,0,14,7,0,0,7,0,7,7,0,0,7,7,0,7,0,14,16,14,7,7,14,14,14,14,9,14,14,14,14,14,14,14,14,14,14,14,14,9,16,14,8,16,16,1,1,14,14,8,15,9,9,1,14,7,0,14,1,0,16,15,0,14,7,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,0,0,0,14,14,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,17,14,7,7,21,14,21,14,10,21,14,14,14,14,21,14,14,14,14,14,14,16,16,21,7,16,23,0,0,21,21,7,21,9,9,0,14,7,16,14,0,0,0,14,0,21,14,14,14,14,7,7,14,14,14,14,7,14,14,14,14,14,14,14,14,14,14,14,14,7,14,14,8,14,14,1,1,14,14,8,15,7,7,1,14,7,15,14,1,0,14,0,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,0,14,14,7,7,7,7,14,7,14,7,7,14,7,7,7,7,14,7,7,7,7,7,7,14,7,14,7,7,14,0,0,14,14,7,14,7,7,0,7,0,7,7,0,0,14,7,0,14,0,0,18,17,8,10,25,25,23,16,8,24,14,25,17,26,31,22,16,17,24,24,25,22,17,23,12,22,24,0,0,25,24,9,25,10,9,0,25,10,17,17,0,5,25,19,21,0,19,18,0,17,8,10,18,18,16,16,8,15,14,18,15,17,17,15,16,17,15,17,18,8,17,16,10,15,17,0,0,18,17,9,16,10,9,0,18,10,17,17,0,3,18,17,14,0,10,17,17,0,8,11,17,17,17,16,8,15,14,19,15,17,17,15,17,17,16,17,17,8,18,17,10,16,18,0,0,17,17,9,16,11,10,0,17,11,17,17,0,2,17,17,14,0,11,8,8,8,0,8,8,8,7,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,0,8,10,10,11,8,0,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,0,11,25,18,17,8,10,0,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,25,17,21,0,17,25,18,17,8,10,18,0,16,16,8,15,14,25,15,24,24,22,16,17,22,24,25,15,17,16,10,22,17,0,0,18,17,9,16,10,9,0,25,10,17,17,0,3,18,17,14,0,10,23,16,17,7,10,23,16,0,16,7,21,14,17,14,16,23,14,17,16,15,16,16,14,17,22,9,14,24,0,0,23,23,9,23,10,8,0,16,10,16,16,0,2,23,16,21,0,17,16,16,16,7,9,16,16,16,0,7,14,14,16,14,16,16,14,16,16,14,16,16,7,16,14,9,14,16,0,0,16,16,9,16,9,7,0,16,9,16,16,0,2,16,16,14,0,9,8,8,8,8,8,8,8,7,7,0,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,0,8,24,15,15,8,8,22,15,21,14,8,0,14,15,17,17,22,15,14,15,17,15,15,15,15,22,10,15,22,0,0,22,22,7,23,8,8,0,15,8,15,15,0,2,22,17,21,0,17,14,14,14,7,7,14,14,14,14,7,14,0,14,14,14,14,14,14,14,14,14,14,7,14,14,7,14,14,0,0,14,14,7,14,7,7,0,14,7,14,14,0,0,14,14,14,0,7,25,18,19,8,11,18,25,17,16,8,15,14,0,15,24,24,22,17,17,23,24,25,15,18,18,10,23,18,0,0,18,17,9,16,11,11,0,25,11,17,17,0,3,18,17,14,0,11,17,15,15,8,8,15,15,14,14,8,17,14,15,0,17,15,15,14,15,17,15,15,8,15,15,10,15,15,0,0,15,15,7,16,8,8,0,15,8,15,15,0,2,15,17,14,0,10,26,17,17,8,10,17,24,16,16,8,17,14,24,17,0,24,22,16,17,24,24,24,15,17,15,12,22,17,0,0,17,17,9,18,10,8,0,24,10,17,17,0,4,17,19,14,0,12,31,17,17,8,10,24,24,23,16,8,22,14,24,15,24,0,22,16,17,22,24,24,22,17,22,10,22,24,0,0,24,24,9,23,10,8,0,24,10,17,17,0,2,24,17,21,0,17,22,15,15,8,8,15,22,14,14,8,15,14,22,15,22,22,0,14,15,22,22,22,15,15,15,8,22,15,0,0,15,15,7,14,8,8,0,22,8,15,15,0,0,15,15,14,0,8,16,16,17,7,10,16,16,17,16,7,14,14,17,14,16,16,14,0,16,15,16,16,7,17,15,9,14,17,0,0,16,16,9,16,10,8,0,16,10,16,16,0,2,16,16,14,0,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,0,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,17,0,2,17,17,14,0,10,24,15,16,8,9,15,22,15,14,8,17,14,23,17,24,22,22,15,15,0,22,22,15,16,16,10,22,16,0,0,15,15,7,16,9,9,0,22,9,15,15,0,2,15,17,14,0,11,24,17,17,8,10,17,24,16,16,8,15,14,24,15,24,24,22,16,17,22,0,24,15,17,15,10,22,17,0,0,17,17,9,16,10,8,0,24,10,17,17,0,2,17,17,14,0,10,25,18,17,8,10,18,25,16,16,8,15,14,25,15,24,24,22,16,17,22,24,0,15,17,16,10,22,17,0,0,18,17,9,16,10,9,0,25,10,17,17,0,3,18,17,14,0,10,22,8,8,8,8,15,15,14,7,8,15,7,15,8,15,22,15,7,8,15,15,15,0,8,15,8,15,15,0,0,15,15,7,14,8,8,0,15,1,8,8,0,0,15,8,14,0,15,17,17,18,8,11,17,17,17,16,8,15,14,18,15,17,17,15,17,17,16,17,17,8,0,16,10,15,18,0,0,17,17,9,16,11,9,0,17,11,17,17,0,2,17,17,14,0,11,23,16,17,8,9,23,16,22,14,8,22,14,18,15,15,22,15,15,15,16,15,16,15,16,0,8,16,23,0,0,23,22,7,21,9,11,0,16,9,15,15,0,1,23,15,21,0,16,12,10,10,8,10,10,10,9,9,8,10,7,10,10,12,10,8,9,10,10,10,10,8,10,8,0,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,12,7,0,12,22,15,16,8,8,15,22,14,14,8,15,14,23,15,22,22,22,14,15,22,22,22,15,15,16,8,0,15,0,0,15,15,7,14,8,9,0,22,8,15,15,0,0,15,15,14,0,8,24,17,18,8,11,24,17,24,16,8,22,14,18,15,17,24,15,17,17,16,17,17,15,18,23,10,15,0,0,0,24,24,9,23,11,9,0,17,11,17,17,0,2,24,17,21,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,18,17,8,10,25,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,0,24,9,23,10,9,0,18,10,17,17,0,3,25,17,21,0,17,24,17,17,8,10,24,17,23,16,8,22,14,17,15,17,24,15,16,17,15,17,17,15,17,22,10,15,24,0,0,24,0,9,23,10,8,0,17,10,17,17,0,2,24,17,21,0,17,9,9,9,7,9,9,9,9,9,7,7,7,9,7,9,9,7,9,9,7,9,9,7,9,7,9,7,9,0,0,9,9,0,9,9,7,0,9,2,9,9,0,2,9,9,7,0,9,25,16,16,7,9,23,16,23,16,7,23,14,16,16,18,23,14,16,16,16,16,16,14,16,21,11,14,23,0,0,23,23,9,0,9,7,0,16,9,16,16,0,4,23,18,21,0,18,10,10,11,8,11,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,0,9,0,10,4,10,10,0,2,10,10,7,0,11,9,9,10,8,9,9,9,8,7,8,8,7,11,8,8,8,8,8,8,9,8,9,8,9,11,8,9,9,0,0,9,8,7,7,9,0,0,9,2,8,8,0,1,9,8,7,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,18,17,8,10,18,25,16,16,8,15,14,25,15,24,24,22,16,17,22,24,25,15,17,16,10,22,17,0,0,18,17,9,16,10,9,0,0,10,17,17,0,3,18,17,14,0,10,10,10,11,1,4,10,10,10,9,1,8,7,11,8,10,10,8,10,10,9,10,10,1,11,9,3,8,11,0,0,10,10,2,9,4,2,0,10,0,10,10,0,2,10,10,7,0,4,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,0,17,0,2,17,17,14,0,10,17,17,17,8,10,17,17,16,16,8,15,14,17,15,17,17,15,16,17,15,17,17,8,17,15,10,15,17,0,0,17,17,9,16,10,8,0,17,10,17,0,0,2,17,17,14,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,2,0,2,3,3,2,2,0,2,0,3,2,4,2,0,2,2,2,2,3,0,2,1,4,0,2,0,0,3,2,2,4,2,1,0,3,2,2,2,0,0,3,4,0,0,4,25,18,17,8,10,25,18,23,16,8,22,14,18,15,17,24,15,16,17,15,17,18,15,17,23,10,15,24,0,0,25,24,9,23,10,9,0,18,10,17,17,0,3,0,17,21,0,17,19,17,17,8,10,17,17,16,16,8,17,14,17,17,19,17,15,16,17,17,17,17,8,17,15,12,15,17,0,0,17,17,9,18,10,8,0,17,10,17,17,0,4,17,0,14,0,12,21,14,14,7,7,21,14,21,14,7,21,14,14,14,14,21,14,14,14,14,14,14,14,14,21,7,14,21,0,0,21,21,7,21,7,7,0,14,7,14,14,0,0,21,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,10,11,8,11,17,10,17,9,8,17,7,11,10,12,17,8,10,10,11,10,10,15,11,16,12,8,18,0,0,17,17,9,18,11,9,0,10,4,10,10,0,4,17,12,14,0,0,0,11,10,8,10,17,10,16,9,9,21,7,10,14,12,17,8,10,10,13,10,10,15,10,15,12,8,17,0,0,17,17,9,18,10,8,0,10,3,10,10,0,4,18,12,14,19,0,11,0,10,8,10,10,10,9,9,9,9,7,10,9,10,10,8,10,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,11,10,7,10,0,10,10,0,9,11,10,10,11,10,9,9,7,11,9,10,10,9,11,10,9,10,10,8,11,9,10,9,12,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,0,8,8,9,0,8,8,8,8,8,16,9,7,8,9,8,8,9,8,8,8,8,8,8,15,8,15,9,9,0,0,8,8,14,7,8,15,0,8,1,8,8,0,7,8,8,7,8,0,10,10,11,8,0,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,0,17,10,10,8,10,0,10,16,9,8,15,7,10,8,10,17,8,9,10,8,10,10,15,10,15,10,8,17,0,0,17,17,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,10,10,10,8,10,10,0,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,16,9,11,8,10,16,9,0,10,8,15,7,10,8,9,16,8,11,9,8,9,9,14,10,15,9,8,18,0,0,16,16,9,16,10,8,0,9,3,9,9,0,2,16,9,14,17,0,9,9,10,8,9,9,9,10,0,8,8,7,9,8,9,9,8,10,9,7,9,9,7,9,7,9,8,10,0,0,9,9,9,9,9,7,0,9,2,9,9,0,2,9,9,7,9,0,9,9,9,16,8,8,8,8,8,0,10,7,8,10,8,8,9,9,8,8,8,8,8,15,8,15,9,9,0,0,8,8,14,7,8,15,0,8,1,8,8,0,7,9,8,7,8,0,21,9,9,9,8,15,8,15,8,10,0,7,8,15,10,15,9,9,8,13,8,8,15,8,15,10,9,16,0,0,15,15,7,16,8,8,0,8,1,8,8,0,2,16,10,14,17,0,7,7,7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,7,7,7,7,7,7,0,7,0,7,7,0,0,7,7,7,7,0,10,10,11,8,11,10,10,10,9,8,8,7,0,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,11,9,0,10,4,10,10,0,2,10,10,7,11,0,14,9,9,9,8,8,8,8,8,10,15,7,8,0,10,8,9,9,8,13,8,8,8,8,8,10,9,9,0,0,8,8,7,9,8,8,0,8,1,8,8,0,2,9,10,7,10,0,12,10,10,8,10,10,10,9,9,8,10,7,10,10,0,10,8,9,10,10,10,10,8,10,8,12,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,12,7,12,0,17,10,10,8,10,17,10,16,9,8,15,7,10,8,10,0,8,9,10,8,10,10,15,10,15,10,8,17,0,0,17,17,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,8,8,9,9,8,8,8,8,8,9,9,7,8,9,8,8,0,8,8,8,8,8,8,8,8,8,9,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,0,10,10,11,8,10,9,9,11,10,9,9,7,10,9,9,9,8,0,9,8,9,9,7,10,8,9,8,11,0,0,9,9,9,9,10,8,0,9,3,9,9,0,2,10,9,7,10,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,0,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,13,8,9,8,9,8,8,8,7,8,13,7,9,13,10,8,8,8,8,0,8,8,8,9,9,10,8,9,0,0,8,8,7,9,9,9,0,8,2,8,8,0,2,8,10,7,11,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,0,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,0,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,10,0,2,10,10,7,10,0,15,8,8,8,8,15,8,14,7,8,15,7,8,8,8,15,8,7,8,8,8,8,0,8,15,8,8,15,0,0,15,15,7,14,8,8,0,8,1,8,8,0,0,15,8,14,15,0,10,10,11,15,11,10,10,10,9,15,8,7,11,8,10,10,8,10,10,9,10,10,8,0,9,17,8,11,0,0,10,10,16,9,11,16,0,10,4,10,10,0,9,10,10,7,11,0,15,8,9,8,9,15,8,15,7,8,15,7,9,8,8,15,8,8,8,9,8,8,15,9,0,8,8,16,0,0,15,15,7,14,9,9,0,8,2,8,8,0,0,15,8,14,16,0,12,10,10,15,10,10,10,9,9,15,10,7,10,10,12,10,8,9,10,10,10,10,8,17,8,0,8,10,0,0,10,10,16,11,10,15,0,10,3,10,10,0,11,10,12,7,12,0,8,8,9,9,8,8,8,8,8,9,9,7,8,9,8,8,9,8,8,8,8,8,8,8,8,8,0,9,0,0,8,8,7,7,8,8,0,8,1,8,8,0,0,8,8,7,8,0,17,10,12,9,11,17,10,18,10,9,16,7,11,9,10,17,9,11,10,9,10,10,15,11,16,10,9,0,0,0,17,17,9,16,11,9,0,10,4,10,10,0,2,17,10,14,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,10,10,8,10,17,10,16,9,8,15,7,10,8,10,17,8,9,10,8,10,10,15,10,15,10,8,17,0,0,0,17,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,17,10,10,8,10,17,10,16,9,8,15,7,10,8,10,17,8,9,10,8,10,10,15,10,15,10,8,17,0,0,17,0,9,16,10,8,0,10,3,10,10,0,2,17,10,14,17,0,9,9,9,14,9,9,9,9,9,14,7,7,9,7,9,9,7,9,9,7,9,9,7,16,7,16,7,9,0,0,9,9,0,9,9,14,0,9,2,9,9,0,9,9,9,7,9,0,18,9,9,7,9,16,9,16,9,7,16,7,9,9,11,16,7,9,9,9,9,9,14,9,14,11,7,16,0,0,16,16,9,0,9,7,0,9,2,9,9,0,4,16,11,14,18,0,10,10,11,8,11,10,10,10,9,8,8,7,11,8,10,10,8,10,10,9,10,10,8,11,9,10,8,11,0,0,10,10,9,9,0,9,0,10,4,10,10,0,2,10,10,7,11,0,8,8,9,15,9,8,8,8,7,15,8,7,9,8,8,8,8,8,8,9,8,8,8,16,9,15,8,9,0,0,8,8,14,7,9,0,0,8,2,8,8,0,7,8,8,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,0,3,10,10,0,2,10,10,7,10,0,3,3,4,1,4,3,3,3,2,1,1,0,4,1,3,3,1,3,3,2,3,3,1,4,2,3,1,4,0,0,3,3,2,2,4,2,0,3,0,3,3,0,2,3,3,0,4,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,0,10,0,2,10,10,7,10,0,10,10,10,8,10,10,10,9,9,8,8,7,10,8,10,10,8,9,10,8,10,10,8,10,8,10,8,10,0,0,10,10,9,9,10,8,0,10,3,10,0,0,2,10,10,7,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,2,7,2,2,2,2,2,7,2,0,2,2,4,2,0,2,2,2,2,2,0,9,0,11,0,2,0,0,2,2,9,4,2,7,0,2,2,2,2,0,0,2,4,0,4,0,18,11,10,8,10,17,10,16,9,9,16,7,10,9,10,17,8,10,10,8,10,10,15,10,15,10,8,17,0,0,17,17,9,16,10,8,0,10,3,10,10,0,2,0,10,14,17,0,12,10,10,8,10,10,10,9,9,8,10,7,10,10,12,10,8,9,10,10,10,10,8,10,8,12,8,10,0,0,10,10,9,11,10,8,0,10,3,10,10,0,4,10,0,7,12,0,14,7,7,7,7,14,7,14,7,7,14,7,7,7,7,14,7,7,7,7,7,7,14,7,14,7,7,14,0,0,14,14,7,14,7,7,0,7,0,7,7,0,0,14,7,0,14,0,19,10,11,8,11,17,10,17,9,8,17,7,11,10,12,17,8,10,10,11,10,10,15,11,16,12,8,18,0,0,17,17,9,18,11,9,0,10,4,10,10,0,4,17,12,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} + +func PairAffinity(a, b Character) int { + i, ok := characterIndex(a.ID) + if !ok { + return 0 + } + j, ok := characterIndex(b.ID) + if !ok { + return 0 + } + return int(pairAffinity[i*48 + j]) +} + +func TrioAffinity(a, b, c Character) int { + i, ok := characterIndex(a.ID) + if !ok { + return 0 + } + j, ok := characterIndex(b.ID) + if !ok { + return 0 + } + k, ok := characterIndex(c.ID) + if !ok { + return 0 + } + return int(trioAffinity[i*48*48 + j*48 + k]) +} + diff --git a/doc/README.md b/doc/README.md index 8d6e110..997546b 100644 --- a/doc/README.md +++ b/doc/README.md @@ -166,13 +166,20 @@ ability types: target types: - 0 none (second and third abilities on skills that only have one) - 1 self +- 2 others who have sympathy? only on autumn neo universe's rare green skill which triggers everyone's sympathy, and there's no target value - 4 others in view +- 7 frontmost? only on daiichi ruby's unique, has a target value of 5 but the description says 先頭から4人まで - 9 others ahead, target_value is number of targets (18 for all) - 10 others behind, target_value is number of targets +- 11 all teammates - 18 others in style, target_value is style (1=front, 2=pace, 3=late, 4=end) - 19 rushing others ahead - 20 rushing others behind - 21 rushing others in style, target_value is style +- 22 specific character, target value is character id +- 23 other who triggered the skill + +TODO target types only in jp: 2, 7, 11, 22, 23 ability_value_usage can be 1 for plain or 2-6 for aoharu stat skill stat scaling diff --git a/horsegen/character.go.template b/horsegen/character.go.template new file mode 100644 index 0000000..2290c65 --- /dev/null +++ b/horsegen/character.go.template @@ -0,0 +1,145 @@ +{{ define "go-character" -}} +package horse + +// Automatically generated with horsegen; DO NOT EDIT + +import ( + "fmt" + "slices" + "strconv" +) + +type Character struct { + ID int16 + Name string +} + +var characterIDs = []int16{ + {{- range $c := $.Characters }} + {{ $c.ID }}, // {{ $c.Name }} + {{- end }} +} + +var characterNames = []string{ + {{- range $c := $.Characters }} + {{ printf "%q" $c.Name }}, + {{- end }} +} + +var characterNameToID = map[string]int16{ + {{- range $c := $.Characters }} + {{ printf "%q" $c.Name }}: {{ $c.ID }}, + {{- end }} +} + +func characterIndex(id int16) (int, bool) { + return slices.BinarySearch(characterIDs, id) +} + +func CharacterForID(id int16) Character { + i, ok := characterIndex(id) + if !ok { + return Character{} + } + return Character{ + ID: id, + Name: characterNames[i], + } +} + +func CharacterForName(name string) Character { + id, ok := characterNameToID[name] + if !ok { + return Character{} + } + return Character{ + ID: id, + Name: name, + } +} + +func (c *Character) MarshalJSON() ([]byte, error) { + // Only marshal legal or empty characters. + if c.ID == 0 { + return []byte{'0'}, nil + } + i, ok := characterIndex(c.ID) + if !ok { + return nil, fmt.Errorf("marshaling character %q with invalid ID %d", c.Name, c.ID) + } + if characterNames[i] != c.Name { + return nil, fmt.Errorf("marshaling character with ID %d: name is %q but should be %q", c.ID, c.Name, characterNames[i]) + } + return strconv.AppendInt(nil, int64(c.ID), 10), nil +} + +func (c *Character) UnmarshalJSON(b []byte) error { + if string(b) == "null" { + return nil + } + id, err := strconv.ParseInt(string(b), 10, 16) + if err != nil { + return fmt.Errorf("unmarshaling invalid character ID %q: %w", b, err) + } + if id == 0 { + *c = Character{} + return nil + } + i, ok := characterIndex(int16(id)) + if !ok { + return fmt.Errorf("unmarshaling unrecognized character ID %d", id) + } + *c = Character{ + ID: int16(id), + Name: characterNames[i], + } + return nil +} + +var pairAffinity = []int8{ + {{- range $a := $.Characters -}} + {{- range $b := $.Characters -}} + {{- index $.PairMaps $a.ID $b.ID -}}, + {{- end -}} + {{- end -}} +} + +var trioAffinity = []int8{ + {{- range $a := $.Characters -}} + {{- range $b := $.Characters -}} + {{- range $c := $.Characters -}} + {{- index $.TrioMaps $a.ID $b.ID $c.ID -}}, + {{- end -}} + {{- end -}} + {{- end -}} +} + +func PairAffinity(a, b Character) int { + i, ok := characterIndex(a.ID) + if !ok { + return 0 + } + j, ok := characterIndex(b.ID) + if !ok { + return 0 + } + return int(pairAffinity[i*{{ $.Count }} + j]) +} + +func TrioAffinity(a, b, c Character) int { + i, ok := characterIndex(a.ID) + if !ok { + return 0 + } + j, ok := characterIndex(b.ID) + if !ok { + return 0 + } + k, ok := characterIndex(c.ID) + if !ok { + return 0 + } + return int(trioAffinity[i*{{ $.Count }}*{{ $.Count }} + j*{{ $.Count }} + k]) +} + +{{ end }} \ No newline at end of file diff --git a/horsegen/gen.go b/horsegen/gen.go index 7887eb8..122b717 100644 --- a/horsegen/gen.go +++ b/horsegen/gen.go @@ -2,6 +2,7 @@ package main import ( "embed" + "errors" "fmt" "io" "regexp" @@ -10,7 +11,7 @@ import ( "unicode" ) -//go:embed character.kk.template skill.kk.template +//go:embed character.kk.template skill.kk.template character.go.template skill.go.template var templates embed.FS // LoadTemplates sets up templates to render game data to source code. @@ -18,12 +19,14 @@ func LoadTemplates() (*template.Template, error) { t := template.New("root") t.Funcs(template.FuncMap{ "kkenum": kkenum, + "goenum": goenum, }) return t.ParseFS(templates, "*") } -// ExecCharacterKK renders the Koka character module to w. -func ExecCharacterKK(t *template.Template, w io.Writer, c []NamedID[Character], pairs, trios []AffinityRelation) error { +// ExecCharacter renders the Koka character module to kk and the Go character file to g. +// If either is nil, it is skipped. +func ExecCharacter(t *template.Template, kk, g io.Writer, c []NamedID[Character], pairs, trios []AffinityRelation) error { if len(pairs) != len(c)*len(c) { return fmt.Errorf("there are %d pairs but there must be %d for %d characters", len(pairs), len(c)*len(c), len(c)) } @@ -58,13 +61,20 @@ func ExecCharacterKK(t *template.Template, w io.Writer, c []NamedID[Character], Count int MaxID int }{c, pairs, trios, pm, tm, len(c), maxid} - return t.ExecuteTemplate(w, "koka-character", &data) + var err error + if kk != nil { + err = errors.Join(t.ExecuteTemplate(kk, "koka-character", &data)) + } + if g != nil { + err = errors.Join(t.ExecuteTemplate(g, "go-character", &data)) + } + return err } -func ExecSkillKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup], s []Skill) error { - m := make(map[int][]Skill, len(g)) - u := make(map[int]int, len(g)) - for _, t := range s { +func ExecSkill(t *template.Template, kk, g io.Writer, groups []NamedID[SkillGroup], skills []Skill) error { + m := make(map[int][]Skill, len(groups)) + u := make(map[int]int, len(groups)) + for _, t := range skills { m[t.GroupID] = append(m[t.GroupID], t) if t.Rarity >= 4 { // Add inheritable uniques to u so we can add inherited versions to groups. @@ -72,7 +82,7 @@ func ExecSkillKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup], s [ } } // Now that u is set up, iterate through again and add in inherited skills. - for _, t := range s { + for _, t := range skills { if t.InheritID != 0 { m[u[t.InheritID]] = append(m[u[t.InheritID]], t) } @@ -81,8 +91,15 @@ func ExecSkillKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup], s [ Groups []NamedID[SkillGroup] Skills []Skill Related map[int][]Skill - }{g, s, m} - return t.ExecuteTemplate(w, "koka-skill", &data) + }{groups, skills, m} + var err error + if kk != nil { + err = errors.Join(t.ExecuteTemplate(kk, "koka-skill", &data)) + } + if g != nil { + err = errors.Join(t.ExecuteTemplate(g, "go-skill-data", &data)) + } + return err } func ExecSkillGroupKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup], s []Skill) error { @@ -93,7 +110,7 @@ func ExecSkillGroupKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup] return t.ExecuteTemplate(w, "koka-skill-group", &data) } -const replaceDash = " ,!?/+();#○☆♡'=♪∀゚∴" +const wordSeps = " ,!?/-+();#○☆♡'=♪∀゚∴" var ( kkReplace = func() *strings.Replacer { @@ -111,13 +128,33 @@ var ( "×", "x", "◎", "Lv2", } - for _, c := range replaceDash { + for _, c := range wordSeps { r = append(r, string(c), "-") } return strings.NewReplacer(r...) }() kkMultidash = regexp.MustCompile(`-+`) kkDashNonletter = regexp.MustCompile(`-[^A-Za-z]`) + + goReplace = func() *strings.Replacer { + r := []string{ + "Triple 7s", "TripleSevens", + "1,500,000 CC", "OneMillionCC", + "15,000,000 CC", "FifteenMillionCC", + "1st", "First", + "♡ 3D Nail Art", "NailArt", + ".", "", + "&", "And", + "'s", "s", + "∞", "Infinity", + "×", "X", + "◎", "Lv2", + } + for _, c := range wordSeps { + r = append(r, string(c), "") + } + return strings.NewReplacer(r...) + }() ) func kkenum(name string) string { @@ -144,3 +181,14 @@ func kkenum(name string) string { } return name } + +func goenum(name string) string { + // go names are a bit more lax, so we need fewer checks + orig := name + name = goReplace.Replace(name) + if len(name) == 0 { + panic(fmt.Errorf("%q became empty as Go enum variant", orig)) + } + name = strings.ToUpper(name[:1]) + name[1:] + return name +} diff --git a/horsegen/main.go b/horsegen/main.go index 6951606..f9bbe72 100644 --- a/horsegen/main.go +++ b/horsegen/main.go @@ -15,11 +15,12 @@ import ( func main() { var ( - mdb string - out string + mdb string + kkOut, goOut string ) flag.StringVar(&mdb, "mdb", os.ExpandEnv(`$USERPROFILE\AppData\LocalLow\Cygames\Umamusume\master\master.mdb`), "`path` to Umamusume master.mdb") - flag.StringVar(&out, "kk", `.\horse`, "existing `dir`ectory for output Koka files") + flag.StringVar(&kkOut, "kk", `.\horse`, "existing `dir`ectory for output Koka files") + flag.StringVar(&goOut, "go", `.`, "existing `dir`ectory for output Go files") flag.Parse() pctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) @@ -86,23 +87,28 @@ func main() { eg, ctx = errgroup.WithContext(pctx) eg.Go(func() error { - cf, err := os.Create(filepath.Join(out, "character.kk")) + cf, err := os.Create(filepath.Join(kkOut, "character.kk")) + if err != nil { + return err + } + gf, err := os.Create(filepath.Join(goOut, "character.go")) if err != nil { return err } slog.Info("write characters") - return ExecCharacterKK(t, cf, charas, pairs, trios) + return ExecCharacter(t, cf, gf, charas, pairs, trios) }) eg.Go(func() error { - sf, err := os.Create(filepath.Join(out, "skill.kk")) + sf, err := os.Create(filepath.Join(kkOut, "skill.kk")) if err != nil { return err } + gf, err := os.Create(filepath.Join(goOut, "skill_data.go")) slog.Info("write skills") - return ExecSkillKK(t, sf, sg, skills) + return ExecSkill(t, sf, gf, sg, skills) }) eg.Go(func() error { - sf, err := os.Create(filepath.Join(out, "skill-group.kk")) + sf, err := os.Create(filepath.Join(kkOut, "skill-group.kk")) if err != nil { return err } diff --git a/horsegen/skill.go.template b/horsegen/skill.go.template new file mode 100644 index 0000000..dc97eca --- /dev/null +++ b/horsegen/skill.go.template @@ -0,0 +1,70 @@ +{{- define "go-skill-data" -}} +package horse + +// Automatically generated with horsegen; DO NOT EDIT + +//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type SkillID -trimprefix Skill -linecomment +const ( + {{- range $s := $.Skills }} + Skill{{ goenum $s.Name }}{{ if ne $s.InheritID 0 }}Inherit{{ end }} SkillID = {{ $s.ID }} // {{ $s.Name }} + {{- end }} +) + +var AllSkills = map[SkillID]Skill{ + {{- range $s := $.Skills }} + Skill{{ goenum $s.Name }}{{ if ne $s.InheritID 0 }}Inherit{{ end }}: { + {{ $s.ID }}, + {{ printf "%q" $s.Name }}, + {{ printf "%q" $s.Description }}, + {{ $s.GroupID }}, + {{ $s.Rarity }}, + {{ $s.GroupRate }}, + {{ $s.GradeValue }}, + {{ $s.WitCheck }}, + []Activation{ + {{- range $a := $s.Activations }} + {{- if ne $a.Condition "" }} + { + {{ printf "%q" $a.Precondition }}, + {{ printf "%q" $a.Condition }}, + {{ $a.Duration }}, + {{ $a.Cooldown }}, + []Ability{ + {{- range $abil := $a.Abilities }} + {{- if ne $abil.Type 0 }} + { + {{ if eq $abil.Type 1 -}}AbilityPassiveSpeed, + {{ else if eq $abil.Type 2 -}}AbilityPassiveStamina, + {{ else if eq $abil.Type 3 -}}AbilityPassivePower, + {{ else if eq $abil.Type 4 -}}AbilityPassiveGuts, + {{ else if eq $abil.Type 5 -}}AbilityPassiveWit, + {{ else if eq $abil.Type 6 -}}AbilityGreatEscape, + {{ else if eq $abil.Type 8 -}}AbilityVision, + {{ else if eq $abil.Type 9 -}}AbilityHP, + {{ else if eq $abil.Type 10 -}}AbilityGateDelay, + {{ else if eq $abil.Type 13 -}}AbilityFrenzy, + {{ else if eq $abil.Type 21 -}}AbilityCurrentSpeed, + {{ else if eq $abil.Type 27 -}}AbilityTargetSpeed, + {{ else if eq $abil.Type 28 -}}AbilityLaneSpeed, + {{ else if eq $abil.Type 31 -}}AbilityAccel, + {{ else if eq $abil.Type 35 -}}AbilityLaneChange, + {{ else }}??? $abil.Type={{$abil.Type}} + {{ end -}} + {{ $abil.ValueUsage }}, + {{ $abil.Value }}, + {{ $abil.Target }}, + {{ $abil.TargetValue }}, + }, + {{- end }} + {{- end }} + }, + }, + {{- end }} + {{- end }} + }, + {{ $s.SPCost }}, + {{ $s.IconID }}, + }, + {{- end }} +} +{{ end }} \ No newline at end of file diff --git a/skill.go b/skill.go new file mode 100644 index 0000000..b04c03d --- /dev/null +++ b/skill.go @@ -0,0 +1,57 @@ +package horse + +type SkillID int32 + +// Skill is the internal data about a skill. +type Skill struct { + ID SkillID + Name string + Description string + Group int32 + Rarity int8 + GroupRate int8 + GradeValue int32 + WitCheck bool + Activations []Activation + SPCost int + IconID int +} + +// Activation is the parameters controlling when a skill activates. +type Activation struct { + Precondition string + Condition string + Duration int // 1e4 scale + Cooldown int // 1e4 scale + Abilities []Ability +} + +// Ability is an individual effect applied by a skill. +type Ability struct { + Type AbilityType + ValueUsage int8 + Value int32 + Target int8 + TargetValue int32 +} + +type AbilityType int8 + +//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type AbilityType -trimprefix Ability +const ( + AbilityPassiveSpeed AbilityType = 1 + AbilityPassiveStamina AbilityType = 2 + AbilityPassivePower AbilityType = 3 + AbilityPassiveGuts AbilityType = 4 + AbilityPassiveWit AbilityType = 5 + AbilityGreatEscape AbilityType = 6 + AbilityVision AbilityType = 8 + AbilityHP AbilityType = 9 + AbilityGateDelay AbilityType = 10 + AbilityFrenzy AbilityType = 13 + AbilityCurrentSpeed AbilityType = 21 + AbilityTargetSpeed AbilityType = 27 + AbilityLaneSpeed AbilityType = 28 + AbilityAccel AbilityType = 31 + AbilityLaneChange AbilityType = 35 +) diff --git a/skill_data.go b/skill_data.go new file mode 100644 index 0000000..60bb3a2 --- /dev/null +++ b/skill_data.go @@ -0,0 +1,15217 @@ +package horse + +// Automatically generated with horsegen; DO NOT EDIT + +//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type SkillID -trimprefix Skill -linecomment +const ( + SkillWarningShot SkillID = 10071 // Warning Shot! + SkillXceleration SkillID = 10081 // Xceleration + SkillRedAce SkillID = 10091 // Red Ace + SkillFocusedMind SkillID = 10111 // Focused Mind + SkillCorazónArdiente SkillID = 10141 // Corazón ☆ Ardiente + SkillEmpresssPride SkillID = 10181 // Empress's Pride + SkillFirstPlaceKiss SkillID = 10241 // 1st Place Kiss☆ + SkillFeeltheBurn SkillID = 10271 // Feel the Burn! + SkillIntroductiontoPhysiology SkillID = 10321 // Introduction to Physiology + SkillVIsforVictory SkillID = 10351 // V Is for Victory! + SkillClassRepSpeedBakushin SkillID = 10411 // Class Rep + Speed = Bakushin + SkillClearHeart SkillID = 10451 // Clear Heart + SkillSuperDuperStoked SkillID = 10521 // Super-Duper Stoked + SkillLuckBewithMe SkillID = 10561 // Luck Be with Me! + SkillICanWinSometimesRight SkillID = 10601 // I Can Win Sometimes, Right? + SkillCallMeKing SkillID = 10611 // Call Me King + SkillShootingStar SkillID = 100011 // Shooting Star + SkillTheViewfromtheLeadIsMine SkillID = 100021 // The View from the Lead Is Mine! + SkillSkyHighTeioStep SkillID = 100031 // Sky-High Teio Step + SkillRedShiftLP1211M SkillID = 100041 // Red Shift/LP1211-M + SkillLightsofVaudeville SkillID = 100051 // Lights of Vaudeville + SkillTriumphantPulse SkillID = 100061 // Triumphant Pulse + SkillAnchorsAweigh SkillID = 100071 // Anchors Aweigh! + SkillCutandDrive SkillID = 100081 // Cut and Drive! + SkillResplendentRedAce SkillID = 100091 // Resplendent Red Ace + SkillShootingforVictory SkillID = 100101 // Shooting for Victory! + SkillWhereTheresaWillTheresaWay SkillID = 100111 // Where There's a Will, There's a Way + SkillYouandMeOneonOne SkillID = 100121 // You and Me! One-on-One! + SkillTheDutyofDignityCalls SkillID = 100131 // The Duty of Dignity Calls + SkillVictoriaporplancha SkillID = 100141 // Victoria por plancha ☆ + SkillThisDanceIsforVittoria SkillID = 100151 // This Dance Is for Vittoria! + SkillShadowBreak SkillID = 100161 // Shadow Break + SkillBeholdThineEmperorsDivineMight SkillID = 100171 // Behold Thine Emperor's Divine Might + SkillBlazingPride SkillID = 100181 // Blazing Pride + SkillOMGTheFinalSprint SkillID = 100191 // OMG! (゚∀゚) The Final Sprint! ☆ + SkillAnglingandScheming SkillID = 100201 // Angling and Scheming + SkillWinQED SkillID = 100231 // ∴win Q.E.D. + SkillFlashyLanding SkillID = 100241 // Flashy☆Landing + SkillChasingAfterYou SkillID = 100251 // Chasing After You + SkillG00FirstFInfinity SkillID = 100261 // G00 1st. F∞; + SkillLetsPumpSomeIron SkillID = 100271 // Let's Pump Some Iron! + SkillYUMMYSPEED SkillID = 100281 // YUMMY☆SPEED! + SkillBlueRoseCloser SkillID = 100301 // Blue Rose Closer + SkillUma2 SkillID = 100321 // U=ma2 + SkillOurTickettoWin SkillID = 100351 // Our Ticket to Win! + SkillSchwarzesSchwert SkillID = 100371 // Schwarzes Schwert + SkillLookatCurren SkillID = 100381 // #LookatCurren + SkillAPrincessMustSeizeVictory SkillID = 100391 // A Princess Must Seize Victory! + SkillKEEPITREAL SkillID = 100401 // KEEP IT REAL. + SkillGeniusxBakushinVictory SkillID = 100411 // Genius x Bakushin = Victory + SkillPureHeart SkillID = 100451 // Pure Heart + SkillSPARKLYSTARDOM SkillID = 100461 // SPARKLY☆STARDOM + SkillPopAndPolish SkillID = 100481 // Pop & Polish + SkillNemesis SkillID = 100501 // Nemesis + SkillSuperDuperClimax SkillID = 100521 // Super-Duper Climax + SkillISeeVictoryinMyFuture SkillID = 100561 // I See Victory in My Future! + SkillINeverGoofUp SkillID = 100581 // I Never Goof Up! + SkillMovingPastandBeyond SkillID = 100591 // Moving Past, and Beyond + SkillJustaLittleFarther SkillID = 100601 // Just a Little Farther! + SkillPridefulKing SkillID = 100611 // Prideful King + SkillDazzlnDiver SkillID = 110011 // Dazzl'n ♪ Diver + SkillCertainVictory SkillID = 110031 // Certain Victory + SkillAKissforCourage SkillID = 110041 // A Kiss for Courage + SkillFestiveMiracle SkillID = 110061 // Festive Miracle + SkillSuperiorHeal SkillID = 110111 // Superior Heal + SkillLegacyoftheStrong SkillID = 110131 // Legacy of the Strong + SkillCondorsFury SkillID = 110141 // Condor's Fury + SkillArrowsWhistleShadowsDisperse SkillID = 110171 // Arrows Whistle, Shadows Disperse + SkillEternalMoments SkillID = 110181 // Eternal Moments + SkillPresentsfromX SkillID = 110231 // Presents from X + SkillFloweryManeuver SkillID = 110241 // Flowery☆Maneuver + SkillEveryRoseHasItsFangs SkillID = 110301 // Every Rose Has Its Fangs + SkillDancingintheLeaves SkillID = 110401 // Dancing in the Leaves + SkillGiveMummyaHug SkillID = 110451 // Give Mummy a Hug ♡ + SkillBountifulHarvest SkillID = 110561 // Bountiful Harvest + SkillRightHandedLv2 SkillID = 200011 // Right-Handed ◎ + SkillRightHanded SkillID = 200012 // Right-Handed ○ + SkillRightHandedX SkillID = 200013 // Right-Handed × + SkillLeftHandedLv2 SkillID = 200021 // Left-Handed ◎ + SkillLeftHanded SkillID = 200022 // Left-Handed ○ + SkillLeftHandedX SkillID = 200023 // Left-Handed × + SkillTokyoRacecourseLv2 SkillID = 200031 // Tokyo Racecourse ◎ + SkillTokyoRacecourse SkillID = 200032 // Tokyo Racecourse ○ + SkillTokyoRacecourseX SkillID = 200033 // Tokyo Racecourse × + SkillNakayamaRacecourseLv2 SkillID = 200041 // Nakayama Racecourse ◎ + SkillNakayamaRacecourse SkillID = 200042 // Nakayama Racecourse ○ + SkillNakayamaRacecourseX SkillID = 200043 // Nakayama Racecourse × + SkillHanshinRacecourseLv2 SkillID = 200051 // Hanshin Racecourse ◎ + SkillHanshinRacecourse SkillID = 200052 // Hanshin Racecourse ○ + SkillHanshinRacecourseX SkillID = 200053 // Hanshin Racecourse × + SkillKyotoRacecourseLv2 SkillID = 200061 // Kyoto Racecourse ◎ + SkillKyotoRacecourse SkillID = 200062 // Kyoto Racecourse ○ + SkillKyotoRacecourseX SkillID = 200063 // Kyoto Racecourse × + SkillYodoInvicta SkillID = 200064 // Yodo Invicta + SkillChukyoRacecourseLv2 SkillID = 200071 // Chukyo Racecourse ◎ + SkillChukyoRacecourse SkillID = 200072 // Chukyo Racecourse ○ + SkillChukyoRacecourseX SkillID = 200073 // Chukyo Racecourse × + SkillSapporoRacecourseLv2 SkillID = 200081 // Sapporo Racecourse ◎ + SkillSapporoRacecourse SkillID = 200082 // Sapporo Racecourse ○ + SkillSapporoRacecourseX SkillID = 200083 // Sapporo Racecourse × + SkillHakodateRacecourseLv2 SkillID = 200091 // Hakodate Racecourse ◎ + SkillHakodateRacecourse SkillID = 200092 // Hakodate Racecourse ○ + SkillHakodateRacecourseX SkillID = 200093 // Hakodate Racecourse × + SkillFukushimaRacecourseLv2 SkillID = 200101 // Fukushima Racecourse ◎ + SkillFukushimaRacecourse SkillID = 200102 // Fukushima Racecourse ○ + SkillFukushimaRacecourseX SkillID = 200103 // Fukushima Racecourse × + SkillNiigataRacecourseLv2 SkillID = 200111 // Niigata Racecourse ◎ + SkillNiigataRacecourse SkillID = 200112 // Niigata Racecourse ○ + SkillNiigataRacecourseX SkillID = 200113 // Niigata Racecourse × + SkillKokuraRacecourseLv2 SkillID = 200121 // Kokura Racecourse ◎ + SkillKokuraRacecourse SkillID = 200122 // Kokura Racecourse ○ + SkillKokuraRacecourseX SkillID = 200123 // Kokura Racecourse × + SkillStandardDistanceLv2 SkillID = 200131 // Standard Distance ◎ + SkillStandardDistance SkillID = 200132 // Standard Distance ○ + SkillStandardDistanceX SkillID = 200133 // Standard Distance × + SkillNonStandardDistanceLv2 SkillID = 200141 // Non-Standard Distance ◎ + SkillNonStandardDistance SkillID = 200142 // Non-Standard Distance ○ + SkillNonStandardDistanceX SkillID = 200143 // Non-Standard Distance × + SkillFirmConditionsLv2 SkillID = 200151 // Firm Conditions ◎ + SkillFirmConditions SkillID = 200152 // Firm Conditions ○ + SkillFirmConditionsX SkillID = 200153 // Firm Conditions × + SkillWetConditionsLv2 SkillID = 200161 // Wet Conditions ◎ + SkillWetConditions SkillID = 200162 // Wet Conditions ○ + SkillWetConditionsX SkillID = 200163 // Wet Conditions × + SkillSpringRunnerLv2 SkillID = 200171 // Spring Runner ◎ + SkillSpringRunner SkillID = 200172 // Spring Runner ○ + SkillSpringRunnerX SkillID = 200173 // Spring Runner × + SkillSummerRunnerLv2 SkillID = 200181 // Summer Runner ◎ + SkillSummerRunner SkillID = 200182 // Summer Runner ○ + SkillSummerRunnerX SkillID = 200183 // Summer Runner × + SkillFallRunnerLv2 SkillID = 200191 // Fall Runner ◎ + SkillFallRunner SkillID = 200192 // Fall Runner ○ + SkillFallRunnerX SkillID = 200193 // Fall Runner × + SkillFallFrenzy SkillID = 200194 // Fall Frenzy + SkillWinterRunnerLv2 SkillID = 200201 // Winter Runner ◎ + SkillWinterRunner SkillID = 200202 // Winter Runner ○ + SkillWinterRunnerX SkillID = 200203 // Winter Runner × + SkillSunnyDaysLv2 SkillID = 200211 // Sunny Days ◎ + SkillSunnyDays SkillID = 200212 // Sunny Days ○ + SkillCloudyDaysLv2 SkillID = 200221 // Cloudy Days ◎ + SkillCloudyDays SkillID = 200222 // Cloudy Days ○ + SkillRainyDaysLv2 SkillID = 200231 // Rainy Days ◎ + SkillRainyDays SkillID = 200232 // Rainy Days ○ + SkillRainyDaysX SkillID = 200233 // Rainy Days × + SkillSnowyDaysLv2 SkillID = 200241 // Snowy Days ◎ + SkillSnowyDays SkillID = 200242 // Snowy Days ○ + SkillInnerPostProficiencyLv2 SkillID = 200251 // Inner Post Proficiency ◎ + SkillInnerPostProficiency SkillID = 200252 // Inner Post Proficiency ○ + SkillInnerPostAverseness SkillID = 200253 // Inner Post Averseness + SkillOuterPostProficiencyLv2 SkillID = 200261 // Outer Post Proficiency ◎ + SkillOuterPostProficiency SkillID = 200262 // Outer Post Proficiency ○ + SkillOuterPostAverseness SkillID = 200263 // Outer Post Averseness + SkillMaverickLv2 SkillID = 200271 // Maverick ◎ + SkillMaverick SkillID = 200272 // Maverick ○ + SkillCompetitiveSpiritLv2 SkillID = 200281 // Competitive Spirit ◎ + SkillCompetitiveSpirit SkillID = 200282 // Competitive Spirit ○ + SkillWallflower SkillID = 200283 // Wallflower + SkillTargetinSightLv2 SkillID = 200291 // Target in Sight ◎ + SkillTargetinSight SkillID = 200292 // Target in Sight ○ + SkillLongShotLv2 SkillID = 200301 // Long Shot ◎ + SkillLongShot SkillID = 200302 // Long Shot ○ + SkillG1Averseness SkillID = 200311 // G1 Averseness + SkillPaddockFright SkillID = 200321 // Paddock Fright + SkillProfessorofCurvature SkillID = 200331 // Professor of Curvature + SkillCornerAdept SkillID = 200332 // Corner Adept ○ + SkillCornerAdeptX SkillID = 200333 // Corner Adept × + SkillCornerConnoisseur SkillID = 200341 // Corner Connoisseur + SkillCornerAcceleration SkillID = 200342 // Corner Acceleration ○ + SkillCornerAccelerationX SkillID = 200343 // Corner Acceleration × + SkillSwingingMaestro SkillID = 200351 // Swinging Maestro + SkillCornerRecovery SkillID = 200352 // Corner Recovery ○ + SkillCornerRecoveryX SkillID = 200353 // Corner Recovery × + SkillBeelineBurst SkillID = 200361 // Beeline Burst + SkillStraightawayAdept SkillID = 200362 // Straightaway Adept + SkillRushingGale SkillID = 200371 // Rushing Gale! + SkillStraightawayAcceleration SkillID = 200372 // Straightaway Acceleration + SkillBreathofFreshAir SkillID = 200381 // Breath of Fresh Air + SkillStraightawayRecovery SkillID = 200382 // Straightaway Recovery + SkillRampRevulsion SkillID = 200391 // Ramp Revulsion + SkillPackphobia SkillID = 200401 // Packphobia + SkillDefeatist SkillID = 200411 // Defeatist + SkillReckless SkillID = 200421 // Reckless + SkillConcentration SkillID = 200431 // Concentration + SkillFocus SkillID = 200432 // Focus + SkillGatekept SkillID = 200433 // Gatekept + SkillIronWill SkillID = 200441 // Iron Will + SkillLayLow SkillID = 200442 // Lay Low + SkillCenterStage SkillID = 200451 // Center Stage + SkillPrudentPositioning SkillID = 200452 // Prudent Positioning + SkillItsOn SkillID = 200461 // It's On! + SkillRampUp SkillID = 200462 // Ramp Up + SkillIndomitable SkillID = 200471 // Indomitable + SkillPaceStrategy SkillID = 200472 // Pace Strategy + SkillUnruffled SkillID = 200481 // Unruffled + SkillCalminaCrowd SkillID = 200482 // Calm in a Crowd + SkillNoStoppingMe SkillID = 200491 // No Stopping Me! + SkillNimbleNavigator SkillID = 200492 // Nimble Navigator + SkillLaneLegerdemain SkillID = 200501 // Lane Legerdemain + SkillGowiththeFlow SkillID = 200502 // Go with the Flow + SkillInBodyandMind SkillID = 200511 // In Body and Mind + SkillHomestretchHaste SkillID = 200512 // Homestretch Haste + SkillRunningIdle SkillID = 200521 // Running Idle + SkillTakingtheLead SkillID = 200531 // Taking the Lead + SkillEarlyLead SkillID = 200532 // Early Lead + SkillEscapeArtist SkillID = 200541 // Escape Artist + SkillFastPaced SkillID = 200542 // Fast-Paced + SkillUnrestrained SkillID = 200551 // Unrestrained + SkillFinalPush SkillID = 200552 // Final Push + SkillCalmandCollected SkillID = 200561 // Calm and Collected + SkillStaminatoSpare SkillID = 200562 // Stamina to Spare + SkillRacePlanner SkillID = 200571 // Race Planner + SkillPreferredPosition SkillID = 200572 // Preferred Position + SkillSpeedStar SkillID = 200581 // Speed Star + SkillPreparedtoPass SkillID = 200582 // Prepared to Pass + SkillFastAndFurious SkillID = 200591 // Fast & Furious + SkillPositionPilfer SkillID = 200592 // Position Pilfer + SkillOnYourLeft SkillID = 200601 // On Your Left! + SkillSlickSurge SkillID = 200602 // Slick Surge + SkillRisingDragon SkillID = 200611 // Rising Dragon + SkillOuterSwell SkillID = 200612 // Outer Swell + SkillSleepingLion SkillID = 200621 // Sleeping Lion + SkillStandingBy SkillID = 200622 // Standing By + SkillSturmundDrang SkillID = 200631 // Sturm und Drang + SkillMasterfulGambit SkillID = 200632 // Masterful Gambit + SkillEncroachingShadow SkillID = 200641 // Encroaching Shadow + SkillStraightawaySpurt SkillID = 200642 // Straightaway Spurt + SkillTurboSprint SkillID = 200651 // Turbo Sprint + SkillSprintingGear SkillID = 200652 // Sprinting Gear + SkillWaitandSee SkillID = 200662 // Wait-and-See + SkillBlindingFlash SkillID = 200671 // Blinding Flash + SkillGapCloser SkillID = 200672 // Gap Closer + SkillMileMaven SkillID = 200681 // Mile Maven + SkillProductivePlan SkillID = 200682 // Productive Plan + SkillKeenEye SkillID = 200691 // Keen Eye + SkillWatchfulEye SkillID = 200692 // Watchful Eye + SkillFuriousFeat SkillID = 200701 // Furious Feat + SkillUpdrafters SkillID = 200702 // Updrafters + SkillTrackblazer SkillID = 200711 // Trackblazer + SkillRosyOutlook SkillID = 200712 // Rosy Outlook + SkillKillerTunes SkillID = 200721 // Killer Tunes + SkillUpTempo SkillID = 200722 // Up-Tempo + SkillUnyielding SkillID = 200731 // Unyielding + SkillSteadfast SkillID = 200732 // Steadfast + SkillCooldown SkillID = 200741 // Cooldown + SkillDeepBreaths SkillID = 200742 // Deep Breaths + SkillInnateExperience SkillID = 200751 // Innate Experience + SkillInsideScoop SkillID = 200752 // Inside Scoop + SkillAdrenalineRush SkillID = 200761 // Adrenaline Rush + SkillExtraTank SkillID = 200762 // Extra Tank + SkillTrickFront SkillID = 200771 // Trick (Front) + SkillTantalizingTrick SkillID = 200772 // Tantalizing Trick + SkillTrickRear SkillID = 200781 // Trick (Rear) + SkillFrenziedFrontRunners SkillID = 200791 // Frenzied Front Runners + SkillFrenziedPaceChasers SkillID = 200801 // Frenzied Pace Chasers + SkillFrenziedLateSurgers SkillID = 200811 // Frenzied Late Surgers + SkillFrenziedEndClosers SkillID = 200821 // Frenzied End Closers + SkillSubduedFrontRunners SkillID = 200831 // Subdued Front Runners + SkillFlusteredFrontRunners SkillID = 200841 // Flustered Front Runners + SkillHesitantFrontRunners SkillID = 200851 // Hesitant Front Runners + SkillSubduedPaceChasers SkillID = 200861 // Subdued Pace Chasers + SkillFlusteredPaceChasers SkillID = 200871 // Flustered Pace Chasers + SkillHesitantPaceChasers SkillID = 200881 // Hesitant Pace Chasers + SkillSubduedLateSurgers SkillID = 200891 // Subdued Late Surgers + SkillFlusteredLateSurgers SkillID = 200901 // Flustered Late Surgers + SkillHesitantLateSurgers SkillID = 200911 // Hesitant Late Surgers + SkillSubduedEndClosers SkillID = 200921 // Subdued End Closers + SkillFlusteredEndClosers SkillID = 200931 // Flustered End Closers + SkillHesitantEndClosers SkillID = 200941 // Hesitant End Closers + SkillOiRacecourseLv2 SkillID = 200951 // Oi Racecourse ◎ + SkillOiRacecourse SkillID = 200952 // Oi Racecourse ○ + SkillOiRacecourseX SkillID = 200953 // Oi Racecourse × + SkillSprintStraightawaysLv2 SkillID = 200961 // Sprint Straightaways ◎ + SkillSprintStraightaways SkillID = 200962 // Sprint Straightaways ○ + SkillSprintCornersLv2 SkillID = 200971 // Sprint Corners ◎ + SkillSprintCorners SkillID = 200972 // Sprint Corners ○ + SkillStaggeringLead SkillID = 200981 // Staggering Lead + SkillHugeLead SkillID = 200982 // Huge Lead + SkillPlanX SkillID = 200991 // Plan X + SkillCountermeasure SkillID = 200992 // Countermeasure + SkillPerfectPrep SkillID = 201001 // Perfect Prep! + SkillMeticulousMeasures SkillID = 201002 // Meticulous Measures + SkillAdoredbyAll SkillID = 201011 // Adored by All + SkillIntimidate SkillID = 201012 // Intimidate + SkillYouveGotNoShot SkillID = 201021 // You've Got No Shot + SkillStopRightThere SkillID = 201022 // Stop Right There! + SkillMileStraightawaysLv2 SkillID = 201031 // Mile Straightaways ◎ + SkillMileStraightaways SkillID = 201032 // Mile Straightaways ○ + SkillMileCornersLv2 SkillID = 201041 // Mile Corners ◎ + SkillMileCorners SkillID = 201042 // Mile Corners ○ + SkillChangingGears SkillID = 201051 // Changing Gears + SkillShiftingGears SkillID = 201052 // Shifting Gears + SkillStepontheGas SkillID = 201061 // Step on the Gas! + SkillAcceleration SkillID = 201062 // Acceleration + SkillBigSisterly SkillID = 201071 // Big-Sisterly + SkillUnyieldingSpirit SkillID = 201072 // Unyielding Spirit + SkillGreedforSpeed SkillID = 201081 // Greed for Speed + SkillSpeedEater SkillID = 201082 // Speed Eater + SkillBattleFormation SkillID = 201091 // Battle Formation + SkillOpeningGambit SkillID = 201092 // Opening Gambit + SkillMediumStraightawaysLv2 SkillID = 201101 // Medium Straightaways ◎ + SkillMediumStraightaways SkillID = 201102 // Medium Straightaways ○ + SkillMediumCornersLv2 SkillID = 201111 // Medium Corners ◎ + SkillMediumCorners SkillID = 201112 // Medium Corners ○ + SkillClairvoyance SkillID = 201121 // Clairvoyance + SkillHawkeye SkillID = 201122 // Hawkeye + SkillLightningStep SkillID = 201131 // Lightning Step + SkillThunderboltStep SkillID = 201132 // Thunderbolt Step + SkillMiraculousStep SkillID = 201141 // Miraculous Step + SkillSoftStep SkillID = 201142 // Soft Step + SkillDominator SkillID = 201151 // Dominator + SkillTether SkillID = 201152 // Tether + SkillMystifyingMurmur SkillID = 201161 // Mystifying Murmur + SkillMurmur SkillID = 201162 // Murmur + SkillLongStraightawaysLv2 SkillID = 201171 // Long Straightaways ◎ + SkillLongStraightaways SkillID = 201172 // Long Straightaways ○ + SkillLongCornersLv2 SkillID = 201181 // Long Corners ◎ + SkillLongCorners SkillID = 201182 // Long Corners ○ + SkillVanguardSpirit SkillID = 201191 // Vanguard Spirit + SkillKeepingtheLead SkillID = 201192 // Keeping the Lead + SkillVIPPass SkillID = 201201 // VIP Pass + SkillPassingPro SkillID = 201202 // Passing Pro + SkillOverwhelmingPressure SkillID = 201211 // Overwhelming Pressure + SkillPressure SkillID = 201212 // Pressure + SkillStaminaSiphon SkillID = 201221 // Stamina Siphon + SkillStaminaEater SkillID = 201222 // Stamina Eater + SkillIllusionist SkillID = 201231 // Illusionist + SkillSmokeScreen SkillID = 201232 // Smoke Screen + SkillFrontRunnerStraightawaysLv2 SkillID = 201241 // Front Runner Straightaways ◎ + SkillFrontRunnerStraightaways SkillID = 201242 // Front Runner Straightaways ○ + SkillFrontRunnerCornersLv2 SkillID = 201251 // Front Runner Corners ◎ + SkillFrontRunnerCorners SkillID = 201252 // Front Runner Corners ○ + SkillSixthSense SkillID = 201261 // Sixth Sense + SkillDodgingDanger SkillID = 201262 // Dodging Danger + SkillLeadersPride SkillID = 201272 // Leader's Pride + SkillRestless SkillID = 201281 // Restless + SkillMoxie SkillID = 201282 // Moxie + SkillReignition SkillID = 201291 // Reignition + SkillSecondWind SkillID = 201292 // Second Wind + SkillRestart SkillID = 201302 // Restart + SkillPaceChaserStraightawaysLv2 SkillID = 201311 // Pace Chaser Straightaways ◎ + SkillPaceChaserStraightaways SkillID = 201312 // Pace Chaser Straightaways ○ + SkillPaceChaserCornersLv2 SkillID = 201321 // Pace Chaser Corners ◎ + SkillPaceChaserCorners SkillID = 201322 // Pace Chaser Corners ○ + SkillTechnician SkillID = 201331 // Technician + SkillShrewdStep SkillID = 201332 // Shrewd Step + SkillDeterminedDescent SkillID = 201341 // Determined Descent + SkillStraightDescent SkillID = 201342 // Straight Descent + SkillGourmand SkillID = 201351 // Gourmand + SkillHydrate SkillID = 201352 // Hydrate + SkillShatterproof SkillID = 201361 // Shatterproof + SkillTacticalTweak SkillID = 201362 // Tactical Tweak + SkillDazzlingDisorientation SkillID = 201371 // Dazzling Disorientation + SkillDisorient SkillID = 201372 // Disorient + SkillLateSurgerStraightawaysLv2 SkillID = 201381 // Late Surger Straightaways ◎ + SkillLateSurgerStraightaways SkillID = 201382 // Late Surger Straightaways ○ + SkillLateSurgerCornersLv2 SkillID = 201391 // Late Surger Corners ◎ + SkillLateSurgerCorners SkillID = 201392 // Late Surger Corners ○ + SkillHardWorker SkillID = 201401 // Hard Worker + SkillFighter SkillID = 201402 // Fighter + SkillFifteenMillionCC SkillID = 201411 // 15,000,000 CC + SkillOneMillionCC SkillID = 201412 // 1,500,000 CC + SkillRelax SkillID = 201421 // Relax + SkillASmallBreather SkillID = 201422 // A Small Breather + SkillTheBiggerPicture SkillID = 201431 // The Bigger Picture + SkillStudious SkillID = 201432 // Studious + SkillAllSeeingEyes SkillID = 201441 // All-Seeing Eyes + SkillSharpGaze SkillID = 201442 // Sharp Gaze + SkillEndCloserStraightawaysLv2 SkillID = 201451 // End Closer Straightaways ◎ + SkillEndCloserStraightaways SkillID = 201452 // End Closer Straightaways ○ + SkillEndCloserCornersLv2 SkillID = 201461 // End Closer Corners ◎ + SkillEndCloserCorners SkillID = 201462 // End Closer Corners ○ + SkillTheCoastIsClear SkillID = 201471 // The Coast Is Clear! + SkillICanSeeRightThroughYou SkillID = 201472 // I Can See Right Through You + SkillGoHomeSpecialist SkillID = 201481 // Go-Home Specialist + SkillAfterSchoolStroll SkillID = 201482 // After-School Stroll + SkillSerenity SkillID = 201491 // Serenity + SkillLevelheaded SkillID = 201492 // Levelheaded + SkillCrusader SkillID = 201501 // Crusader + SkillStrategist SkillID = 201502 // Strategist + SkillPetrifyingGaze SkillID = 201511 // Petrifying Gaze + SkillIntenseGaze SkillID = 201512 // Intense Gaze + SkillFrontRunnerSavvyLv2 SkillID = 201521 // Front Runner Savvy ◎ + SkillFrontRunnerSavvy SkillID = 201522 // Front Runner Savvy ○ + SkillPaceChaserSavvyLv2 SkillID = 201531 // Pace Chaser Savvy ◎ + SkillPaceChaserSavvy SkillID = 201532 // Pace Chaser Savvy ○ + SkillLateSurgerSavvyLv2 SkillID = 201541 // Late Surger Savvy ◎ + SkillLateSurgerSavvy SkillID = 201542 // Late Surger Savvy ○ + SkillEndCloserSavvyLv2 SkillID = 201551 // End Closer Savvy ◎ + SkillEndCloserSavvy SkillID = 201552 // End Closer Savvy ○ + SkillSuperLuckySeven SkillID = 201561 // Super Lucky Seven + SkillLuckySeven SkillID = 201562 // Lucky Seven + SkillTripleSevens SkillID = 201571 // Triple 7s + SkillHighlander SkillID = 201581 // Highlander + SkillUmaStan SkillID = 201591 // Uma Stan + SkillSuperstan SkillID = 201592 // Superstan + SkillGroundwork SkillID = 201601 // Groundwork + SkillTailHeldHigh SkillID = 201611 // Tail Held High + SkillShakeItOut SkillID = 201621 // Shake It Out + SkillSympathy SkillID = 201631 // Sympathy + SkillLoneWolf SkillID = 201641 // Lone Wolf + SkillSlipstream SkillID = 201651 // Slipstream + SkillPlaytimesOver SkillID = 201661 // Playtime's Over! + SkillTrendingintheCharts SkillID = 201671 // Trending in the Charts! + SkillTopPick SkillID = 201672 // Top Pick + SkillLeadtheCharge SkillID = 201681 // Lead the Charge! + SkillForwardMarch SkillID = 201682 // Forward, March! + SkillLieinWait SkillID = 201691 // Lie in Wait + SkillBeStill SkillID = 201692 // Be Still + SkillComeWhatMay SkillID = 201701 // Come What May + SkillAllIveGot SkillID = 201702 // All I've Got + SkillNailArt SkillID = 201801 // ♡ 3D Nail Art + SkillHeadOn SkillID = 201902 // Head-On + SkillEarlyStart SkillID = 202022 // Early Start + SkillRiskyBusiness SkillID = 202032 // Risky Business + SkillRunaway SkillID = 202051 // Runaway + SkillBurningSpiritSPD SkillID = 210011 // Burning Spirit SPD + SkillIgnitedSpiritSPD SkillID = 210012 // Ignited Spirit SPD + SkillBurningSpiritSTA SkillID = 210021 // Burning Spirit STA + SkillIgnitedSpiritSTA SkillID = 210022 // Ignited Spirit STA + SkillBurningSpiritPWR SkillID = 210031 // Burning Spirit PWR + SkillIgnitedSpiritPWR SkillID = 210032 // Ignited Spirit PWR + SkillBurningSpiritGUTS SkillID = 210041 // Burning Spirit GUTS + SkillIgnitedSpiritGUTS SkillID = 210042 // Ignited Spirit GUTS + SkillBurningSpiritWIT SkillID = 210051 // Burning Spirit WIT + SkillIgnitedSpiritWIT SkillID = 210052 // Ignited Spirit WIT + SkillUnquenchedThirst SkillID = 300011 // Unquenched Thirst + SkillUnchanging SkillID = 300021 // Unchanging + SkillShootingStarInherit SkillID = 900011 // Shooting Star + SkillTheViewfromtheLeadIsMineInherit SkillID = 900021 // The View from the Lead Is Mine! + SkillSkyHighTeioStepInherit SkillID = 900031 // Sky-High Teio Step + SkillRedShiftLP1211MInherit SkillID = 900041 // Red Shift/LP1211-M + SkillLightsofVaudevilleInherit SkillID = 900051 // Lights of Vaudeville + SkillTriumphantPulseInherit SkillID = 900061 // Triumphant Pulse + SkillAnchorsAweighInherit SkillID = 900071 // Anchors Aweigh! + SkillCutandDriveInherit SkillID = 900081 // Cut and Drive! + SkillResplendentRedAceInherit SkillID = 900091 // Resplendent Red Ace + SkillShootingforVictoryInherit SkillID = 900101 // Shooting for Victory! + SkillWhereTheresaWillTheresaWayInherit SkillID = 900111 // Where There's a Will, There's a Way + SkillYouandMeOneonOneInherit SkillID = 900121 // You and Me! One-on-One! + SkillTheDutyofDignityCallsInherit SkillID = 900131 // The Duty of Dignity Calls + SkillVictoriaporplanchaInherit SkillID = 900141 // Victoria por plancha ☆ + SkillThisDanceIsforVittoriaInherit SkillID = 900151 // This Dance Is for Vittoria! + SkillShadowBreakInherit SkillID = 900161 // Shadow Break + SkillBeholdThineEmperorsDivineMightInherit SkillID = 900171 // Behold Thine Emperor's Divine Might + SkillBlazingPrideInherit SkillID = 900181 // Blazing Pride + SkillOMGTheFinalSprintInherit SkillID = 900191 // OMG! (゚∀゚) The Final Sprint! ☆ + SkillAnglingandSchemingInherit SkillID = 900201 // Angling and Scheming + SkillWinQEDInherit SkillID = 900231 // ∴win Q.E.D. + SkillFlashyLandingInherit SkillID = 900241 // Flashy☆Landing + SkillChasingAfterYouInherit SkillID = 900251 // Chasing After You + SkillG00FirstFInfinityInherit SkillID = 900261 // G00 1st. F∞; + SkillLetsPumpSomeIronInherit SkillID = 900271 // Let's Pump Some Iron! + SkillYUMMYSPEEDInherit SkillID = 900281 // YUMMY☆SPEED! + SkillBlueRoseCloserInherit SkillID = 900301 // Blue Rose Closer + SkillUma2Inherit SkillID = 900321 // U=ma2 + SkillOurTickettoWinInherit SkillID = 900351 // Our Ticket to Win! + SkillSchwarzesSchwertInherit SkillID = 900371 // Schwarzes Schwert + SkillLookatCurrenInherit SkillID = 900381 // #LookatCurren + SkillAPrincessMustSeizeVictoryInherit SkillID = 900391 // A Princess Must Seize Victory! + SkillKEEPITREALInherit SkillID = 900401 // KEEP IT REAL. + SkillGeniusxBakushinVictoryInherit SkillID = 900411 // Genius x Bakushin = Victory + SkillPureHeartInherit SkillID = 900451 // Pure Heart + SkillSPARKLYSTARDOMInherit SkillID = 900461 // SPARKLY☆STARDOM + SkillPopAndPolishInherit SkillID = 900481 // Pop & Polish + SkillNemesisInherit SkillID = 900501 // Nemesis + SkillSuperDuperClimaxInherit SkillID = 900521 // Super-Duper Climax + SkillISeeVictoryinMyFutureInherit SkillID = 900561 // I See Victory in My Future! + SkillINeverGoofUpInherit SkillID = 900581 // I Never Goof Up! + SkillMovingPastandBeyondInherit SkillID = 900591 // Moving Past, and Beyond + SkillJustaLittleFartherInherit SkillID = 900601 // Just a Little Farther! + SkillPridefulKingInherit SkillID = 900611 // Prideful King + SkillDazzlnDiverInherit SkillID = 910011 // Dazzl'n ♪ Diver + SkillCertainVictoryInherit SkillID = 910031 // Certain Victory + SkillAKissforCourageInherit SkillID = 910041 // A Kiss for Courage + SkillFestiveMiracleInherit SkillID = 910061 // Festive Miracle + SkillSuperiorHealInherit SkillID = 910111 // Superior Heal + SkillLegacyoftheStrongInherit SkillID = 910131 // Legacy of the Strong + SkillCondorsFuryInherit SkillID = 910141 // Condor's Fury + SkillArrowsWhistleShadowsDisperseInherit SkillID = 910171 // Arrows Whistle, Shadows Disperse + SkillEternalMomentsInherit SkillID = 910181 // Eternal Moments + SkillPresentsfromXInherit SkillID = 910231 // Presents from X + SkillFloweryManeuverInherit SkillID = 910241 // Flowery☆Maneuver + SkillEveryRoseHasItsFangsInherit SkillID = 910301 // Every Rose Has Its Fangs + SkillDancingintheLeavesInherit SkillID = 910401 // Dancing in the Leaves + SkillGiveMummyaHugInherit SkillID = 910451 // Give Mummy a Hug ♡ + SkillBountifulHarvestInherit SkillID = 910561 // Bountiful Harvest +) + +var AllSkills = map[SkillID]Skill{ + SkillWarningShot: { + 10071, + "Warning Shot!", + "Slightly increase velocity with a long spurt starting halfway through the race.", + 1007, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "distance_rate>=50&distance_rate<=60&order_rate>50", + 60000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillXceleration: { + 10081, + "Xceleration", + "Become stronger at challenging rivals and moderately increase velocity when positioned toward the front with 200m or less remaining.", + 1008, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "order>=3&order_rate<=50&remain_distance<=200&bashin_diff_infront<=1@order>=3&order_rate<=50&remain_distance<=200&bashin_diff_behind<=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillRedAce: { + 10091, + "Red Ace", + "Slightly swell with the determination to be number one when positioned toward the front in the second half of the race.", + 1009, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "distance_rate>=50&order==1&bashin_diff_behind<=1@distance_rate>=50&order==2&is_overtake==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillFocusedMind: { + 10111, + "Focused Mind", + "Moderately increase velocity with a strong turn of foot when passing another runner toward the back on the final straight.", + 1011, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&change_order_onetime<0&order>=3", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillCorazónArdiente: { + 10141, + "Corazón ☆ Ardiente", + "Slightly hang on to the advantage when positioned toward the front with energy to spare on the final straight.", + 1014, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&hp_per>=30&order<=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillEmpresssPride: { + 10181, + "Empress's Pride", + "Moderately increase velocity with the stride of an empress when passing another runner from midpack or further back on the final corner.", + 1018, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order>=3&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillFirstPlaceKiss: { + 10241, + "1st Place Kiss☆", + "Slightly increase ability to break out of the pack on the straight after engaging in a challenge toward the front on the final corner or later.", + 1024, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "is_finalcorner==1&blocked_side_continuetime>=2&order<=3", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillFeeltheBurn: { + 10271, + "Feel the Burn!", + "Moderately increase acceleration in an attempt to move up on a corner late-race.", + 1027, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "phase>=2&corner!=0&order_rate>=65&order_rate<=70", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillIntroductiontoPhysiology: { + 10321, + "Introduction to Physiology", + "Moderately recover endurance and slightly increase velocity for a moderate duration when sitting off the pace on a corner in the second half of the race.", + 1032, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "distance_rate>=50&corner!=0&order>=3&order_rate<=40", + 40000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 350, + 1, + 0, + }, + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillVIsforVictory: { + 10351, + "V Is for Victory!", + "Moderately increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.", + 1035, + 3, + 1, + 240, + false, + []Activation{ + { + "is_finalcorner==1&blocked_side_continuetime>=2", + "is_finalcorner==1&corner==0&order<=5", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillClassRepSpeedBakushin: { + 10411, + "Class Rep + Speed = Bakushin", + "Moderately increase velocity with BAKUSHIN power when engaged in a challenge toward the front in the second half of the race.", + 1041, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "distance_rate>=50&order<=3&blocked_side_continuetime>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillClearHeart: { + 10451, + "Clear Heart", + "Recover endurance when well-positioned mid-race.", + 1045, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "phase_random==1&order>=2&order_rate<=40", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillSuperDuperStoked: { + 10521, + "Super-Duper Stoked", + "Moderately recover endurance with a glance at nearby runners when positioned toward the back on the final corner.", + 1052, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate>50&near_count>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillLuckBewithMe: { + 10561, + "Luck Be with Me!", + "Moderately clear a path forward with the power of divination when the way ahead is jammed late-race.", + 1056, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "phase>=2&order>=3&blocked_front==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillICanWinSometimesRight: { + 10601, + "I Can Win Sometimes, Right?", + "Moderately increase velocity with an arousal of fighting spirit when positioned 3rd and about to lose late-race.", + 1060, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "phase>=2&order==3&bashin_diff_behind<=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillCallMeKing: { + 10611, + "Call Me King", + "Increase velocity in a true display of skill with 200m remaining after racing calmly.", + 1061, + 3, + 1, + 240, + false, + []Activation{ + { + "", + "temptation_count==0&remain_distance<=201&remain_distance>=199&order>=4&order_rate<=70", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillShootingStar: { + 100011, + "Shooting Star", + "Ride the momentum to increase velocity and very slightly increase acceleration after passing another runner toward the front late-race.", + 10001, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&order>=1&order_rate<=50&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillTheViewfromtheLeadIsMine: { + 100021, + "The View from the Lead Is Mine!", + "Increase velocity by drawing on all remaining strength when in the lead by a fair margin in the second half of the race.", + 10002, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&order==1&bashin_diff_behind>=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillSkyHighTeioStep: { + 100031, + "Sky-High Teio Step", + "Greatly increase velocity with flashy footwork when closing the gap to runners ahead on the final straight.", + 10003, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order<=3&bashin_diff_infront<=1&is_overtake==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillRedShiftLP1211M: { + 100041, + "Red Shift/LP1211-M", + "Increase acceleration by shifting gears when positioned toward the front on the final corner or later.", + 10004, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&order<=5&order_rate<=50", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillLightsofVaudeville: { + 100051, + "Lights of Vaudeville", + "Greatly increase velocity with a dazzling display when just breaking out of the pack toward the front on the final straight.", + 10005, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order_rate<=30&behind_near_lane_time_set1>=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillTriumphantPulse: { + 100061, + "Triumphant Pulse", + "Greatly increase ability to break out of the pack by opening up a path when positioned toward the front with 200m remaining.", + 10006, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "order>=2&order<=5&order_rate<=50&remain_distance<=201&remain_distance>=199", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillAnchorsAweigh: { + 100071, + "Anchors Aweigh!", + "Moderately increase velocity steadily with a long spurt starting halfway through the race.", + 10007, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&distance_rate<=60&order_rate>50", + 60000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillCutandDrive: { + 100081, + "Cut and Drive!", + "Become stronger at challenging rivals and increase velocity when positioned toward the front with 200m or less remaining.", + 10008, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "order>=3&order_rate<=50&remain_distance<=200&bashin_diff_infront<=1@order>=3&order_rate<=50&remain_distance<=200&bashin_diff_behind<=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillResplendentRedAce: { + 100091, + "Resplendent Red Ace", + "Swell with the determination to be number one when positioned toward the front in the second half of the race.", + 10009, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&order==1&bashin_diff_behind<=1@distance_rate>=50&order==2&is_overtake==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillShootingforVictory: { + 100101, + "Shooting for Victory!", + "Increase acceleration with a pow, a wow, and a bang when well-positioned upon approaching the final straight.", + 10010, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner_laterhalf==1&corner!=0&order>=3&order_rate<=40", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillWhereTheresaWillTheresaWay: { + 100111, + "Where There's a Will, There's a Way", + "Increase velocity with a strong turn of foot when passing another runner toward the back on the final straight.", + 10011, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&change_order_onetime<0&order>=3", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillYouandMeOneonOne: { + 100121, + "You and Me! One-on-One!", + "Increase velocity on the final straight after passing another runner on the outside toward the back on the final corner or later.", + 10012, + 5, + 1, + 340, + false, + []Activation{ + { + "is_finalcorner==1&is_behind_in==1&change_order_onetime<0&order_rate>=40", + "is_finalcorner==1&corner==0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillTheDutyofDignityCalls: { + 100131, + "The Duty of Dignity Calls", + "Increase velocity with the determination to not be overtaken when positioned toward the front on the final corner.", + 10013, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&distance_diff_rate<=30", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillVictoriaporplancha: { + 100141, + "Victoria por plancha ☆", + "Hang onto the advantage when positioned toward the front with energy to spare on the final straight.", + 10014, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&hp_per>=30&order<=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillThisDanceIsforVittoria: { + 100151, + "This Dance Is for Vittoria!", + "Increase velocity with royal brilliance when positioned toward the front and close to the runner ahead or behind on the final corner or later.", + 10015, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&bashin_diff_behind<=1&order<=4@is_finalcorner==1&bashin_diff_infront<=1&order<=4", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillShadowBreak: { + 100161, + "Shadow Break", + "Increase velocity with beastly strength when passing another runner on the outside on the final corner or later. If the skill user engaged in a challenge mid-race, greatly increase velocity instead.", + 10016, + 5, + 1, + 340, + false, + []Activation{ + { + "phase==1&blocked_side_continuetime>=2", + "is_finalcorner==1&order>=2&order_rate<=75&is_behind_in==1&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + { + "", + "is_finalcorner==1&order>=2&order_rate<=75&is_behind_in==1&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillBeholdThineEmperorsDivineMight: { + 100171, + "Behold Thine Emperor's Divine Might", + "Greatly increase velocity on the final straight after passing another runner 3 times late-race.", + 10017, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&change_order_up_end_after>=3&corner==0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillBlazingPride: { + 100181, + "Blazing Pride", + "Increase velocity with the stride of an empress when passing another runner from midpack or further back on the final corner.", + 10018, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order>=3&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillOMGTheFinalSprint: { + 100191, + "OMG! (゚∀゚) The Final Sprint! ☆", + "Increase velocity and navigation with the pure euphoria of being within breathing distance of precious waifus after passing another runner 2 times late-race.", + 10019, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "change_order_up_end_after>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillAnglingandScheming: { + 100201, + "Angling and Scheming", + "Increase acceleration at an opportune moment when in the lead on a corner late-race.", + 10020, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&corner!=0&order==1", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillWinQED: { + 100231, + "∴win Q.E.D.", + "Increase velocity by deriving the winning equation when passing another runner toward the front on the final corner or later.", + 10023, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&change_order_onetime<0&order<=4", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillFlashyLanding: { + 100241, + "Flashy☆Landing", + "Increase ability to break out of the pack on the straight after engaging in a challenge toward the front on the final corner or later.", + 10024, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&blocked_side_continuetime>=2&order<=3", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillChasingAfterYou: { + 100251, + "Chasing After You", + "Chase after an unseen friend when in midpack in the second half of the race, moderately increasing velocity steadily and very slightly intimidating runners ahead.", + 10025, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&order_rate>=40&order_rate<=70", + 60000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityCurrentSpeed, + 1, + -500, + 9, + 5, + }, + }, + }, + }, + 0, + 20013, + }, + SkillG00FirstFInfinity: { + 100261, + "G00 1st. F∞;", + "Increase velocity when positioned toward the front after making it to the final straight without faltering.", + 10026, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_badstart==0&temptation_count==0&order<=3&is_finalcorner==1&corner==0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillLetsPumpSomeIron: { + 100271, + "Let's Pump Some Iron!", + "Increase acceleration in an attempt to move up on a corner late-race.", + 10027, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&corner!=0&order_rate>=65&order_rate<=70", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillYUMMYSPEED: { + 100281, + "YUMMY☆SPEED!", + "Kick forward hard with renewed vigor when starting to get tired while well-positioned halfway through the race.", + 10028, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=45&distance_rate<=60&order>=3&order_rate<=50&hp_per<=70", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillBlueRoseCloser: { + 100301, + "Blue Rose Closer", + "Increase velocity with strong willpower on the final straight after passing another runner in the front part of the pack on the final corner or later.", + 10030, + 5, + 1, + 340, + false, + []Activation{ + { + "is_finalcorner==1&order<=4&change_order_onetime<0", + "is_finalcorner==1&corner==0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillUma2: { + 100321, + "U=ma2", + "Recover endurance and moderately increase velocity for a moderate duration when sitting off the pace on a corner in the second half of the race.", + 10032, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&corner!=0&order>=3&order_rate<=40", + 40000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillOurTickettoWin: { + 100351, + "Our Ticket to Win!", + "Increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.", + 10035, + 4, + 1, + 340, + false, + []Activation{ + { + "is_finalcorner==1&blocked_side_continuetime>=2", + "is_finalcorner==1&corner==0&order<=5", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillSchwarzesSchwert: { + 100371, + "Schwarzes Schwert", + "Increase velocity in a dash for the lead after running calmly and according to plan up until the final straight.", + 10037, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_badstart==0&temptation_count==0&order>=3&is_finalcorner==1&corner==0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillLookatCurren: { + 100381, + "#LookatCurren", + "Gain momentum and begin to advance when passing another runner while well-positioned around halfway through the race.", + 10038, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&distance_rate<=65&order>=2&order_rate<=40&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillAPrincessMustSeizeVictory: { + 100391, + "A Princess Must Seize Victory!", + "Increase velocity with pretty princess power when engaged in a challenge on the final straight.", + 10039, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&blocked_side_continuetime>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillKEEPITREAL: { + 100401, + "KEEP IT REAL.", + "Moderately increase acceleration steadily with a wink when starting to make a move from midpack in the second half of the race.", + 10040, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&order_rate>=40&order_rate<=70&is_overtake==1", + 60000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillGeniusxBakushinVictory: { + 100411, + "Genius x Bakushin = Victory", + "Increase velocity with BAKUSHIN power when engaged in a challenge toward the front in the second half of the race.", + 10041, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&order<=3&blocked_side_continuetime>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillPureHeart: { + 100451, + "Pure Heart", + "Greatly recover endurance when well-positioned mid-race.", + 10045, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "phase_random==1&order>=2&order_rate<=40", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 750, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillSPARKLYSTARDOM: { + 100461, + "SPARKLY☆STARDOM", + "Become empowered to keep the spotlight when positioned toward the front and close to the runner behind on a straight mid-race.", + 10046, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase==1&corner==0&order<=2&bashin_diff_behind<=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillPopAndPolish: { + 100481, + "Pop & Polish", + "Get hyped and increase velocity when pressured by or passing another runner while well-positioned on the final straight.", + 10048, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order>=2&order_rate<=30&overtake_target_time>=2@is_finalcorner==1&corner==0&order_rate<=20&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillNemesis: { + 100501, + "Nemesis", + "Increase velocity with smoldering ambition when moving up from midpack on the final corner or later.", + 10050, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&order_rate>=40&order_rate<=75&is_overtake==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillSuperDuperClimax: { + 100521, + "Super-Duper Climax", + "Recover endurance with a glance at nearby runners when positioned toward the back on the final corner.", + 10052, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate>50&near_count>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillISeeVictoryinMyFuture: { + 100561, + "I See Victory in My Future!", + "Clear a path forward with the power of divination when the way ahead is jammed late-race.", + 10056, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&order>=3&blocked_front==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillINeverGoofUp: { + 100581, + "I Never Goof Up!", + "Aim for the front with unwavering determination when passing another runner from midpack or further back on a corner late-race.", + 10058, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&corner!=0&order>=3&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillMovingPastandBeyond: { + 100591, + "Moving Past, and Beyond", + "Having run the race calmly, increase acceleration with hardened determination when making a move mid-race, or on a crucial corner late-race whilst in midpack.", + 10059, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&corner!=0&is_finalcorner==0&temptation_count==0&order_rate>=50&order_rate<=70@phase==1&corner!=0&is_finalcorner==1&temptation_count==0&order_rate>=50&order_rate<=70", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillJustaLittleFarther: { + 100601, + "Just a Little Farther!", + "Increase velocity with flaring fighting spirit when positioned 3rd and about to lose late-race.", + 10060, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "phase>=2&order==3&bashin_diff_behind<=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillPridefulKing: { + 100611, + "Prideful King", + "Greatly increase velocity in a true display of skill with 200m remaining after racing calmly.", + 10061, + 4, + 1, + 340, + false, + []Activation{ + { + "", + "temptation_count==0&remain_distance<=201&remain_distance>=199&order>=4&order_rate<=70", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillDazzlnDiver: { + 110011, + "Dazzl'n ♪ Diver", + "Recover endurance by relaxing after activating 2 skills when positioned midpack mid-race.", + 11001, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase==1&order>=2&order_rate<=70&activate_count_middle>=2", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillCertainVictory: { + 110031, + "Certain Victory", + "Greatly increase velocity with an indomitable fighting spirit on the final straight after being on the heels of another runner toward the front on the final corner or later.", + 11003, + 5, + 1, + 340, + false, + []Activation{ + { + "is_finalcorner==1&is_overtake==1&order<=5&order_rate<=50&overtake_target_no_order_up_time>=2", + "is_finalcorner==1&corner==0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 4500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillAKissforCourage: { + 110041, + "A Kiss for Courage", + "Increase velocity enthusiastically when positioned toward the front in the second half of the race after recovering endurance with a skill.", + 11004, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&activate_count_heal>=1&order<=3", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillFestiveMiracle: { + 110061, + "Festive Miracle", + "Control breathing and kick forward hard toward victory in the second half of the race after recovering endurance with skills at least 3 times.", + 11006, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "activate_count_heal>=3&distance_rate>=50", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + { + AbilityHP, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillSuperiorHeal: { + 110111, + "Superior Heal", + "Greatly recover endurance with a gentle light when overtaken toward the back mid-race.", + 11011, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase==1&change_order_onetime>0&order_rate>=40", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 750, + 1, + 0, + }, + }, + }, + }, + 0, + 20023, + }, + SkillLegacyoftheStrong: { + 110131, + "Legacy of the Strong", + "Increase velocity continuously when pressured by another runner and running out of energy toward the front on the final corner or later.", + 11013, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&hp_per<=45&order<=3&order_rate<=50&bashin_diff_behind<=1&overtake_target_time>=1", + 60000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillCondorsFury: { + 110141, + "Condor's Fury", + "Increase acceleration with blazing passion when aiming for the front from midpack on the final corner.", + 11014, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&is_overtake==1&order>=4&order_rate<=75", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20043, + }, + SkillArrowsWhistleShadowsDisperse: { + 110171, + "Arrows Whistle, Shadows Disperse", + "Increase velocity with a blazing spirit when pressured by another runner in the front part of the pack on the final corner or later.", + 11017, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&order_rate<=40&overtake_target_time>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillEternalMoments: { + 110181, + "Eternal Moments", + "Increase velocity when starting to make a move from a position toward the front mid-race.", + 11018, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase==1&order>=3&order_rate<=50&is_overtake==1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillPresentsfromX: { + 110231, + "Presents from X", + "Increase velocity by deriving a path to victory mid-race after staying well-positioned from the start of the race up until the second half.", + 11023, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "order_rate_in40_continue==1&phase==1&distance_rate>=50&order>=2&order_rate<=40", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillFloweryManeuver: { + 110241, + "Flowery☆Maneuver", + "Increase velocity when passing another runner toward the front on the final corner. If passing toward the back, increase acceleration instead.", + 11024, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + { + "", + "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillEveryRoseHasItsFangs: { + 110301, + "Every Rose Has Its Fangs", + "Suck endurance from runners ahead when well-positioned and pressured by another runner mid-race.", + 11030, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "phase==1&order>=2&order_rate<=50&overtake_target_time>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + { + AbilityHP, + 1, + -50, + 9, + 18, + }, + }, + }, + }, + 0, + 20023, + }, + SkillDancingintheLeaves: { + 110401, + "Dancing in the Leaves", + "Increase ability to break out of the pack when engaged in a challenge in midpack on the final corner.", + 11040, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate>=30&order_rate<=70&blocked_side_continuetime>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillGiveMummyaHug: { + 110451, + "Give Mummy a Hug ♡", + "Increase ability to break out of the pack when well-positioned and close to the runner ahead on the final straight.", + 11045, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order<=4&bashin_diff_infront<=1", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillBountifulHarvest: { + 110561, + "Bountiful Harvest", + "Increase velocity with a surge of great fortune when pressured by another runner toward the back in the second half of the race.", + 11056, + 5, + 1, + 340, + false, + []Activation{ + { + "", + "distance_rate>=50&order_rate>=40&overtake_target_time>=2", + 50000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 0, + 20013, + }, + SkillRightHandedLv2: { + 200011, + "Right-Handed ◎", + "Increase performance on right-handed tracks.", + 20001, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "rotation==1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillRightHanded: { + 200012, + "Right-Handed ○", + "Moderately increase performance on right-handed tracks.", + 20001, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "rotation==1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillRightHandedX: { + 200013, + "Right-Handed ×", + "Moderately decrease performance on right-handed tracks.", + 20001, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "rotation==1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillLeftHandedLv2: { + 200021, + "Left-Handed ◎", + "Increase performance on left-handed tracks.", + 20002, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "rotation==2", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillLeftHanded: { + 200022, + "Left-Handed ○", + "Moderately increase performance on left-handed tracks.", + 20002, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "rotation==2", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillLeftHandedX: { + 200023, + "Left-Handed ×", + "Moderately decrease performance on left-handed tracks.", + 20002, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "rotation==2", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillTokyoRacecourseLv2: { + 200031, + "Tokyo Racecourse ◎", + "Increase performance at Tokyo Racecourse.", + 20003, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10006", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillTokyoRacecourse: { + 200032, + "Tokyo Racecourse ○", + "Moderately increase performance at Tokyo Racecourse.", + 20003, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10006", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillTokyoRacecourseX: { + 200033, + "Tokyo Racecourse ×", + "Moderately decrease performance at Tokyo Racecourse.", + 20003, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10006", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillNakayamaRacecourseLv2: { + 200041, + "Nakayama Racecourse ◎", + "Increase performance at Nakayama Racecourse.", + 20004, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10005", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillNakayamaRacecourse: { + 200042, + "Nakayama Racecourse ○", + "Moderately increase performance at Nakayama Racecourse.", + 20004, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10005", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillNakayamaRacecourseX: { + 200043, + "Nakayama Racecourse ×", + "Moderately decrease performance at Nakayama Racecourse.", + 20004, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10005", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillHanshinRacecourseLv2: { + 200051, + "Hanshin Racecourse ◎", + "Increase performance at Hanshin Racecourse.", + 20005, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10009", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillHanshinRacecourse: { + 200052, + "Hanshin Racecourse ○", + "Moderately increase performance at Hanshin Racecourse.", + 20005, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10009", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillHanshinRacecourseX: { + 200053, + "Hanshin Racecourse ×", + "Moderately decrease performance at Hanshin Racecourse.", + 20005, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10009", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillKyotoRacecourseLv2: { + 200061, + "Kyoto Racecourse ◎", + "Increase performance at Kyoto Racecourse.", + 20006, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10008", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillKyotoRacecourse: { + 200062, + "Kyoto Racecourse ○", + "Moderately increase performance at Kyoto Racecourse.", + 20006, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10008", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillKyotoRacecourseX: { + 200063, + "Kyoto Racecourse ×", + "Moderately decrease performance at Kyoto Racecourse.", + 20006, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10008", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillYodoInvicta: { + 200064, + "Yodo Invicta", + "Increase performance at Kyoto Racecourse, boosting Stamina and Wit.", + 20006, + 2, + 3, + 461, + false, + []Activation{ + { + "", + "track_id==10008", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + { + AbilityPassiveWit, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 130, + 10022, + }, + SkillChukyoRacecourseLv2: { + 200071, + "Chukyo Racecourse ◎", + "Increase performance at Chukyo Racecourse.", + 20007, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10007", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillChukyoRacecourse: { + 200072, + "Chukyo Racecourse ○", + "Moderately increase performance at Chukyo Racecourse.", + 20007, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10007", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillChukyoRacecourseX: { + 200073, + "Chukyo Racecourse ×", + "Moderately decrease performance at Chukyo Racecourse.", + 20007, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10007", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillSapporoRacecourseLv2: { + 200081, + "Sapporo Racecourse ◎", + "Increase performance at Sapporo Racecourse.", + 20008, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10001", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillSapporoRacecourse: { + 200082, + "Sapporo Racecourse ○", + "Moderately increase performance at Sapporo Racecourse.", + 20008, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10001", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10021, + }, + SkillSapporoRacecourseX: { + 200083, + "Sapporo Racecourse ×", + "Moderately decrease performance at Sapporo Racecourse.", + 20008, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10001", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 40, + 10024, + }, + SkillHakodateRacecourseLv2: { + 200091, + "Hakodate Racecourse ◎", + "Increase performance at Hakodate Racecourse.", + 20009, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10002", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillHakodateRacecourse: { + 200092, + "Hakodate Racecourse ○", + "Moderately increase performance at Hakodate Racecourse.", + 20009, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10002", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10021, + }, + SkillHakodateRacecourseX: { + 200093, + "Hakodate Racecourse ×", + "Moderately decrease performance at Hakodate Racecourse.", + 20009, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10002", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 40, + 10024, + }, + SkillFukushimaRacecourseLv2: { + 200101, + "Fukushima Racecourse ◎", + "Increase performance at Fukushima Racecourse.", + 20010, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10004", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillFukushimaRacecourse: { + 200102, + "Fukushima Racecourse ○", + "Moderately increase performance at Fukushima Racecourse.", + 20010, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10004", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10021, + }, + SkillFukushimaRacecourseX: { + 200103, + "Fukushima Racecourse ×", + "Moderately decrease performance at Fukushima Racecourse.", + 20010, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10004", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 40, + 10024, + }, + SkillNiigataRacecourseLv2: { + 200111, + "Niigata Racecourse ◎", + "Increase performance at Niigata Racecourse.", + 20011, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10003", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillNiigataRacecourse: { + 200112, + "Niigata Racecourse ○", + "Moderately increase performance at Niigata Racecourse.", + 20011, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10003", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10021, + }, + SkillNiigataRacecourseX: { + 200113, + "Niigata Racecourse ×", + "Moderately decrease performance at Niigata Racecourse.", + 20011, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10003", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 40, + 10024, + }, + SkillKokuraRacecourseLv2: { + 200121, + "Kokura Racecourse ◎", + "Increase performance at Kokura Racecourse.", + 20012, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10010", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillKokuraRacecourse: { + 200122, + "Kokura Racecourse ○", + "Moderately increase performance at Kokura Racecourse.", + 20012, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10010", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10021, + }, + SkillKokuraRacecourseX: { + 200123, + "Kokura Racecourse ×", + "Moderately decrease performance at Kokura Racecourse.", + 20012, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10010", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 40, + 10024, + }, + SkillStandardDistanceLv2: { + 200131, + "Standard Distance ◎", + "Increase performance over standard distances (multiples of 400m).", + 20013, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "is_basis_distance==1", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillStandardDistance: { + 200132, + "Standard Distance ○", + "Moderately increase performance over standard distances (multiples of 400m).", + 20013, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "is_basis_distance==1", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillStandardDistanceX: { + 200133, + "Standard Distance ×", + "Moderately decrease performance over standard distances (multiples of 400m).", + 20013, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "is_basis_distance==1", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillNonStandardDistanceLv2: { + 200141, + "Non-Standard Distance ◎", + "Increase performance over non-standard distances (non-multiples of 400m).", + 20014, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "is_basis_distance==0", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillNonStandardDistance: { + 200142, + "Non-Standard Distance ○", + "Moderately increase performance over non-standard distances (non-multiples of 400m).", + 20014, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "is_basis_distance==0", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillNonStandardDistanceX: { + 200143, + "Non-Standard Distance ×", + "Moderately decrease performance over non-standard distances (non-multiples of 400m).", + 20014, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "is_basis_distance==0", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillFirmConditionsLv2: { + 200151, + "Firm Conditions ◎", + "Increase performance on firm ground.", + 20015, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "ground_condition==1", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10031, + }, + SkillFirmConditions: { + 200152, + "Firm Conditions ○", + "Moderately increase performance on firm ground.", + 20015, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "ground_condition==1", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10031, + }, + SkillFirmConditionsX: { + 200153, + "Firm Conditions ×", + "Moderately decrease performance on firm ground.", + 20015, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "ground_condition==1", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10034, + }, + SkillWetConditionsLv2: { + 200161, + "Wet Conditions ◎", + "Increase performance on good, soft, and heavy ground.", + 20016, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "ground_condition==2@ground_condition==3@ground_condition==4", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10031, + }, + SkillWetConditions: { + 200162, + "Wet Conditions ○", + "Moderately increase performance on good, soft, and heavy ground.", + 20016, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "ground_condition==2@ground_condition==3@ground_condition==4", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10031, + }, + SkillWetConditionsX: { + 200163, + "Wet Conditions ×", + "Moderately decrease performance on good, soft, and heavy ground.", + 20016, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "ground_condition==2@ground_condition==3@ground_condition==4", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10034, + }, + SkillSpringRunnerLv2: { + 200171, + "Spring Runner ◎", + "Increase performance in spring.", + 20017, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "season==1@season==5", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillSpringRunner: { + 200172, + "Spring Runner ○", + "Moderately increase performance in spring.", + 20017, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "season==1@season==5", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillSpringRunnerX: { + 200173, + "Spring Runner ×", + "Moderately decrease performance in spring.", + 20017, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "season==1@season==5", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillSummerRunnerLv2: { + 200181, + "Summer Runner ◎", + "Increase performance in summer.", + 20018, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "season==2", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillSummerRunner: { + 200182, + "Summer Runner ○", + "Moderately increase performance in summer.", + 20018, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "season==2", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillSummerRunnerX: { + 200183, + "Summer Runner ×", + "Moderately decrease performance in summer.", + 20018, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "season==2", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillFallRunnerLv2: { + 200191, + "Fall Runner ◎", + "Increase performance in fall.", + 20019, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "season==3", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillFallRunner: { + 200192, + "Fall Runner ○", + "Moderately increase performance in fall.", + 20019, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "season==3", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillFallRunnerX: { + 200193, + "Fall Runner ×", + "Moderately decrease performance in fall.", + 20019, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "season==3", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillFallFrenzy: { + 200194, + "Fall Frenzy", + "Increase performance in fall, boosting Speed and Power.", + 20019, + 2, + 3, + 461, + false, + []Activation{ + { + "", + "season==3", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + { + AbilityPassivePower, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 130, + 10012, + }, + SkillWinterRunnerLv2: { + 200201, + "Winter Runner ◎", + "Increase performance in winter.", + 20020, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "season==4", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillWinterRunner: { + 200202, + "Winter Runner ○", + "Moderately increase performance in winter.", + 20020, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "season==4", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillWinterRunnerX: { + 200203, + "Winter Runner ×", + "Moderately decrease performance in winter.", + 20020, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "season==4", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillSunnyDaysLv2: { + 200211, + "Sunny Days ◎", + "Increase performance in sunny weather.", + 20021, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "weather==1", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10041, + }, + SkillSunnyDays: { + 200212, + "Sunny Days ○", + "Moderately increase performance in sunny weather.", + 20021, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "weather==1", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10041, + }, + SkillCloudyDaysLv2: { + 200221, + "Cloudy Days ◎", + "Increase performance in cloudy weather.", + 20022, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "weather==2", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10041, + }, + SkillCloudyDays: { + 200222, + "Cloudy Days ○", + "Moderately increase performance in cloudy weather.", + 20022, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "weather==2", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10041, + }, + SkillRainyDaysLv2: { + 200231, + "Rainy Days ◎", + "Increase performance in rainy weather.", + 20023, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "weather==3", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10041, + }, + SkillRainyDays: { + 200232, + "Rainy Days ○", + "Moderately increase performance in rainy weather.", + 20023, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "weather==3", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10041, + }, + SkillRainyDaysX: { + 200233, + "Rainy Days ×", + "Moderately decrease performance in rainy weather.", + 20023, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "weather==3", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10044, + }, + SkillSnowyDaysLv2: { + 200241, + "Snowy Days ◎", + "Increase performance in snowy weather.", + 20024, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "weather==4", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10041, + }, + SkillSnowyDays: { + 200242, + "Snowy Days ○", + "Moderately increase performance in snowy weather.", + 20024, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "weather==4", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10041, + }, + SkillInnerPostProficiencyLv2: { + 200251, + "Inner Post Proficiency ◎", + "Increase performance in brackets 1–3.", + 20025, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "post_number<=3", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10051, + }, + SkillInnerPostProficiency: { + 200252, + "Inner Post Proficiency ○", + "Moderately increase performance in brackets 1–3.", + 20025, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "post_number<=3", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10051, + }, + SkillInnerPostAverseness: { + 200253, + "Inner Post Averseness", + "Moderately decrease performance in brackets 1–3.", + 20025, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "post_number<=3", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10054, + }, + SkillOuterPostProficiencyLv2: { + 200261, + "Outer Post Proficiency ◎", + "Increase performance in brackets 6–8.", + 20026, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "post_number>=6", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillOuterPostProficiency: { + 200262, + "Outer Post Proficiency ○", + "Moderately increase performance in brackets 6–8.", + 20026, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "post_number>=6", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillOuterPostAverseness: { + 200263, + "Outer Post Averseness", + "Moderately decrease performance in brackets 6–8.", + 20026, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "post_number>=6", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillMaverickLv2: { + 200271, + "Maverick ◎", + "Greatly increase performance when no other runners are using the same strategy.", + 20027, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "running_style_count_same<=1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 800000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillMaverick: { + 200272, + "Maverick ○", + "Increase performance when no other runners are using the same strategy.", + 20027, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "running_style_count_same<=1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillCompetitiveSpiritLv2: { + 200281, + "Competitive Spirit ◎", + "Increase performance when many other runners are using the same strategy.", + 20028, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "running_style_count_same_rate>=40", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10031, + }, + SkillCompetitiveSpirit: { + 200282, + "Competitive Spirit ○", + "Moderately increase performance when many other runners are using the same strategy.", + 20028, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "running_style_count_same_rate>=40", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10031, + }, + SkillWallflower: { + 200283, + "Wallflower", + "Moderately decrease performance when many other runners are using the same strategy.", + 20028, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "running_style_count_same_rate>=40", + -1, + 0, + []Ability{ + { + AbilityPassivePower, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10034, + }, + SkillTargetinSightLv2: { + 200291, + "Target in Sight ◎", + "Increase performance when the favorite is using the same strategy.", + 20029, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "running_style_equal_popularity_one==1", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10041, + }, + SkillTargetinSight: { + 200292, + "Target in Sight ○", + "Moderately increase performance when the favorite is using the same strategy.", + 20029, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "running_style_equal_popularity_one==1", + -1, + 0, + []Ability{ + { + AbilityPassiveGuts, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10041, + }, + SkillLongShotLv2: { + 200301, + "Long Shot ◎", + "Increase performance when 4th favorite or below.", + 20030, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "popularity>=4", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10011, + }, + SkillLongShot: { + 200302, + "Long Shot ○", + "Moderately increase performance when 4th favorite or below.", + 20030, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "popularity>=4", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10011, + }, + SkillG1Averseness: { + 200311, + "G1 Averseness", + "Moderately decrease performance in G1 or otherwise important races.", + 20031, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "grade==100", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillPaddockFright: { + 200321, + "Paddock Fright", + "Moderately decrease performance when the favorite.", + 20032, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "popularity==1", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillProfessorofCurvature: { + 200331, + "Professor of Curvature", + "Increase velocity on a corner with skilled turning.", + 20033, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "all_corner_random==1", + 24000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillCornerAdept: { + 200332, + "Corner Adept ○", + "Slightly increase velocity on a corner with skilled turning.", + 20033, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "all_corner_random==1", + 24000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillCornerAdeptX: { + 200333, + "Corner Adept ×", + "Moderately decrease velocity on a corner with clumsy turning.", + 20033, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "all_corner_random==1", + 24000, + 300000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2000, + 1, + 0, + }, + }, + }, + }, + 100, + 20014, + }, + SkillCornerConnoisseur: { + 200341, + "Corner Connoisseur", + "Increase acceleration on a corner with masterful turning.", + 20034, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "all_corner_random==1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 180, + 20042, + }, + SkillCornerAcceleration: { + 200342, + "Corner Acceleration ○", + "Slightly increase acceleration on a corner with masterful turning.", + 20034, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "all_corner_random==1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 180, + 20041, + }, + SkillCornerAccelerationX: { + 200343, + "Corner Acceleration ×", + "Moderately decrease acceleration on a corner with awkward turning.", + 20034, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "all_corner_random==1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + -2000, + 1, + 0, + }, + }, + }, + }, + 100, + 20044, + }, + SkillSwingingMaestro: { + 200351, + "Swinging Maestro", + "Recover endurance on a corner with efficient turning.", + 20035, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "corner_random==1@corner_random==2@corner_random==3@corner_random==4", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 170, + 20022, + }, + SkillCornerRecovery: { + 200352, + "Corner Recovery ○", + "Slightly recover endurance on a corner with efficient turning.", + 20035, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "corner_random==1@corner_random==2@corner_random==3@corner_random==4", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 170, + 20021, + }, + SkillCornerRecoveryX: { + 200353, + "Corner Recovery ×", + "Moderately lose endurance on a corner with inefficient turning.", + 20035, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "corner_random==1@corner_random==2@corner_random==3@corner_random==4", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -200, + 1, + 0, + }, + }, + }, + }, + 100, + 20024, + }, + SkillBeelineBurst: { + 200361, + "Beeline Burst", + "Increase velocity on a straight.", + 20036, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "straight_random==1", + 24000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 170, + 20012, + }, + SkillStraightawayAdept: { + 200362, + "Straightaway Adept", + "Slightly increase velocity on a straight.", + 20036, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "straight_random==1", + 24000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 170, + 20011, + }, + SkillRushingGale: { + 200371, + "Rushing Gale!", + "Increase acceleration on a straight.", + 20037, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "straight_random==1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 170, + 20042, + }, + SkillStraightawayAcceleration: { + 200372, + "Straightaway Acceleration", + "Slightly increase acceleration on a straight.", + 20037, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "straight_random==1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 170, + 20041, + }, + SkillBreathofFreshAir: { + 200381, + "Breath of Fresh Air", + "Recover endurance on a straight.", + 20038, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "straight_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 170, + 20022, + }, + SkillStraightawayRecovery: { + 200382, + "Straightaway Recovery", + "Slightly recover endurance on a straight.", + 20038, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "straight_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 170, + 20021, + }, + SkillRampRevulsion: { + 200391, + "Ramp Revulsion", + "Moderately increase fatigue on an uphill.", + 20039, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "up_slope_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -200, + 1, + 0, + }, + }, + }, + }, + 100, + 20024, + }, + SkillPackphobia: { + 200401, + "Packphobia", + "Moderately lose endurance when surrounded.", + 20040, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "accumulatetime>=2&is_surrounded==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -200, + 1, + 0, + }, + }, + }, + }, + 100, + 20024, + }, + SkillDefeatist: { + 200411, + "Defeatist", + "Moderately increase urge to give up when positioned around the very back on the final straight.", + 20041, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "last_straight_random==1&distance_diff_rate>=75", + 30000, + 300000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2000, + 1, + 0, + }, + }, + }, + }, + 100, + 20014, + }, + SkillReckless: { + 200421, + "Reckless", + "Moderately increase carelessness when in the lead with around 200m remaining.", + 20042, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "remain_distance==200&order==1&bashin_diff_behind>=1", + 30000, + 300000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2000, + 1, + 0, + }, + }, + }, + }, + 100, + 20014, + }, + SkillConcentration: { + 200431, + "Concentration", + "Decrease time lost to slow starts.", + 20043, + 2, + 2, + 394, + true, + []Activation{ + { + "", + "always==1", + 0, + 5000000, + []Ability{ + { + AbilityGateDelay, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 140, + 20062, + }, + SkillFocus: { + 200432, + "Focus", + "Slightly decrease time lost to slow starts.", + 20043, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "always==1", + 0, + 5000000, + []Ability{ + { + AbilityGateDelay, + 1, + 9000, + 1, + 0, + }, + }, + }, + }, + 140, + 20061, + }, + SkillGatekept: { + 200433, + "Gatekept", + "Moderately increase time lost to slow starts.", + 20043, + 1, + -1, + -174, + true, + []Activation{ + { + "", + "always==1", + 0, + 5000000, + []Ability{ + { + AbilityGateDelay, + 1, + 15000, + 1, + 0, + }, + }, + }, + }, + 70, + 20064, + }, + SkillIronWill: { + 200441, + "Iron Will", + "Recover endurance when the way ahead is jammed early-race or mid-race.", + 20044, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "phase<=1&accumulatetime>=5&blocked_front_continuetime>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 160, + 20022, + }, + SkillLayLow: { + 200442, + "Lay Low", + "Slightly recover endurance when the way ahead is jammed early-race or mid-race.", + 20044, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "phase<=1&accumulatetime>=5&blocked_front_continuetime>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillCenterStage: { + 200451, + "Center Stage", + "Greatly increase navigation early-race.", + 20045, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "phase_random==0", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 450, + 1, + 0, + }, + }, + }, + }, + 120, + 20052, + }, + SkillPrudentPositioning: { + 200452, + "Prudent Positioning", + "Increase navigation early-race.", + 20045, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "phase_random==0", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 120, + 20051, + }, + SkillItsOn: { + 200461, + "It's On!", + "Increase velocity when passing another runner mid-race.", + 20046, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "phase==1&change_order_onetime<0", + 18000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 170, + 20012, + }, + SkillRampUp: { + 200462, + "Ramp Up", + "Slightly increase velocity when passing another runner mid-race.", + 20046, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "phase==1&change_order_onetime<0", + 18000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 170, + 20011, + }, + SkillIndomitable: { + 200471, + "Indomitable", + "Recover endurance when passed by another runner mid-race.", + 20047, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "phase==1&change_order_onetime>0", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 170, + 20022, + }, + SkillPaceStrategy: { + 200472, + "Pace Strategy", + "Slightly recover endurance when passed by another runner mid-race.", + 20047, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "phase==1&change_order_onetime>0", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 170, + 20021, + }, + SkillUnruffled: { + 200481, + "Unruffled", + "Recover endurance when surrounded mid-race.", + 20048, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "phase==1&is_surrounded==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 170, + 20022, + }, + SkillCalminaCrowd: { + 200482, + "Calm in a Crowd", + "Slightly recover endurance when surrounded mid-race.", + 20048, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "phase==1&is_surrounded==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 170, + 20021, + }, + SkillNoStoppingMe: { + 200491, + "No Stopping Me!", + "Increase maneuverability when the way ahead is blocked in the last spurt.", + 20049, + 2, + 2, + 394, + true, + []Activation{ + { + "", + "infront_near_lane_time>=1&is_lastspurt==1&hp_per>=1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + { + AbilityLaneSpeed, + 1, + 250, + 1, + 0, + }, + }, + }, + }, + 150, + 20042, + }, + SkillNimbleNavigator: { + 200492, + "Nimble Navigator", + "Slightly increase maneuverability when the way ahead is blocked in the last spurt.", + 20049, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "infront_near_lane_time>=1&is_lastspurt==1&hp_per>=1", + 30000, + 300000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + { + AbilityLaneSpeed, + 1, + 50, + 1, + 0, + }, + }, + }, + }, + 150, + 20041, + }, + SkillLaneLegerdemain: { + 200501, + "Lane Legerdemain", + "Increase navigation late-race.", + 20050, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 120, + 20052, + }, + SkillGowiththeFlow: { + 200502, + "Go with the Flow", + "Moderately increase navigation late-race.", + 20050, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 250, + 1, + 0, + }, + }, + }, + }, + 120, + 20051, + }, + SkillInBodyandMind: { + 200511, + "In Body and Mind", + "Increase velocity in the last spurt.", + 20051, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "is_lastspurt==1&phase_random==3", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 170, + 20012, + }, + SkillHomestretchHaste: { + 200512, + "Homestretch Haste", + "Slightly increase velocity in the last spurt.", + 20051, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "is_lastspurt==1&phase_random==3", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 170, + 20011, + }, + SkillRunningIdle: { + 200521, + "Running Idle", + "Moderately increase fatigue when in the lead by too large of a margin.", + 20052, + 1, + -1, + -262, + true, + []Activation{ + { + "", + "accumulatetime>=2&order==1&bashin_diff_behind>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -200, + 1, + 0, + }, + }, + }, + }, + 100, + 20024, + }, + SkillTakingtheLead: { + 200531, + "Taking the Lead", + "Increase ability to go to the front early-race. (Front Runner)", + 20053, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==1&phase==0", + 12000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 120, + 20042, + }, + SkillEarlyLead: { + 200532, + "Early Lead", + "Slightly increase ability to go to the front early-race. (Front Runner)", + 20053, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&phase==0", + 12000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 120, + 20041, + }, + SkillEscapeArtist: { + 200541, + "Escape Artist", + "Increase ability to go to the front mid-race. (Front Runner)", + 20054, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==1&phase_random==1&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillFastPaced: { + 200542, + "Fast-Paced", + "Slightly increase ability to go to the front mid-race. (Front Runner)", + 20054, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&phase_random==1&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillUnrestrained: { + 200551, + "Unrestrained", + "Increase ability to keep the lead on the final corner. (Front Runner)", + 20055, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==1&is_finalcorner_random==1&order==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 180, + 20042, + }, + SkillFinalPush: { + 200552, + "Final Push", + "Slightly increase ability to keep the lead on the final corner. (Front Runner)", + 20055, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&is_finalcorner_random==1&order==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 180, + 20041, + }, + SkillCalmandCollected: { + 200561, + "Calm and Collected", + "Decrease fatigue upon approaching mid-race. (Pace Chaser)", + 20056, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==2&phase_laterhalf_random==0&order_rate<=50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillStaminatoSpare: { + 200562, + "Stamina to Spare", + "Slightly decrease fatigue upon approaching mid-race. (Pace Chaser)", + 20056, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&phase_laterhalf_random==0&order_rate<=50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillRacePlanner: { + 200571, + "Race Planner", + "Decrease fatigue mid-race. (Pace Chaser)", + 20057, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==2&phase_random==1&order_rate<=50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillPreferredPosition: { + 200572, + "Preferred Position", + "Slightly decrease fatigue mid-race. (Pace Chaser)", + 20057, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&phase_random==1&order_rate<=50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillSpeedStar: { + 200581, + "Speed Star", + "Increase ability to break out of the pack on the final corner. (Pace Chaser)", + 20058, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==2&is_finalcorner_random==1&order_rate<=50", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillPreparedtoPass: { + 200582, + "Prepared to Pass", + "Slightly increase ability to break out of the pack on the final corner. (Pace Chaser)", + 20058, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&is_finalcorner_random==1&order_rate<=50", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillFastAndFurious: { + 200591, + "Fast & Furious", + "Increase velocity mid-race. (Late Surger)", + 20059, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==3&phase_random==1&order_rate>50", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillPositionPilfer: { + 200592, + "Position Pilfer", + "Slightly increase velocity mid-race. (Late Surger)", + 20059, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&phase_random==1&order_rate>50", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillOnYourLeft: { + 200601, + "On Your Left!", + "Increase acceleration late-race. (Late Surger)", + 20060, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==3&phase_random==2&order_rate>50", + 18000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 180, + 20042, + }, + SkillSlickSurge: { + 200602, + "Slick Surge", + "Slightly increase acceleration late-race. (Late Surger)", + 20060, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&phase_random==2&order_rate>50", + 18000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 180, + 20041, + }, + SkillRisingDragon: { + 200611, + "Rising Dragon", + "Increase velocity when passing another runner on the outside on the final corner. (Late Surger)", + 20061, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==3&is_finalcorner==1&corner!=0&is_behind_in==1&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillOuterSwell: { + 200612, + "Outer Swell", + "Slightly increase velocity when passing another runner on the outside on the final corner. (Late Surger)", + 20061, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&is_finalcorner==1&corner!=0&is_behind_in==1&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillSleepingLion: { + 200621, + "Sleeping Lion", + "Decrease fatigue mid-race. (End Closer)", + 20062, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==4&phase_random==1&distance_diff_rate>=75", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillStandingBy: { + 200622, + "Standing By", + "Slightly decrease fatigue mid-race. (End Closer)", + 20062, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&phase_random==1&distance_diff_rate>=75", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillSturmundDrang: { + 200631, + "Sturm und Drang", + "Move up in preparation to close the gap when positioned toward the back late-race. (End Closer)", + 20063, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==4&phase_random==2&distance_diff_rate>=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillMasterfulGambit: { + 200632, + "Masterful Gambit", + "Slightly move up in preparation to close the gap when positioned toward the back late-race. (End Closer)", + 20063, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&phase_random==2&distance_diff_rate>=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillEncroachingShadow: { + 200641, + "Encroaching Shadow", + "Increase acceleration on a straight in the last spurt. (End Closer)", + 20064, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==4&is_lastspurt==1&corner==0", + 9000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 180, + 20042, + }, + SkillStraightawaySpurt: { + 200642, + "Straightaway Spurt", + "Slightly increase acceleration on a straight in the last spurt. (End Closer)", + 20064, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&is_lastspurt==1&corner==0", + 9000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 180, + 20041, + }, + SkillTurboSprint: { + 200651, + "Turbo Sprint", + "Increase acceleration on a straight. (Sprint)", + 20065, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==1&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 160, + 20042, + }, + SkillSprintingGear: { + 200652, + "Sprinting Gear", + "Slightly increase acceleration on a straight. (Sprint)", + 20065, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==1&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 160, + 20041, + }, + SkillWaitandSee: { + 200662, + "Wait-and-See", + "Slightly decrease fatigue and very slightly increase acceleration when positioned toward the back mid-race. (Sprint)", + 20066, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==1&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillBlindingFlash: { + 200671, + "Blinding Flash", + "Increase spurting ability when positioned toward the back late-race. (Sprint)", + 20067, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillGapCloser: { + 200672, + "Gap Closer", + "Slightly increase spurting ability when positioned toward the back late-race. (Sprint)", + 20067, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillMileMaven: { + 200681, + "Mile Maven", + "Widen the margin when positioned toward the front early-race. (Mile)", + 20068, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==0&accumulatetime>=5&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillProductivePlan: { + 200682, + "Productive Plan", + "Slightly widen the margin when positioned toward the front early-race. (Mile)", + 20068, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==0&accumulatetime>=5&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillKeenEye: { + 200691, + "Keen Eye", + "Decrease fatigue, then moderately decrease velocity of runners ahead when positioned toward the back upon approaching mid-race. (Mile)", + 20069, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==2&phase_laterhalf_random==0&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + { + AbilityCurrentSpeed, + 1, + -2000, + 9, + 18, + }, + }, + }, + }, + 160, + 20022, + }, + SkillWatchfulEye: { + 200692, + "Watchful Eye", + "Slightly decrease fatigue, then very slightly decrease velocity of runners ahead when positioned toward the back upon approaching mid-race. (Mile)", + 20069, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase_laterhalf_random==0&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + { + AbilityCurrentSpeed, + 1, + -500, + 9, + 18, + }, + }, + }, + }, + 160, + 20021, + }, + SkillFuriousFeat: { + 200701, + "Furious Feat", + "Increase passing ability when positioned toward the back late-race. (Mile)", + 20070, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 160, + 20042, + }, + SkillUpdrafters: { + 200702, + "Updrafters", + "Slightly increase passing ability when positioned toward the back late-race. (Mile)", + 20070, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 160, + 20041, + }, + SkillTrackblazer: { + 200711, + "Trackblazer", + "Decrease fatigue when positioned toward the front mid-race. (Medium)", + 20071, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==1&order<=3", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 160, + 20022, + }, + SkillRosyOutlook: { + 200712, + "Rosy Outlook", + "Slightly decrease fatigue when positioned toward the front mid-race. (Medium)", + 20071, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==1&order<=3", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillKillerTunes: { + 200721, + "Killer Tunes", + "Increase positioning ability when positioned toward the front mid-race. (Medium)", + 20072, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==1&order_rate<=50", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillUpTempo: { + 200722, + "Up-Tempo", + "Slightly increase positioning ability when positioned toward the front mid-race. (Medium)", + 20072, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==1&order_rate<=50", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillUnyielding: { + 200731, + "Unyielding", + "Increase ability to fight back when passed by another runner on the final corner. (Medium)", + 20073, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&is_finalcorner==1&corner!=0&change_order_onetime>0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillSteadfast: { + 200732, + "Steadfast", + "Slightly increase ability to fight back when passed by another runner on the final corner. (Medium)", + 20073, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&is_finalcorner==1&corner!=0&change_order_onetime>0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillCooldown: { + 200741, + "Cooldown", + "Decrease fatigue by taking a breather upon entering a straight. (Long)", + 20074, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==4&straight_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 160, + 20022, + }, + SkillDeepBreaths: { + 200742, + "Deep Breaths", + "Slightly decrease fatigue by taking a breather upon entering a straight. (Long)", + 20074, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&straight_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillInnateExperience: { + 200751, + "Innate Experience", + "Increase velocity when near the inner rail on the final corner. (Long)", + 20075, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==4&is_finalcorner==1&corner!=0&lane_type==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillInsideScoop: { + 200752, + "Inside Scoop", + "Slightly increase velocity when near the inner rail on the final corner. (Long)", + 20075, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&is_finalcorner==1&corner!=0&lane_type==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillAdrenalineRush: { + 200761, + "Adrenaline Rush", + "Regain the energy to run when close to exhausting strength. (Long)", + 20076, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==4&hp_per<=30", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 160, + 20022, + }, + SkillExtraTank: { + 200762, + "Extra Tank", + "Slightly regain the energy to run when close to exhausting strength. (Long)", + 20076, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&hp_per<=30", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillTrickFront: { + 200771, + "Trick (Front)", + "Slightly increase fatigue for rushed runners behind when positioned toward the front mid-race.", + 20077, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "phase==1&order_rate<=50&temptation_count_behind>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 20, + 10, + }, + }, + }, + }, + 140, + 30051, + }, + SkillTantalizingTrick: { + 200772, + "Tantalizing Trick", + "Increase fatigue for rushed runners behind when positioned toward the front mid-race.", + 20077, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "phase==1&order_rate<=50&temptation_count_behind>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -300, + 20, + 10, + }, + }, + }, + }, + 140, + 30052, + }, + SkillTrickRear: { + 200781, + "Trick (Rear)", + "Slightly increase fatigue for rushed runners ahead when positioned toward the back mid-race.", + 20078, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "phase==1&order_rate>50&temptation_count_infront>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 19, + 10, + }, + }, + }, + }, + 140, + 30051, + }, + SkillFrenziedFrontRunners: { + 200791, + "Frenzied Front Runners", + "Increase time needed for front runners to calm down when they become rushed.", + 20079, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "running_style_temptation_count_nige>=1&is_temptation==0", + 0, + 5000000, + []Ability{ + { + AbilityFrenzy, + 1, + 50000, + 21, + 1, + }, + }, + }, + }, + 130, + 30041, + }, + SkillFrenziedPaceChasers: { + 200801, + "Frenzied Pace Chasers", + "Increase time needed for pace chasers to calm down when they become rushed.", + 20080, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "running_style_temptation_count_senko>=1&is_temptation==0", + 0, + 5000000, + []Ability{ + { + AbilityFrenzy, + 1, + 50000, + 21, + 2, + }, + }, + }, + }, + 130, + 30041, + }, + SkillFrenziedLateSurgers: { + 200811, + "Frenzied Late Surgers", + "Increase time needed for late surgers to calm down when they become rushed.", + 20081, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "running_style_temptation_count_sashi>=1&is_temptation==0", + 0, + 5000000, + []Ability{ + { + AbilityFrenzy, + 1, + 50000, + 21, + 3, + }, + }, + }, + }, + 130, + 30041, + }, + SkillFrenziedEndClosers: { + 200821, + "Frenzied End Closers", + "Increase time needed for end closers to calm down when they become rushed.", + 20082, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "running_style_temptation_count_oikomi>=1&is_temptation==0", + 0, + 5000000, + []Ability{ + { + AbilityFrenzy, + 1, + 50000, + 21, + 4, + }, + }, + }, + }, + 130, + 30041, + }, + SkillSubduedFrontRunners: { + 200831, + "Subdued Front Runners", + "Slightly increase fatigue for front runners early-race.", + 20083, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_nige_otherself>=1&phase_random==0&accumulatetime>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 1, + }, + }, + }, + }, + 130, + 30051, + }, + SkillFlusteredFrontRunners: { + 200841, + "Flustered Front Runners", + "Slightly increase fatigue for front runners mid-race.", + 20084, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_nige_otherself>=1&phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 1, + }, + }, + }, + }, + 130, + 30051, + }, + SkillHesitantFrontRunners: { + 200851, + "Hesitant Front Runners", + "Slightly decrease velocity of front runners late-race.", + 20085, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_nige_otherself>=1&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 18, + 1, + }, + }, + }, + }, + 130, + 30011, + }, + SkillSubduedPaceChasers: { + 200861, + "Subdued Pace Chasers", + "Slightly increase fatigue for pace chasers early-race.", + 20086, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_senko_otherself>=1&phase_random==0&accumulatetime>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 2, + }, + }, + }, + }, + 130, + 30051, + }, + SkillFlusteredPaceChasers: { + 200871, + "Flustered Pace Chasers", + "Slightly increase fatigue for pace chasers mid-race.", + 20087, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_senko_otherself>=1&phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 2, + }, + }, + }, + }, + 130, + 30051, + }, + SkillHesitantPaceChasers: { + 200881, + "Hesitant Pace Chasers", + "Slightly decrease velocity of pace chasers late-race.", + 20088, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_senko_otherself>=1&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 18, + 2, + }, + }, + }, + }, + 130, + 30011, + }, + SkillSubduedLateSurgers: { + 200891, + "Subdued Late Surgers", + "Slightly increase fatigue for late surgers early-race.", + 20089, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_sashi_otherself>=1&phase_random==0&accumulatetime>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 3, + }, + }, + }, + }, + 130, + 30051, + }, + SkillFlusteredLateSurgers: { + 200901, + "Flustered Late Surgers", + "Slightly increase fatigue for late surgers mid-race.", + 20090, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_sashi_otherself>=1&phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 3, + }, + }, + }, + }, + 130, + 30051, + }, + SkillHesitantLateSurgers: { + 200911, + "Hesitant Late Surgers", + "Slightly decrease velocity of late surgers late-race.", + 20091, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_sashi_otherself>=1&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 18, + 3, + }, + }, + }, + }, + 130, + 30011, + }, + SkillSubduedEndClosers: { + 200921, + "Subdued End Closers", + "Slightly increase fatigue for end closers early-race.", + 20092, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_oikomi_otherself>=1&phase_random==0&accumulatetime>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 4, + }, + }, + }, + }, + 130, + 30051, + }, + SkillFlusteredEndClosers: { + 200931, + "Flustered End Closers", + "Slightly increase fatigue for end closers mid-race.", + 20093, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_oikomi_otherself>=1&phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 18, + 4, + }, + }, + }, + }, + 130, + 30051, + }, + SkillHesitantEndClosers: { + 200941, + "Hesitant End Closers", + "Slightly decrease velocity of end closers late-race.", + 20094, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style_count_oikomi_otherself>=1&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 18, + 4, + }, + }, + }, + }, + 130, + 30011, + }, + SkillOiRacecourseLv2: { + 200951, + "Oi Racecourse ◎", + "Increase performance at Oi Racecourse.", + 20095, + 1, + 2, + 174, + false, + []Activation{ + { + "", + "track_id==10101", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10021, + }, + SkillOiRacecourse: { + 200952, + "Oi Racecourse ○", + "Moderately increase performance at Oi Racecourse.", + 20095, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "track_id==10101", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 90, + 10021, + }, + SkillOiRacecourseX: { + 200953, + "Oi Racecourse ×", + "Moderately decrease performance at Oi Racecourse.", + 20095, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "track_id==10101", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10024, + }, + SkillSprintStraightawaysLv2: { + 200961, + "Sprint Straightaways ◎", + "Moderately increase velocity on a straight. (Sprint)", + 20096, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==1&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillSprintStraightaways: { + 200962, + "Sprint Straightaways ○", + "Slightly increase velocity on a straight. (Sprint)", + 20096, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==1&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillSprintCornersLv2: { + 200971, + "Sprint Corners ◎", + "Moderately increase velocity on a corner. (Sprint)", + 20097, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==1&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillSprintCorners: { + 200972, + "Sprint Corners ○", + "Slightly increase velocity on a corner. (Sprint)", + 20097, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==1&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillStaggeringLead: { + 200981, + "Staggering Lead", + "Increase ability to maintain the lead when leading by a large margin mid-race. (Sprint)", + 20098, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==1&phase==1&bashin_diff_behind>=3&order==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 170, + 20012, + }, + SkillHugeLead: { + 200982, + "Huge Lead", + "Slightly increase ability to maintain the lead when leading by a large margin mid-race. (Sprint)", + 20098, + 1, + 1, + 262, + true, + []Activation{ + { + "", + "distance_type==1&phase==1&bashin_diff_behind>=3&order==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 170, + 20011, + }, + SkillPlanX: { + 200991, + "Plan X", + "Increase passing ability when positioned toward the front upon approaching late-race. (Sprint)", + 20099, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==1&phase_laterhalf_random==1&order>=2&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 160, + 20042, + }, + SkillCountermeasure: { + 200992, + "Countermeasure", + "Slightly increase passing ability when positioned toward the front upon approaching late-race. (Sprint)", + 20099, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==1&phase_laterhalf_random==1&order>=2&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 160, + 20041, + }, + SkillPerfectPrep: { + 201001, + "Perfect Prep!", + "Prepare to make for the finish line for a medium duration mid-race. (Sprint)", + 20100, + 2, + 2, + 394, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==1", + 40000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 140, + 20052, + }, + SkillMeticulousMeasures: { + 201002, + "Meticulous Measures", + "Moderately prepare to make for the finish line for a medium duration mid-race. (Sprint)", + 20100, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==1", + 40000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 250, + 1, + 0, + }, + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 140, + 20051, + }, + SkillAdoredbyAll: { + 201011, + "Adored by All", + "Intimidate runners behind when positioned toward the front early-race. (Sprint)", + 20101, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==0&order_rate<=50&accumulatetime>=5", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2500, + 10, + 18, + }, + }, + }, + }, + 170, + 30012, + }, + SkillIntimidate: { + 201012, + "Intimidate", + "Moderately intimidate runners behind when positioned toward the front early-race. (Sprint)", + 20101, + 1, + 1, + 262, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==0&order_rate<=50&accumulatetime>=5", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2000, + 10, + 18, + }, + }, + }, + }, + 170, + 30011, + }, + SkillYouveGotNoShot: { + 201021, + "You've Got No Shot", + "Cause panic in and moderately dull movement for runners ahead when positioned toward the back early-race. (Sprint)", + 20102, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==0&order_rate>50&accumulatetime>=5", + 12000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -300, + 9, + 18, + }, + { + AbilityAccel, + 1, + -2000, + 9, + 18, + }, + }, + }, + }, + 170, + 30052, + }, + SkillStopRightThere: { + 201022, + "Stop Right There!", + "Slightly cause panic in and very slightly dull movement for runners ahead when positioned toward the back early-race. (Sprint)", + 20102, + 1, + 1, + 262, + true, + []Activation{ + { + "", + "distance_type==1&phase_random==0&order_rate>50&accumulatetime>=5", + 12000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 9, + 18, + }, + { + AbilityAccel, + 1, + -500, + 9, + 18, + }, + }, + }, + }, + 170, + 30051, + }, + SkillMileStraightawaysLv2: { + 201031, + "Mile Straightaways ◎", + "Moderately increase velocity on a straight. (Mile)", + 20103, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==2&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillMileStraightaways: { + 201032, + "Mile Straightaways ○", + "Slightly increase velocity on a straight. (Mile)", + 20103, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillMileCornersLv2: { + 201041, + "Mile Corners ◎", + "Moderately increase velocity on a corner. (Mile)", + 20104, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==2&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillMileCorners: { + 201042, + "Mile Corners ○", + "Slightly increase velocity on a corner. (Mile)", + 20104, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillChangingGears: { + 201051, + "Changing Gears", + "Increase passing ability when positioned toward the front mid-race. (Mile)", + 20105, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==1&order_rate<=50", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillShiftingGears: { + 201052, + "Shifting Gears", + "Slightly increase passing ability when positioned toward the front mid-race. (Mile)", + 20105, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==1&order_rate<=50", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillStepontheGas: { + 201061, + "Step on the Gas!", + "Increase acceleration when passing another runner mid-race. (Mile)", + 20106, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==2&phase==1&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 160, + 20042, + }, + SkillAcceleration: { + 201062, + "Acceleration", + "Slightly increase acceleration when passing another runner mid-race. (Mile)", + 20106, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase==1&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 160, + 20041, + }, + SkillBigSisterly: { + 201071, + "Big-Sisterly", + "Increase passing ability. (Mile)", + 20107, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "distance_type==2&is_overtake==1&accumulatetime>=5", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 120, + 20012, + }, + SkillUnyieldingSpirit: { + 201072, + "Unyielding Spirit", + "Slightly increase passing ability. (Mile)", + 20107, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&is_overtake==1&accumulatetime>=5", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 120, + 20011, + }, + SkillGreedforSpeed: { + 201081, + "Greed for Speed", + "Moderately steal velocity from runners behind when positioned toward the front mid-race. (Mile)", + 20108, + 2, + 2, + 461, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==1&order<=3", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2000, + 10, + 5, + }, + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 160, + 30012, + }, + SkillSpeedEater: { + 201082, + "Speed Eater", + "Slightly steal velocity from runners behind when positioned toward the front mid-race. (Mile)", + 20108, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==1&order<=3", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 10, + 5, + }, + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 30011, + }, + SkillBattleFormation: { + 201091, + "Battle Formation", + "Dull movement for runners ahead when positioned toward the back early-race. (Mile)", + 20109, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==0&order_rate>50&accumulatetime>=3", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + -3000, + 9, + 18, + }, + }, + }, + }, + 160, + 30022, + }, + SkillOpeningGambit: { + 201092, + "Opening Gambit", + "Slightly dull movement for runners ahead when positioned toward the back early-race. (Mile)", + 20109, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==2&phase_random==0&order_rate>50&accumulatetime>=3", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + -1000, + 9, + 18, + }, + }, + }, + }, + 160, + 30021, + }, + SkillMediumStraightawaysLv2: { + 201101, + "Medium Straightaways ◎", + "Moderately increase velocity on a straight. (Medium)", + 20110, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==3&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillMediumStraightaways: { + 201102, + "Medium Straightaways ○", + "Slightly increase velocity on a straight. (Medium)", + 20110, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillMediumCornersLv2: { + 201111, + "Medium Corners ◎", + "Moderately increase velocity on a corner. (Medium)", + 20111, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==3&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillMediumCorners: { + 201112, + "Medium Corners ○", + "Slightly increase velocity on a corner. (Medium)", + 20111, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillClairvoyance: { + 201121, + "Clairvoyance", + "Widen field of view with heightened observation early-race. (Medium)", + 20112, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==0", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 150000, + 1, + 0, + }, + }, + }, + }, + 110, + 20092, + }, + SkillHawkeye: { + 201122, + "Hawkeye", + "Moderately widen field of view with heightened observation early-race. (Medium)", + 20112, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==0", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 100000, + 1, + 0, + }, + }, + }, + }, + 110, + 20091, + }, + SkillLightningStep: { + 201131, + "Lightning Step", + "Avoid becoming surrounded for a medium duration when positioned toward the back mid-race. (Medium)", + 20113, + 2, + 2, + 394, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==1&order_rate>50", + 40000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 140, + 20052, + }, + SkillThunderboltStep: { + 201132, + "Thunderbolt Step", + "Moderately avoid becoming surrounded for a medium duration when positioned toward the back mid-race. (Medium)", + 20113, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==1&order_rate>50", + 40000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 250, + 1, + 0, + }, + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 140, + 20051, + }, + SkillMiraculousStep: { + 201141, + "Miraculous Step", + "Decrease fatigue when moving sideways. (Medium)", + 20114, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&is_move_lane==1&accumulatetime>=10@distance_type==3&is_move_lane==2&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 160, + 20022, + }, + SkillSoftStep: { + 201142, + "Soft Step", + "Slightly decrease fatigue when moving sideways. (Medium)", + 20114, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&is_move_lane==1&accumulatetime>=10@distance_type==3&is_move_lane==2&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillDominator: { + 201151, + "Dominator", + "Decrease velocity of runners ahead when positioned toward the back late-race. (Medium)", + 20115, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2500, + 9, + 18, + }, + }, + }, + }, + 160, + 30012, + }, + SkillTether: { + 201152, + "Tether", + "Slightly decrease velocity of runners ahead when positioned toward the back late-race. (Medium)", + 20115, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 9, + 18, + }, + }, + }, + }, + 160, + 30011, + }, + SkillMystifyingMurmur: { + 201161, + "Mystifying Murmur", + "Disturb runners directly ahead mid-race. (Medium)", + 20116, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&phase==1&blocked_front_continuetime>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -300, + 9, + 18, + }, + }, + }, + }, + 160, + 30052, + }, + SkillMurmur: { + 201162, + "Murmur", + "Slightly disturb runners directly ahead mid-race. (Medium)", + 20116, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&phase==1&blocked_front_continuetime>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 9, + 18, + }, + }, + }, + }, + 160, + 30051, + }, + SkillLongStraightawaysLv2: { + 201171, + "Long Straightaways ◎", + "Moderately increase velocity on a straight. (Long)", + 20117, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==4&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillLongStraightaways: { + 201172, + "Long Straightaways ○", + "Slightly increase velocity on a straight. (Long)", + 20117, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillLongCornersLv2: { + 201181, + "Long Corners ◎", + "Moderately increase velocity on a corner. (Long)", + 20118, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "distance_type==4&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 110, + 20011, + }, + SkillLongCorners: { + 201182, + "Long Corners ○", + "Slightly increase velocity on a corner. (Long)", + 20118, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillVanguardSpirit: { + 201191, + "Vanguard Spirit", + "Increase ability to maintain the lead when leading by a fair margin mid-race. (Long)", + 20119, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==4&phase_random==1&bashin_diff_behind>=1&order==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillKeepingtheLead: { + 201192, + "Keeping the Lead", + "Slightly increase ability to maintain the lead when leading by a fair margin mid-race. (Long)", + 20119, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&phase_random==1&bashin_diff_behind>=1&order==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillVIPPass: { + 201201, + "VIP Pass", + "Decrease fatigue when determined to pass another runner. (Long)", + 20120, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==4&is_overtake==1&accumulatetime>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 160, + 20022, + }, + SkillPassingPro: { + 201202, + "Passing Pro", + "Slightly decrease fatigue when determined to pass another runner. (Long)", + 20120, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&is_overtake==1&accumulatetime>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillOverwhelmingPressure: { + 201211, + "Overwhelming Pressure", + "Increase velocity when passing another runner late-race. (Long)", + 20121, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==4&phase==2&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillPressure: { + 201212, + "Pressure", + "Slightly increase velocity when passing another runner late-race. (Long)", + 20121, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&phase==2&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillStaminaSiphon: { + 201221, + "Stamina Siphon", + "Slightly steal endurance from runners ahead when positioned toward the back mid-race. (Long)", + 20122, + 2, + 2, + 461, + true, + []Activation{ + { + "", + "distance_type==4&phase_random==1&order>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 9, + 5, + }, + { + AbilityHP, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 160, + 30052, + }, + SkillStaminaEater: { + 201222, + "Stamina Eater", + "Very slightly steal endurance from runners ahead when positioned toward the back mid-race. (Long)", + 20122, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==4&phase_random==1&order>=5", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -50, + 9, + 5, + }, + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 30051, + }, + SkillIllusionist: { + 201231, + "Illusionist", + "Narrow the field of view for runners ahead late-race. (Long)", + 20123, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "distance_type==4&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + -100000, + 9, + 18, + }, + }, + }, + }, + 110, + 30072, + }, + SkillSmokeScreen: { + 201232, + "Smoke Screen", + "Moderately narrow the field of view for runners ahead late-race. (Long)", + 20123, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "distance_type==4&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + -50000, + 9, + 18, + }, + }, + }, + }, + 110, + 30071, + }, + SkillFrontRunnerStraightawaysLv2: { + 201241, + "Front Runner Straightaways ◎", + "Moderately increase velocity on a straight. (Front Runner)", + 20124, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==1&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillFrontRunnerStraightaways: { + 201242, + "Front Runner Straightaways ○", + "Slightly increase velocity on a straight. (Front Runner)", + 20124, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillFrontRunnerCornersLv2: { + 201251, + "Front Runner Corners ◎", + "Moderately increase velocity on a corner. (Front Runner)", + 20125, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==1&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillFrontRunnerCorners: { + 201252, + "Front Runner Corners ○", + "Slightly increase velocity on a corner. (Front Runner)", + 20125, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillSixthSense: { + 201261, + "Sixth Sense", + "Avoid becoming surrounded early-race. (Front Runner)", + 20126, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==1&phase==0&blocked_front_continuetime>=1@running_style==1&phase==0&blocked_side_continuetime>=1", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + { + AbilityLaneChange, + 1, + 5000, + 1, + 0, + }, + }, + }, + }, + 110, + 20052, + }, + SkillDodgingDanger: { + 201262, + "Dodging Danger", + "Moderately avoid becoming surrounded early-race. (Front Runner)", + 20126, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "running_style==1&phase==0&blocked_front_continuetime>=1@running_style==1&phase==0&blocked_side_continuetime>=1", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 250, + 1, + 0, + }, + { + AbilityLaneChange, + 1, + 5000, + 1, + 0, + }, + }, + }, + }, + 110, + 20051, + }, + SkillLeadersPride: { + 201272, + "Leader's Pride", + "Slightly increase ability to pass or challenge another runner early-race or mid-race. (Front Runner)", + 20127, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&phase<=1&change_order_onetime>0&accumulatetime>=5@running_style==1&phase<=1&blocked_side_continuetime>=2&accumulatetime>=5", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillRestless: { + 201281, + "Restless", + "Reduce fatigue on an uphill. (Front Runner)", + 20128, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==1&slope==1&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillMoxie: { + 201282, + "Moxie", + "Slightly reduce fatigue on an uphill. (Front Runner)", + 20128, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&slope==1&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillReignition: { + 201291, + "Reignition", + "Increase acceleration when not in the lead mid-race. (Front Runner)", + 20129, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==1&phase_random==1&order>=2", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 4000, + 1, + 0, + }, + }, + }, + }, + 180, + 20042, + }, + SkillSecondWind: { + 201292, + "Second Wind", + "Slightly increase acceleration when not in the lead mid-race. (Front Runner)", + 20129, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&phase_random==1&order>=2", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 180, + 20041, + }, + SkillRestart: { + 201302, + "Restart", + "Slightly dull movement for runners ahead when not in the lead early-race. (Front Runner)", + 20130, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==1&phase_random==0&order>=2&accumulatetime>=5", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + -1000, + 9, + 18, + }, + }, + }, + }, + 130, + 30021, + }, + SkillPaceChaserStraightawaysLv2: { + 201311, + "Pace Chaser Straightaways ◎", + "Moderately increase velocity on a straight. (Pace Chaser)", + 20131, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==2&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillPaceChaserStraightaways: { + 201312, + "Pace Chaser Straightaways ○", + "Slightly increase velocity on a straight. (Pace Chaser)", + 20131, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillPaceChaserCornersLv2: { + 201321, + "Pace Chaser Corners ◎", + "Moderately increase velocity on a corner. (Pace Chaser)", + 20132, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==2&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillPaceChaserCorners: { + 201322, + "Pace Chaser Corners ○", + "Slightly increase velocity on a corner. (Pace Chaser)", + 20132, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillTechnician: { + 201331, + "Technician", + "Moderately increase ability to navigate smoothly. (Pace Chaser)", + 20133, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==2&is_move_lane==1@running_style==2&is_move_lane==2", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 120, + 20042, + }, + SkillShrewdStep: { + 201332, + "Shrewd Step", + "Slightly increase ability to navigate smoothly. (Pace Chaser)", + 20133, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&is_move_lane==1@running_style==2&is_move_lane==2", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 120, + 20041, + }, + SkillDeterminedDescent: { + 201341, + "Determined Descent", + "Moderately improve running on a downhill. (Pace Chaser)", + 20134, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==2&down_slope_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 120, + 20042, + }, + SkillStraightDescent: { + 201342, + "Straight Descent", + "Slightly improve running on a downhill. (Pace Chaser)", + 20134, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&down_slope_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 120, + 20041, + }, + SkillGourmand: { + 201351, + "Gourmand", + "Recover endurance mid-race. (Pace Chaser)", + 20135, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==2&phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillHydrate: { + 201352, + "Hydrate", + "Slightly recover endurance mid-race. (Pace Chaser)", + 20135, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillShatterproof: { + 201361, + "Shatterproof", + "Moderately increase acceleration when positioned toward the back mid-race. (Pace Chaser)", + 20136, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==2&phase_random==1&order_rate>40", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 120, + 20042, + }, + SkillTacticalTweak: { + 201362, + "Tactical Tweak", + "Slightly increase acceleration when positioned toward the back mid-race. (Pace Chaser)", + 20136, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&phase_random==1&order_rate>40", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 120, + 20041, + }, + SkillDazzlingDisorientation: { + 201371, + "Dazzling Disorientation", + "Moderately narrow the field of view for runners behind when positioned toward the front late-race. (Pace Chaser)", + 20137, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==2&phase_random==2&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + -50000, + 10, + 18, + }, + }, + }, + }, + 110, + 30072, + }, + SkillDisorient: { + 201372, + "Disorient", + "Slightly narrow the field of view for runners behind when positioned toward the front late-race. (Pace Chaser)", + 20137, + 1, + 1, + 85, + true, + []Activation{ + { + "", + "running_style==2&phase_random==2&order_rate<=50", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + -30000, + 10, + 18, + }, + }, + }, + }, + 110, + 30071, + }, + SkillLateSurgerStraightawaysLv2: { + 201381, + "Late Surger Straightaways ◎", + "Moderately increase velocity on a straight. (Late Surger)", + 20138, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==3&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillLateSurgerStraightaways: { + 201382, + "Late Surger Straightaways ○", + "Slightly increase velocity on a straight. (Late Surger)", + 20138, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillLateSurgerCornersLv2: { + 201391, + "Late Surger Corners ◎", + "Moderately increase velocity on a corner. (Late Surger)", + 20139, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==3&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillLateSurgerCorners: { + 201392, + "Late Surger Corners ○", + "Slightly increase velocity on a corner. (Late Surger)", + 20139, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillHardWorker: { + 201401, + "Hard Worker", + "Moderately increase acceleration for a medium duration when trying to pass another runner. (Late Surger)", + 20140, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==3&is_overtake==1&accumulatetime>=5", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 120, + 20042, + }, + SkillFighter: { + 201402, + "Fighter", + "Slightly increase acceleration for a medium duration when trying to pass another runner. (Late Surger)", + 20140, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&is_overtake==1&accumulatetime>=5", + 40000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 120, + 20041, + }, + SkillFifteenMillionCC: { + 201411, + "15,000,000 CC", + "Increase velocity on an uphill. (Late Surger)", + 20141, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==3&up_slope_random==1", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 120, + 20012, + }, + SkillOneMillionCC: { + 201412, + "1,500,000 CC", + "Slightly increase velocity on an uphill. (Late Surger)", + 20141, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&up_slope_random==1", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 120, + 20011, + }, + SkillRelax: { + 201421, + "Relax", + "Recover endurance late-race. (Late Surger)", + 20142, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==3&phase_random==2", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillASmallBreather: { + 201422, + "A Small Breather", + "Slightly recover endurance late-race. (Late Surger)", + 20142, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&phase_random==2", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillTheBiggerPicture: { + 201431, + "The Bigger Picture", + "Widen field of view with heightened observation mid-race. (Late Surger)", + 20143, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==3&phase_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 150000, + 1, + 0, + }, + }, + }, + }, + 120, + 20092, + }, + SkillStudious: { + 201432, + "Studious", + "Slightly widen field of view with heightened observation mid-race. (Late Surger)", + 20143, + 1, + 1, + 85, + true, + []Activation{ + { + "", + "running_style==3&phase_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 120, + 20091, + }, + SkillAllSeeingEyes: { + 201441, + "All-Seeing Eyes", + "Startle other runners late-race. (Late Surger)", + 20144, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==3&phase_random==2&order_rate>50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -300, + 4, + 18, + }, + }, + }, + }, + 180, + 30052, + }, + SkillSharpGaze: { + 201442, + "Sharp Gaze", + "Slightly startle other runners late-race. (Late Surger)", + 20144, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&phase_random==2&order_rate>50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + -100, + 4, + 18, + }, + }, + }, + }, + 180, + 30051, + }, + SkillEndCloserStraightawaysLv2: { + 201451, + "End Closer Straightaways ◎", + "Moderately increase velocity on a straight. (End Closer)", + 20145, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==4&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillEndCloserStraightaways: { + 201452, + "End Closer Straightaways ○", + "Slightly increase velocity on a straight. (End Closer)", + 20145, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&straight_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillEndCloserCornersLv2: { + 201461, + "End Closer Corners ◎", + "Moderately increase velocity on a corner. (End Closer)", + 20146, + 1, + 2, + 262, + true, + []Activation{ + { + "", + "running_style==4&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 140, + 20011, + }, + SkillEndCloserCorners: { + 201462, + "End Closer Corners ○", + "Slightly increase velocity on a corner. (End Closer)", + 20146, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&all_corner_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 130, + 20011, + }, + SkillTheCoastIsClear: { + 201471, + "The Coast Is Clear!", + "Moderately widen field of view with situational awareness when moving sideways. (End Closer)", + 20147, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==4&is_move_lane==1@running_style==4&is_move_lane==2", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 100000, + 1, + 0, + }, + }, + }, + }, + 110, + 20092, + }, + SkillICanSeeRightThroughYou: { + 201472, + "I Can See Right Through You", + "Slightly widen field of view with situational awareness when moving sideways. (End Closer)", + 20147, + 1, + 1, + 85, + true, + []Activation{ + { + "", + "running_style==4&is_move_lane==1@running_style==4&is_move_lane==2", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 110, + 20091, + }, + SkillGoHomeSpecialist: { + 201481, + "Go-Home Specialist", + "Reduce fatigue on a downhill. (End Closer)", + 20148, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==4&slope==2&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 170, + 20022, + }, + SkillAfterSchoolStroll: { + 201482, + "After-School Stroll", + "Slightly reduce fatigue on a downhill. (End Closer)", + 20148, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&slope==2&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 170, + 20021, + }, + SkillSerenity: { + 201491, + "Serenity", + "Regain composure by calming down when the way ahead is jammed. (End Closer)", + 20149, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==4&blocked_front_continuetime>=1&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillLevelheaded: { + 201492, + "Levelheaded", + "Slightly regain composure by calming down when the way ahead is jammed. (End Closer)", + 20149, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&blocked_front_continuetime>=1&accumulatetime>=10", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillCrusader: { + 201501, + "Crusader", + "Widen field of view when positioned toward the back late-race. (End Closer)", + 20150, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "running_style==4&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 150000, + 1, + 0, + }, + }, + }, + }, + 110, + 20092, + }, + SkillStrategist: { + 201502, + "Strategist", + "Slightly widen field of view when positioned toward the back late-race. (End Closer)", + 20150, + 1, + 1, + 85, + true, + []Activation{ + { + "", + "running_style==4&phase_random==2&order_rate>50", + 30000, + 5000000, + []Ability{ + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 110, + 20091, + }, + SkillPetrifyingGaze: { + 201511, + "Petrifying Gaze", + "Unnerve runners in focus late-race. (End Closer)", + 20151, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==4&phase_random==2&order>=2", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -2500, + 4, + 18, + }, + }, + }, + }, + 180, + 30012, + }, + SkillIntenseGaze: { + 201512, + "Intense Gaze", + "Slightly unnerve runners in focus late-race. (End Closer)", + 20151, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&phase_random==2&order>=2", + 30000, + 5000000, + []Ability{ + { + AbilityCurrentSpeed, + 1, + -1500, + 4, + 18, + }, + }, + }, + }, + 180, + 30011, + }, + SkillFrontRunnerSavvyLv2: { + 201521, + "Front Runner Savvy ◎", + "Increase ability to get into a good position. (Front Runner)", + 20152, + 1, + 2, + 217, + false, + []Activation{ + { + "", + "running_style==1", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 600000, + 1, + 0, + }, + { + AbilityVision, + 1, + 100000, + 1, + 0, + }, + }, + }, + }, + 130, + 10051, + }, + SkillFrontRunnerSavvy: { + 201522, + "Front Runner Savvy ○", + "Moderately increase ability to get into a good position. (Front Runner)", + 20152, + 1, + 1, + 174, + false, + []Activation{ + { + "", + "running_style==1", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 400000, + 1, + 0, + }, + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 110, + 10051, + }, + SkillPaceChaserSavvyLv2: { + 201531, + "Pace Chaser Savvy ◎", + "Increase ability to get into a good position. (Pace Chaser)", + 20153, + 1, + 2, + 217, + false, + []Activation{ + { + "", + "running_style==2", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 600000, + 1, + 0, + }, + { + AbilityVision, + 1, + 100000, + 1, + 0, + }, + }, + }, + }, + 130, + 10051, + }, + SkillPaceChaserSavvy: { + 201532, + "Pace Chaser Savvy ○", + "Moderately increase ability to get into a good position. (Pace Chaser)", + 20153, + 1, + 1, + 174, + false, + []Activation{ + { + "", + "running_style==2", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 400000, + 1, + 0, + }, + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 110, + 10051, + }, + SkillLateSurgerSavvyLv2: { + 201541, + "Late Surger Savvy ◎", + "Increase ability to get into a good position. (Late Surger)", + 20154, + 1, + 2, + 217, + false, + []Activation{ + { + "", + "running_style==3", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 600000, + 1, + 0, + }, + { + AbilityVision, + 1, + 100000, + 1, + 0, + }, + }, + }, + }, + 130, + 10051, + }, + SkillLateSurgerSavvy: { + 201542, + "Late Surger Savvy ○", + "Moderately increase ability to get into a good position. (Late Surger)", + 20154, + 1, + 1, + 174, + false, + []Activation{ + { + "", + "running_style==3", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 400000, + 1, + 0, + }, + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 110, + 10051, + }, + SkillEndCloserSavvyLv2: { + 201551, + "End Closer Savvy ◎", + "Increase ability to get into a good position. (End Closer)", + 20155, + 1, + 2, + 217, + false, + []Activation{ + { + "", + "running_style==4", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 600000, + 1, + 0, + }, + { + AbilityVision, + 1, + 100000, + 1, + 0, + }, + }, + }, + }, + 130, + 10051, + }, + SkillEndCloserSavvy: { + 201552, + "End Closer Savvy ○", + "Moderately increase ability to get into a good position. (End Closer)", + 20155, + 1, + 1, + 174, + false, + []Activation{ + { + "", + "running_style==4", + -1, + 0, + []Ability{ + { + AbilityPassiveWit, + 1, + 400000, + 1, + 0, + }, + { + AbilityVision, + 1, + 50000, + 1, + 0, + }, + }, + }, + }, + 110, + 10051, + }, + SkillSuperLuckySeven: { + 201561, + "Super Lucky Seven", + "Good things may happen when in bracket 7.", + 20156, + 2, + 2, + 334, + true, + []Activation{ + { + "", + "random_lot==50&post_number==7", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 600000, + 1, + 0, + }, + { + AbilityPassiveStamina, + 1, + 600000, + 1, + 0, + }, + { + AbilityPassivePower, + 1, + 600000, + 1, + 0, + }, + }, + }, + }, + 110, + 10062, + }, + SkillLuckySeven: { + 201562, + "Lucky Seven", + "Moderately good things may happen when in bracket 7.", + 20156, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "random_lot==50&post_number==7", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + { + AbilityPassivePower, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 110, + 10061, + }, + SkillTripleSevens: { + 201571, + "Triple 7s", + "Slightly gain energy with 777m remaining.", + 20157, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "remain_distance<=778&remain_distance>=776", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 160, + 20021, + }, + SkillHighlander: { + 201581, + "Highlander", + "Slightly improve running on an uphill.", + 20158, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "up_slope_random==1", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 160, + 20041, + }, + SkillUmaStan: { + 201591, + "Uma Stan", + "Slightly increase velocity when close to many runners.", + 20159, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "near_count>=3&accumulatetime>=5", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillSuperstan: { + 201592, + "Superstan", + "Increase velocity when close to many runners.", + 20159, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "near_count>=3&accumulatetime>=5", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillGroundwork: { + 201601, + "Groundwork", + "Slightly increase acceleration after activating many skills early-race.", + 20160, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "activate_count_start>=3", + 30000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 100, + 20041, + }, + SkillTailHeldHigh: { + 201611, + "Tail Held High", + "Slightly increase velocity after activating many skills mid-race.", + 20161, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "activate_count_middle>=3", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 100, + 20011, + }, + SkillShakeItOut: { + 201621, + "Shake It Out", + "Slightly recover endurance after activating many skills late-race.", + 20162, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "activate_count_end_after>=3", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 100, + 20021, + }, + SkillSympathy: { + 201631, + "Sympathy", + "Moderately increase performance when many runners share a sympathetic heart.", + 20163, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "same_skill_horse_count>=5", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10011, + }, + SkillLoneWolf: { + 201641, + "Lone Wolf", + "Moderately increase performance when no other runners have the heart of a lone wolf.", + 20164, + 1, + 1, + 129, + false, + []Activation{ + { + "", + "same_skill_horse_count==1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 70, + 10011, + }, + SkillSlipstream: { + 201651, + "Slipstream", + "Slightly decrease wind resistance when following directly behind another runner.", + 20165, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "infront_near_lane_time>=3&accumulatetime>=10", + 30000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillPlaytimesOver: { + 201661, + "Playtime's Over!", + "Slightly increase velocity when followed by another runner directly behind for a long time.", + 20166, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "behind_near_lane_time>=3&accumulatetime>=10", + 30000, + 300000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillTrendingintheCharts: { + 201671, + "Trending in the Charts!", + "Increase velocity when engaged in a challenge mid-race. (Dirt)", + 20167, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "ground_type==2&phase==1&blocked_side_continuetime>=2", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 180, + 20012, + }, + SkillTopPick: { + 201672, + "Top Pick", + "Slightly increase velocity when engaged in a challenge mid-race. (Dirt)", + 20167, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "ground_type==2&phase==1&blocked_side_continuetime>=2", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillLeadtheCharge: { + 201681, + "Lead the Charge!", + "Prepare to aim for the front late-race. (Dirt)", + 20168, + 2, + 2, + 394, + true, + []Activation{ + { + "", + "ground_type==2&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 350, + 1, + 0, + }, + { + AbilityAccel, + 1, + 3000, + 1, + 0, + }, + }, + }, + }, + 140, + 20052, + }, + SkillForwardMarch: { + 201682, + "Forward, March!", + "Moderately prepare to aim for the front late-race. (Dirt)", + 20168, + 1, + 1, + 174, + true, + []Activation{ + { + "", + "ground_type==2&phase_random==2", + 30000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 1, + 250, + 1, + 0, + }, + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 140, + 20051, + }, + SkillLieinWait: { + 201691, + "Lie in Wait", + "Recover endurance when positioned toward the back upon approaching mid-race. (Late Surger)", + 20169, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "running_style==3&phase_laterhalf_random==0&order_rate>=50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 550, + 1, + 0, + }, + }, + }, + }, + 180, + 20022, + }, + SkillBeStill: { + 201692, + "Be Still", + "Slightly recover endurance when positioned toward the back upon approaching mid-race. (Late Surger)", + 20169, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==3&phase_laterhalf_random==0&order_rate>=50", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 180, + 20021, + }, + SkillComeWhatMay: { + 201701, + "Come What May", + "Increase velocity when well-positioned on a straight in the last spurt. (Medium)", + 20170, + 2, + 2, + 508, + true, + []Activation{ + { + "", + "distance_type==3&is_lastspurt==1&corner==0&order_rate>=20&order_rate<=60", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 3500, + 1, + 0, + }, + }, + }, + }, + 160, + 20012, + }, + SkillAllIveGot: { + 201702, + "All I've Got", + "Slightly increase velocity when well-positioned on a straight in the last spurt. (Medium)", + 20170, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "distance_type==3&is_lastspurt==1&corner==0&order_rate>=20&order_rate<=60", + 24000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 160, + 20011, + }, + SkillNailArt: { + 201801, + "♡ 3D Nail Art", + "Moderately decrease performance on firm ground.", + 20180, + 1, + -1, + -129, + false, + []Activation{ + { + "", + "ground_condition==1", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + -400000, + 1, + 0, + }, + }, + }, + }, + 50, + 10014, + }, + SkillHeadOn: { + 201902, + "Head-On", + "Slightly increase acceleration when positioned toward the front late-race. (Pace Chaser)", + 20190, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==2&phase_random==2&order_rate<=50", + 18000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 180, + 20041, + }, + SkillEarlyStart: { + 202022, + "Early Start", + "Very slightly increase velocity for a medium duration when positioned toward the back mid-race. (End Closer)", + 20202, + 1, + 1, + 217, + true, + []Activation{ + { + "", + "running_style==4&phase_random==1&order_rate>=50", + 40000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 180, + 20011, + }, + SkillRiskyBusiness: { + 202032, + "Risky Business", + "Moderately increase velocity in the second half of the race, but also greatly increase fatigue sometimes.", + 20203, + 1, + 1, + 129, + true, + []Activation{ + { + "", + "distance_rate_after_random==50", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + { + AbilityHP, + 8, + -10000, + 1, + 0, + }, + }, + }, + }, + 120, + 20011, + }, + SkillRunaway: { + 202051, + "Runaway", + "Attempt to gain an especially large lead and keep it until the finish. (Front Runner)", + 20205, + 2, + 2, + 370, + false, + []Activation{ + { + "", + "running_style==1", + -1, + 0, + []Ability{ + { + AbilityGreatEscape, + 1, + 0, + 1, + 0, + }, + }, + }, + }, + 200, + 40012, + }, + SkillBurningSpiritSPD: { + 210011, + "Burning Spirit SPD", + "Burn bright with team spirit, increasing velocity in proportion to the total Speed of racing team members mid-race.", + 21001, + 2, + 2, + 633, + true, + []Activation{ + { + "", + "phase_random==1", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 3, + 3500, + 1, + 0, + }, + }, + }, + }, + 200, + 20102, + }, + SkillIgnitedSpiritSPD: { + 210012, + "Ignited Spirit SPD", + "Burn bright with team spirit, slightly increasing velocity in proportion to the total Speed of racing team members mid-race.", + 21001, + 1, + 1, + 263, + true, + []Activation{ + { + "", + "phase_random==1", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 3, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20101, + }, + SkillBurningSpiritSTA: { + 210021, + "Burning Spirit STA", + "Burn bright with team spirit, recovering endurance in proportion to the total Stamina of racing team members mid-race.", + 21002, + 2, + 2, + 633, + true, + []Activation{ + { + "", + "phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 4, + 550, + 1, + 0, + }, + }, + }, + }, + 200, + 20112, + }, + SkillIgnitedSpiritSTA: { + 210022, + "Ignited Spirit STA", + "Burn bright with team spirit, slightly recovering endurance in proportion to the total Stamina of racing team members mid-race.", + 21002, + 1, + 1, + 263, + true, + []Activation{ + { + "", + "phase_random==1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 4, + 150, + 1, + 0, + }, + }, + }, + }, + 200, + 20111, + }, + SkillBurningSpiritPWR: { + 210031, + "Burning Spirit PWR", + "Burn bright with team spirit, increasing acceleration in proportion to the total Power of racing team members late-race.", + 21003, + 2, + 2, + 633, + true, + []Activation{ + { + "", + "phase_random==2", + 12000, + 5000000, + []Ability{ + { + AbilityAccel, + 5, + 4000, + 1, + 0, + }, + }, + }, + }, + 200, + 20122, + }, + SkillIgnitedSpiritPWR: { + 210032, + "Ignited Spirit PWR", + "Burn bright with team spirit, slightly increasing acceleration in proportion to the total Power of racing team members late-race.", + 21003, + 1, + 1, + 263, + true, + []Activation{ + { + "", + "phase_random==2", + 12000, + 5000000, + []Ability{ + { + AbilityAccel, + 5, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20121, + }, + SkillBurningSpiritGUTS: { + 210041, + "Burning Spirit GUTS", + "Burn bright with team spirit, increasing vigor in proportion to the total Guts of racing team members late-race.", + 21004, + 2, + 2, + 633, + true, + []Activation{ + { + "", + "phase_random==2", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 6, + 2500, + 1, + 0, + }, + { + AbilityAccel, + 6, + 3000, + 1, + 0, + }, + }, + }, + }, + 200, + 20102, + }, + SkillIgnitedSpiritGUTS: { + 210042, + "Ignited Spirit GUTS", + "Burn bright with team spirit, very slightly increasing vigor in proportion to the total Guts of racing team members late-race.", + 21004, + 1, + 1, + 263, + true, + []Activation{ + { + "", + "phase_random==2", + 18000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 6, + 500, + 1, + 0, + }, + { + AbilityAccel, + 6, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20101, + }, + SkillBurningSpiritWIT: { + 210051, + "Burning Spirit WIT", + "Burn bright with team spirit, increasing strategic navigation for a medium duration in proportion to the total Wit of racing team members early-race.", + 21005, + 2, + 2, + 633, + true, + []Activation{ + { + "", + "phase_random==0", + 40000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 7, + 350, + 1, + 0, + }, + { + AbilityVision, + 7, + 150000, + 1, + 0, + }, + }, + }, + }, + 200, + 20132, + }, + SkillIgnitedSpiritWIT: { + 210052, + "Ignited Spirit WIT", + "Burn bright with team spirit, slightly increasing strategic navigation for a medium duration in proportion to the total Wit of racing team members early-race.", + 21005, + 1, + 1, + 263, + true, + []Activation{ + { + "", + "phase_random==0", + 40000, + 5000000, + []Ability{ + { + AbilityLaneSpeed, + 7, + 150, + 1, + 0, + }, + { + AbilityVision, + 7, + 50000, + 1, + 0, + }, + }, + }, + }, + 200, + 20131, + }, + SkillUnquenchedThirst: { + 300011, + "Unquenched Thirst", + "Moderately increase performance with the desire to race.", + 30001, + 1, + 1, + 0, + false, + []Activation{ + { + "", + "track_id==10008", + -1, + 0, + []Ability{ + { + AbilityPassiveStamina, + 1, + 400000, + 1, + 0, + }, + }, + }, + }, + 0, + 10021, + }, + SkillUnchanging: { + 300021, + "Unchanging", + "Greatly increase performance with the same ambition of days past.", + 30002, + 2, + 1, + 0, + false, + []Activation{ + { + "", + "season==4", + -1, + 0, + []Ability{ + { + AbilityPassiveSpeed, + 1, + 800000, + 1, + 0, + }, + }, + }, + }, + 0, + 10012, + }, + SkillShootingStarInherit: { + 900011, + "Shooting Star", + "Slightly increase velocity and very minimally increase acceleration after passing another runner toward the front late-race.", + 90001, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&order>=1&order_rate<=50&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillTheViewfromtheLeadIsMineInherit: { + 900021, + "The View from the Lead Is Mine!", + "Slightly increase velocity when in the lead by a fair margin in the second half of the race.", + 90002, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&order==1&bashin_diff_behind>=1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillSkyHighTeioStepInherit: { + 900031, + "Sky-High Teio Step", + "Moderately increase velocity when closing the gap to runners ahead on the final straight.", + 90003, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order<=3&bashin_diff_infront<=1&is_overtake==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillRedShiftLP1211MInherit: { + 900041, + "Red Shift/LP1211-M", + "Slightly increase acceleration when positioned toward the front on the final corner or later.", + 90004, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&order<=5&order_rate<=50", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillLightsofVaudevilleInherit: { + 900051, + "Lights of Vaudeville", + "Moderately increase velocity when just breaking out of the pack toward the front on the final straight.", + 90005, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order_rate<=30&behind_near_lane_time_set1>=1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillTriumphantPulseInherit: { + 900061, + "Triumphant Pulse", + "Moderately increase ability to break out of the pack when positioned toward the front with 200m remaining.", + 90006, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "order>=2&order<=5&order_rate<=50&remain_distance<=201&remain_distance>=199", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillAnchorsAweighInherit: { + 900071, + "Anchors Aweigh!", + "Very slightly increase velocity steadily with a long spurt starting halfway through the race.", + 90007, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&distance_rate<=60&order_rate>50", + 36000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillCutandDriveInherit: { + 900081, + "Cut and Drive!", + "Slightly increase velocity when positioned toward the front with 200m or less remaining.", + 90008, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "order>=3&order_rate<=50&remain_distance<=200&bashin_diff_infront<=1@order>=3&order_rate<=50&remain_distance<=200&bashin_diff_behind<=1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillResplendentRedAceInherit: { + 900091, + "Resplendent Red Ace", + "Very slightly swell with the determination to be number one when positioned toward the front in the second half of the race.", + 90009, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&order==1&bashin_diff_behind<=1@distance_rate>=50&order==2&is_overtake==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillShootingforVictoryInherit: { + 900101, + "Shooting for Victory!", + "Slightly increase acceleration when well-positioned upon approaching the final straight.", + 90010, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner_laterhalf==1&corner!=0&order>=3&order_rate<=40", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillWhereTheresaWillTheresaWayInherit: { + 900111, + "Where There's a Will, There's a Way", + "Slightly increase velocity when passing another runner toward the back on the final straight.", + 90011, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&change_order_onetime<0&order>=3", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillYouandMeOneonOneInherit: { + 900121, + "You and Me! One-on-One!", + "Slightly increase velocity on the final straight after passing another runner on the outside toward the back on the final corner or later.", + 90012, + 1, + 2, + 180, + true, + []Activation{ + { + "is_finalcorner==1&is_behind_in==1&change_order_onetime<0&order_rate>=40", + "is_finalcorner==1&corner==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillTheDutyofDignityCallsInherit: { + 900131, + "The Duty of Dignity Calls", + "Slightly increase velocity when positioned toward the front on the final corner.", + 90013, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&distance_diff_rate<=30", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillVictoriaporplanchaInherit: { + 900141, + "Victoria por plancha ☆", + "Very slightly hang on to the advantage when positioned toward the front with energy to spare on the final straight.", + 90014, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&hp_per>=30&order<=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillThisDanceIsforVittoriaInherit: { + 900151, + "This Dance Is for Vittoria!", + "Slightly increase velocity when positioned toward the front and close to the runner ahead or behind on the final corner or later.", + 90015, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&bashin_diff_behind<=1&order<=4@is_finalcorner==1&bashin_diff_infront<=1&order<=4", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillShadowBreakInherit: { + 900161, + "Shadow Break", + "Slightly increase velocity when passing another runner on the outside on the final corner or later. If the skill user engaged in a challenge mid-race, moderately increase velocity instead.", + 90016, + 1, + 2, + 180, + true, + []Activation{ + { + "phase==1&blocked_side_continuetime>=2", + "is_finalcorner==1&order>=2&order_rate<=75&is_behind_in==1&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + { + "", + "is_finalcorner==1&order>=2&order_rate<=75&is_behind_in==1&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillBeholdThineEmperorsDivineMightInherit: { + 900171, + "Behold Thine Emperor's Divine Might", + "Moderately increase velocity on the final straight after passing another runner 3 times late-race.", + 90017, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&change_order_up_end_after>=3&corner==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillBlazingPrideInherit: { + 900181, + "Blazing Pride", + "Slightly increase velocity when passing another runner from midpack or further back on the final corner.", + 90018, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order>=3&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillOMGTheFinalSprintInherit: { + 900191, + "OMG! (゚∀゚) The Final Sprint! ☆", + "Slightly increase velocity and navigation after passing another runner 2 times late-race.", + 90019, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "change_order_up_end_after>=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityLaneSpeed, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillAnglingandSchemingInherit: { + 900201, + "Angling and Scheming", + "Slightly increase acceleration when in the lead on a corner late-race.", + 90020, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&corner!=0&order==1", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillWinQEDInherit: { + 900231, + "∴win Q.E.D.", + "Slightly increase velocity when passing another runner toward the front on the final corner or later.", + 90023, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&change_order_onetime<0&order<=4", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillFlashyLandingInherit: { + 900241, + "Flashy☆Landing", + "Very slightly increase ability to break out of the pack on the straight after engaging in a challenge toward the front on the final corner or later.", + 90024, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&blocked_side_continuetime>=2&order<=3", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillChasingAfterYouInherit: { + 900251, + "Chasing After You", + "Very slightly increase velocity steadily and very minimally intimidate runners ahead when in midpack in the second half of the race.", + 90025, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&order_rate>=40&order_rate<=70", + 36000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityCurrentSpeed, + 1, + -250, + 9, + 5, + }, + }, + }, + }, + 200, + 20011, + }, + SkillG00FirstFInfinityInherit: { + 900261, + "G00 1st. F∞;", + "Slightly increase velocity when positioned toward the front after making it to the final straight without faltering.", + 90026, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_badstart==0&temptation_count==0&order<=3&is_finalcorner==1&corner==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillLetsPumpSomeIronInherit: { + 900271, + "Let's Pump Some Iron!", + "Slightly increase acceleration in an attempt to move up on a corner late-race.", + 90027, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&corner!=0&order_rate>=65&order_rate<=70", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillYUMMYSPEEDInherit: { + 900281, + "YUMMY☆SPEED!", + "Very slightly kick forward when moderately tired while well-positioned halfway through the race.", + 90028, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=45&distance_rate<=60&order>=3&order_rate<=50&hp_per<=70", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillBlueRoseCloserInherit: { + 900301, + "Blue Rose Closer", + "Slightly increase velocity on the final straight after passing another runner in the front part of the pack on the final corner or later.", + 90030, + 1, + 2, + 180, + true, + []Activation{ + { + "is_finalcorner==1&order<=4&change_order_onetime<0", + "is_finalcorner==1&corner==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillUma2Inherit: { + 900321, + "U=ma2", + "Slightly recover endurance and very slightly increase velocity for a moderate duration when sitting off the pace on a corner in the second half of the race.", + 90032, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&corner!=0&order>=3&order_rate<=40", + 24000, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 200, + 20021, + }, + SkillOurTickettoWinInherit: { + 900351, + "Our Ticket to Win!", + "Slightly increase velocity when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.", + 90035, + 1, + 2, + 180, + true, + []Activation{ + { + "is_finalcorner==1&blocked_side_continuetime>=2", + "is_finalcorner==1&corner==0&order<=5", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillSchwarzesSchwertInherit: { + 900371, + "Schwarzes Schwert", + "Slightly increase velocity in a dash for the lead after running calmly and according to plan up until the final straight.", + 90037, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_badstart==0&temptation_count==0&order>=3&is_finalcorner==1&corner==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillLookatCurrenInherit: { + 900381, + "#LookatCurren", + "Very slightly begin to advance when passing another runner while well-positioned around halfway through the race.", + 90038, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&distance_rate<=65&order>=2&order_rate<=40&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillAPrincessMustSeizeVictoryInherit: { + 900391, + "A Princess Must Seize Victory!", + "Slightly increase velocity when engaged in a challenge on the final straight.", + 90039, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&blocked_side_continuetime>=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillKEEPITREALInherit: { + 900401, + "KEEP IT REAL.", + "Very slightly increase acceleration steadily when starting to make a move from midpack in the second half of the race.", + 90040, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&order_rate>=40&order_rate<=70&is_overtake==1", + 36000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillGeniusxBakushinVictoryInherit: { + 900411, + "Genius x Bakushin = Victory", + "Slightly increase velocity when engaged in a challenge toward the front in the second half of the race.", + 90041, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&order<=3&blocked_side_continuetime>=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillPureHeartInherit: { + 900451, + "Pure Heart", + "Moderately recover endurance when well-positioned mid-race.", + 90045, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase_random==1&order>=2&order_rate<=40", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 200, + 20021, + }, + SkillSPARKLYSTARDOMInherit: { + 900461, + "SPARKLY☆STARDOM", + "Become very slightly empowered to keep the advantage when positioned toward the front and close to the runner behind on a straight mid-race.", + 90046, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase==1&corner==0&order<=2&bashin_diff_behind<=1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillPopAndPolishInherit: { + 900481, + "Pop & Polish", + "Slightly increase velocity when pressured by or passing another runner while well-positioned on the final straight.", + 90048, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order>=2&order_rate<=30&overtake_target_time>=2@is_finalcorner==1&corner==0&order_rate<=20&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillNemesisInherit: { + 900501, + "Nemesis", + "Slightly increase velocity when moving up from midpack on the final corner or later.", + 90050, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&order_rate>=40&order_rate<=75&is_overtake==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillSuperDuperClimaxInherit: { + 900521, + "Super-Duper Climax", + "Slightly recover endurance with a glance at nearby runners when positioned toward the back on the final corner.", + 90052, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate>50&near_count>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 200, + 20021, + }, + SkillISeeVictoryinMyFutureInherit: { + 900561, + "I See Victory in My Future!", + "Slightly clear a path forward depending on divination results when the way ahead is jammed late-race.", + 90056, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&order>=3&blocked_front==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillINeverGoofUpInherit: { + 900581, + "I Never Goof Up!", + "Very slightly aim for the front when passing another runner from midpack or further back on a corner late-race.", + 90058, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&corner!=0&order>=3&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillMovingPastandBeyondInherit: { + 900591, + "Moving Past, and Beyond", + "Having run the race calmly, slightly increase acceleration when making a move mid-race, or on a crucial corner late-race whilst in midpack.", + 90059, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&corner!=0&is_finalcorner==0&temptation_count==0&order_rate>=50&order_rate<=70@phase==1&corner!=0&is_finalcorner==1&temptation_count==0&order_rate>=50&order_rate<=70", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillJustaLittleFartherInherit: { + 900601, + "Just a Little Farther!", + "Slightly increase velocity when positioned 3rd and about to lose late-race.", + 90060, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase>=2&order==3&bashin_diff_behind<=1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillPridefulKingInherit: { + 900611, + "Prideful King", + "Moderately increase velocity in a true display of skill with 200m remaining after racing calmly.", + 90061, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "temptation_count==0&remain_distance<=201&remain_distance>=199&order>=4&order_rate<=70", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillDazzlnDiverInherit: { + 910011, + "Dazzl'n ♪ Diver", + "Slightly recover endurance after activating 2 skills mid-race.", + 91001, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase==1&order>=2&order_rate<=70&activate_count_middle>=2", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + }, + }, + }, + 200, + 20021, + }, + SkillCertainVictoryInherit: { + 910031, + "Certain Victory", + "Moderately increase velocity on the final straight after being on the heels of another runner toward the front on the final corner or later.", + 91003, + 1, + 2, + 180, + true, + []Activation{ + { + "is_finalcorner==1&is_overtake==1&order<=5&order_rate<=50&overtake_target_no_order_up_time>=2", + "is_finalcorner==1&corner==0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 2500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillAKissforCourageInherit: { + 910041, + "A Kiss for Courage", + "Slightly increase velocity when positioned toward the front in the second half of the race after recovering endurance with a skill.", + 91004, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&activate_count_heal>=1&order<=3", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillFestiveMiracleInherit: { + 910061, + "Festive Miracle", + "Very slightly control breathing and kick forward toward victory in the second half of the race after recovering endurance with skills at least 3 times.", + 91006, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "activate_count_heal>=3&distance_rate>=50", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + { + AbilityHP, + 1, + 50, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillSuperiorHealInherit: { + 910111, + "Superior Heal", + "Moderately recover endurance when overtaken toward the back mid-race.", + 91011, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase==1&change_order_onetime>0&order_rate>=40", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 350, + 1, + 0, + }, + }, + }, + }, + 200, + 20021, + }, + SkillLegacyoftheStrongInherit: { + 910131, + "Legacy of the Strong", + "Slightly increase velocity continuously when pressured by another runner and running out of energy toward the front on the final corner or later.", + 91013, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&hp_per<=45&order<=3&order_rate<=50&bashin_diff_behind<=1&overtake_target_time>=1", + 36000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillCondorsFuryInherit: { + 910141, + "Condor's Fury", + "Slightly increase acceleration when aiming for the front from midpack on the final corner.", + 91014, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&is_overtake==1&order>=4&order_rate<=75", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20041, + }, + SkillArrowsWhistleShadowsDisperseInherit: { + 910171, + "Arrows Whistle, Shadows Disperse", + "Slightly increase velocity when pressured by another runner in the front part of the pack on the final corner or later.", + 91017, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&order_rate<=40&overtake_target_time>=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillEternalMomentsInherit: { + 910181, + "Eternal Moments", + "Slightly increase velocity when starting to make a move from a position toward the front mid-race.", + 91018, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase==1&order>=3&order_rate<=50&is_overtake==1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillPresentsfromXInherit: { + 910231, + "Presents from X", + "Slightly increase velocity mid-race after staying well-positioned from the start of the race up until the second half.", + 91023, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "order_rate_in40_continue==1&phase==1&distance_rate>=50&order>=2&order_rate<=40", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillFloweryManeuverInherit: { + 910241, + "Flowery☆Maneuver", + "Slightly increase velocity when passing another runner toward the front on the final corner. If passing toward the back, slightly increase acceleration instead.", + 91024, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + { + "", + "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0", + 24000, + 5000000, + []Ability{ + { + AbilityAccel, + 1, + 2000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillEveryRoseHasItsFangsInherit: { + 910301, + "Every Rose Has Its Fangs", + "Slightly drain endurance from runners ahead when well-positioned and pressured by another runner mid-race.", + 91030, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "phase==1&order>=2&order_rate<=50&overtake_target_time>=1", + 0, + 5000000, + []Ability{ + { + AbilityHP, + 1, + 150, + 1, + 0, + }, + { + AbilityHP, + 1, + -25, + 9, + 18, + }, + }, + }, + }, + 200, + 20021, + }, + SkillDancingintheLeavesInherit: { + 910401, + "Dancing in the Leaves", + "Very slightly increase ability to break out of the pack when engaged in a challenge in midpack on the final corner.", + 91040, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner!=0&order_rate>=30&order_rate<=70&blocked_side_continuetime>=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillGiveMummyaHugInherit: { + 910451, + "Give Mummy a Hug ♡", + "Very slightly increase ability to break out of the pack when well-positioned and close to the runner ahead on the final straight.", + 91045, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "is_finalcorner==1&corner==0&order<=4&bashin_diff_infront<=1", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 500, + 1, + 0, + }, + { + AbilityAccel, + 1, + 1000, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, + SkillBountifulHarvestInherit: { + 910561, + "Bountiful Harvest", + "Slightly increase velocity with a surge of fortune when pressured by another runner toward the back in the second half of the race.", + 91056, + 1, + 2, + 180, + true, + []Activation{ + { + "", + "distance_rate>=50&order_rate>=40&overtake_target_time>=2", + 30000, + 5000000, + []Ability{ + { + AbilityTargetSpeed, + 1, + 1500, + 1, + 0, + }, + }, + }, + }, + 200, + 20011, + }, +} diff --git a/skillid_string.go b/skillid_string.go new file mode 100644 index 0000000..5ec6c05 --- /dev/null +++ b/skillid_string.go @@ -0,0 +1,995 @@ +// Code generated by "stringer -type SkillID -trimprefix Skill -linecomment"; DO NOT EDIT. + +package horse + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[SkillWarningShot-10071] + _ = x[SkillXceleration-10081] + _ = x[SkillRedAce-10091] + _ = x[SkillFocusedMind-10111] + _ = x[SkillCorazónArdiente-10141] + _ = x[SkillEmpresssPride-10181] + _ = x[SkillFirstPlaceKiss-10241] + _ = x[SkillFeeltheBurn-10271] + _ = x[SkillIntroductiontoPhysiology-10321] + _ = x[SkillVIsforVictory-10351] + _ = x[SkillClassRepSpeedBakushin-10411] + _ = x[SkillClearHeart-10451] + _ = x[SkillSuperDuperStoked-10521] + _ = x[SkillLuckBewithMe-10561] + _ = x[SkillICanWinSometimesRight-10601] + _ = x[SkillCallMeKing-10611] + _ = x[SkillShootingStar-100011] + _ = x[SkillTheViewfromtheLeadIsMine-100021] + _ = x[SkillSkyHighTeioStep-100031] + _ = x[SkillRedShiftLP1211M-100041] + _ = x[SkillLightsofVaudeville-100051] + _ = x[SkillTriumphantPulse-100061] + _ = x[SkillAnchorsAweigh-100071] + _ = x[SkillCutandDrive-100081] + _ = x[SkillResplendentRedAce-100091] + _ = x[SkillShootingforVictory-100101] + _ = x[SkillWhereTheresaWillTheresaWay-100111] + _ = x[SkillYouandMeOneonOne-100121] + _ = x[SkillTheDutyofDignityCalls-100131] + _ = x[SkillVictoriaporplancha-100141] + _ = x[SkillThisDanceIsforVittoria-100151] + _ = x[SkillShadowBreak-100161] + _ = x[SkillBeholdThineEmperorsDivineMight-100171] + _ = x[SkillBlazingPride-100181] + _ = x[SkillOMGTheFinalSprint-100191] + _ = x[SkillAnglingandScheming-100201] + _ = x[SkillWinQED-100231] + _ = x[SkillFlashyLanding-100241] + _ = x[SkillChasingAfterYou-100251] + _ = x[SkillG00FirstFInfinity-100261] + _ = x[SkillLetsPumpSomeIron-100271] + _ = x[SkillYUMMYSPEED-100281] + _ = x[SkillBlueRoseCloser-100301] + _ = x[SkillUma2-100321] + _ = x[SkillOurTickettoWin-100351] + _ = x[SkillSchwarzesSchwert-100371] + _ = x[SkillLookatCurren-100381] + _ = x[SkillAPrincessMustSeizeVictory-100391] + _ = x[SkillKEEPITREAL-100401] + _ = x[SkillGeniusxBakushinVictory-100411] + _ = x[SkillPureHeart-100451] + _ = x[SkillSPARKLYSTARDOM-100461] + _ = x[SkillPopAndPolish-100481] + _ = x[SkillNemesis-100501] + _ = x[SkillSuperDuperClimax-100521] + _ = x[SkillISeeVictoryinMyFuture-100561] + _ = x[SkillINeverGoofUp-100581] + _ = x[SkillMovingPastandBeyond-100591] + _ = x[SkillJustaLittleFarther-100601] + _ = x[SkillPridefulKing-100611] + _ = x[SkillDazzlnDiver-110011] + _ = x[SkillCertainVictory-110031] + _ = x[SkillAKissforCourage-110041] + _ = x[SkillFestiveMiracle-110061] + _ = x[SkillSuperiorHeal-110111] + _ = x[SkillLegacyoftheStrong-110131] + _ = x[SkillCondorsFury-110141] + _ = x[SkillArrowsWhistleShadowsDisperse-110171] + _ = x[SkillEternalMoments-110181] + _ = x[SkillPresentsfromX-110231] + _ = x[SkillFloweryManeuver-110241] + _ = x[SkillEveryRoseHasItsFangs-110301] + _ = x[SkillDancingintheLeaves-110401] + _ = x[SkillGiveMummyaHug-110451] + _ = x[SkillBountifulHarvest-110561] + _ = x[SkillRightHandedLv2-200011] + _ = x[SkillRightHanded-200012] + _ = x[SkillRightHandedX-200013] + _ = x[SkillLeftHandedLv2-200021] + _ = x[SkillLeftHanded-200022] + _ = x[SkillLeftHandedX-200023] + _ = x[SkillTokyoRacecourseLv2-200031] + _ = x[SkillTokyoRacecourse-200032] + _ = x[SkillTokyoRacecourseX-200033] + _ = x[SkillNakayamaRacecourseLv2-200041] + _ = x[SkillNakayamaRacecourse-200042] + _ = x[SkillNakayamaRacecourseX-200043] + _ = x[SkillHanshinRacecourseLv2-200051] + _ = x[SkillHanshinRacecourse-200052] + _ = x[SkillHanshinRacecourseX-200053] + _ = x[SkillKyotoRacecourseLv2-200061] + _ = x[SkillKyotoRacecourse-200062] + _ = x[SkillKyotoRacecourseX-200063] + _ = x[SkillYodoInvicta-200064] + _ = x[SkillChukyoRacecourseLv2-200071] + _ = x[SkillChukyoRacecourse-200072] + _ = x[SkillChukyoRacecourseX-200073] + _ = x[SkillSapporoRacecourseLv2-200081] + _ = x[SkillSapporoRacecourse-200082] + _ = x[SkillSapporoRacecourseX-200083] + _ = x[SkillHakodateRacecourseLv2-200091] + _ = x[SkillHakodateRacecourse-200092] + _ = x[SkillHakodateRacecourseX-200093] + _ = x[SkillFukushimaRacecourseLv2-200101] + _ = x[SkillFukushimaRacecourse-200102] + _ = x[SkillFukushimaRacecourseX-200103] + _ = x[SkillNiigataRacecourseLv2-200111] + _ = x[SkillNiigataRacecourse-200112] + _ = x[SkillNiigataRacecourseX-200113] + _ = x[SkillKokuraRacecourseLv2-200121] + _ = x[SkillKokuraRacecourse-200122] + _ = x[SkillKokuraRacecourseX-200123] + _ = x[SkillStandardDistanceLv2-200131] + _ = x[SkillStandardDistance-200132] + _ = x[SkillStandardDistanceX-200133] + _ = x[SkillNonStandardDistanceLv2-200141] + _ = x[SkillNonStandardDistance-200142] + _ = x[SkillNonStandardDistanceX-200143] + _ = x[SkillFirmConditionsLv2-200151] + _ = x[SkillFirmConditions-200152] + _ = x[SkillFirmConditionsX-200153] + _ = x[SkillWetConditionsLv2-200161] + _ = x[SkillWetConditions-200162] + _ = x[SkillWetConditionsX-200163] + _ = x[SkillSpringRunnerLv2-200171] + _ = x[SkillSpringRunner-200172] + _ = x[SkillSpringRunnerX-200173] + _ = x[SkillSummerRunnerLv2-200181] + _ = x[SkillSummerRunner-200182] + _ = x[SkillSummerRunnerX-200183] + _ = x[SkillFallRunnerLv2-200191] + _ = x[SkillFallRunner-200192] + _ = x[SkillFallRunnerX-200193] + _ = x[SkillFallFrenzy-200194] + _ = x[SkillWinterRunnerLv2-200201] + _ = x[SkillWinterRunner-200202] + _ = x[SkillWinterRunnerX-200203] + _ = x[SkillSunnyDaysLv2-200211] + _ = x[SkillSunnyDays-200212] + _ = x[SkillCloudyDaysLv2-200221] + _ = x[SkillCloudyDays-200222] + _ = x[SkillRainyDaysLv2-200231] + _ = x[SkillRainyDays-200232] + _ = x[SkillRainyDaysX-200233] + _ = x[SkillSnowyDaysLv2-200241] + _ = x[SkillSnowyDays-200242] + _ = x[SkillInnerPostProficiencyLv2-200251] + _ = x[SkillInnerPostProficiency-200252] + _ = x[SkillInnerPostAverseness-200253] + _ = x[SkillOuterPostProficiencyLv2-200261] + _ = x[SkillOuterPostProficiency-200262] + _ = x[SkillOuterPostAverseness-200263] + _ = x[SkillMaverickLv2-200271] + _ = x[SkillMaverick-200272] + _ = x[SkillCompetitiveSpiritLv2-200281] + _ = x[SkillCompetitiveSpirit-200282] + _ = x[SkillWallflower-200283] + _ = x[SkillTargetinSightLv2-200291] + _ = x[SkillTargetinSight-200292] + _ = x[SkillLongShotLv2-200301] + _ = x[SkillLongShot-200302] + _ = x[SkillG1Averseness-200311] + _ = x[SkillPaddockFright-200321] + _ = x[SkillProfessorofCurvature-200331] + _ = x[SkillCornerAdept-200332] + _ = x[SkillCornerAdeptX-200333] + _ = x[SkillCornerConnoisseur-200341] + _ = x[SkillCornerAcceleration-200342] + _ = x[SkillCornerAccelerationX-200343] + _ = x[SkillSwingingMaestro-200351] + _ = x[SkillCornerRecovery-200352] + _ = x[SkillCornerRecoveryX-200353] + _ = x[SkillBeelineBurst-200361] + _ = x[SkillStraightawayAdept-200362] + _ = x[SkillRushingGale-200371] + _ = x[SkillStraightawayAcceleration-200372] + _ = x[SkillBreathofFreshAir-200381] + _ = x[SkillStraightawayRecovery-200382] + _ = x[SkillRampRevulsion-200391] + _ = x[SkillPackphobia-200401] + _ = x[SkillDefeatist-200411] + _ = x[SkillReckless-200421] + _ = x[SkillConcentration-200431] + _ = x[SkillFocus-200432] + _ = x[SkillGatekept-200433] + _ = x[SkillIronWill-200441] + _ = x[SkillLayLow-200442] + _ = x[SkillCenterStage-200451] + _ = x[SkillPrudentPositioning-200452] + _ = x[SkillItsOn-200461] + _ = x[SkillRampUp-200462] + _ = x[SkillIndomitable-200471] + _ = x[SkillPaceStrategy-200472] + _ = x[SkillUnruffled-200481] + _ = x[SkillCalminaCrowd-200482] + _ = x[SkillNoStoppingMe-200491] + _ = x[SkillNimbleNavigator-200492] + _ = x[SkillLaneLegerdemain-200501] + _ = x[SkillGowiththeFlow-200502] + _ = x[SkillInBodyandMind-200511] + _ = x[SkillHomestretchHaste-200512] + _ = x[SkillRunningIdle-200521] + _ = x[SkillTakingtheLead-200531] + _ = x[SkillEarlyLead-200532] + _ = x[SkillEscapeArtist-200541] + _ = x[SkillFastPaced-200542] + _ = x[SkillUnrestrained-200551] + _ = x[SkillFinalPush-200552] + _ = x[SkillCalmandCollected-200561] + _ = x[SkillStaminatoSpare-200562] + _ = x[SkillRacePlanner-200571] + _ = x[SkillPreferredPosition-200572] + _ = x[SkillSpeedStar-200581] + _ = x[SkillPreparedtoPass-200582] + _ = x[SkillFastAndFurious-200591] + _ = x[SkillPositionPilfer-200592] + _ = x[SkillOnYourLeft-200601] + _ = x[SkillSlickSurge-200602] + _ = x[SkillRisingDragon-200611] + _ = x[SkillOuterSwell-200612] + _ = x[SkillSleepingLion-200621] + _ = x[SkillStandingBy-200622] + _ = x[SkillSturmundDrang-200631] + _ = x[SkillMasterfulGambit-200632] + _ = x[SkillEncroachingShadow-200641] + _ = x[SkillStraightawaySpurt-200642] + _ = x[SkillTurboSprint-200651] + _ = x[SkillSprintingGear-200652] + _ = x[SkillWaitandSee-200662] + _ = x[SkillBlindingFlash-200671] + _ = x[SkillGapCloser-200672] + _ = x[SkillMileMaven-200681] + _ = x[SkillProductivePlan-200682] + _ = x[SkillKeenEye-200691] + _ = x[SkillWatchfulEye-200692] + _ = x[SkillFuriousFeat-200701] + _ = x[SkillUpdrafters-200702] + _ = x[SkillTrackblazer-200711] + _ = x[SkillRosyOutlook-200712] + _ = x[SkillKillerTunes-200721] + _ = x[SkillUpTempo-200722] + _ = x[SkillUnyielding-200731] + _ = x[SkillSteadfast-200732] + _ = x[SkillCooldown-200741] + _ = x[SkillDeepBreaths-200742] + _ = x[SkillInnateExperience-200751] + _ = x[SkillInsideScoop-200752] + _ = x[SkillAdrenalineRush-200761] + _ = x[SkillExtraTank-200762] + _ = x[SkillTrickFront-200771] + _ = x[SkillTantalizingTrick-200772] + _ = x[SkillTrickRear-200781] + _ = x[SkillFrenziedFrontRunners-200791] + _ = x[SkillFrenziedPaceChasers-200801] + _ = x[SkillFrenziedLateSurgers-200811] + _ = x[SkillFrenziedEndClosers-200821] + _ = x[SkillSubduedFrontRunners-200831] + _ = x[SkillFlusteredFrontRunners-200841] + _ = x[SkillHesitantFrontRunners-200851] + _ = x[SkillSubduedPaceChasers-200861] + _ = x[SkillFlusteredPaceChasers-200871] + _ = x[SkillHesitantPaceChasers-200881] + _ = x[SkillSubduedLateSurgers-200891] + _ = x[SkillFlusteredLateSurgers-200901] + _ = x[SkillHesitantLateSurgers-200911] + _ = x[SkillSubduedEndClosers-200921] + _ = x[SkillFlusteredEndClosers-200931] + _ = x[SkillHesitantEndClosers-200941] + _ = x[SkillOiRacecourseLv2-200951] + _ = x[SkillOiRacecourse-200952] + _ = x[SkillOiRacecourseX-200953] + _ = x[SkillSprintStraightawaysLv2-200961] + _ = x[SkillSprintStraightaways-200962] + _ = x[SkillSprintCornersLv2-200971] + _ = x[SkillSprintCorners-200972] + _ = x[SkillStaggeringLead-200981] + _ = x[SkillHugeLead-200982] + _ = x[SkillPlanX-200991] + _ = x[SkillCountermeasure-200992] + _ = x[SkillPerfectPrep-201001] + _ = x[SkillMeticulousMeasures-201002] + _ = x[SkillAdoredbyAll-201011] + _ = x[SkillIntimidate-201012] + _ = x[SkillYouveGotNoShot-201021] + _ = x[SkillStopRightThere-201022] + _ = x[SkillMileStraightawaysLv2-201031] + _ = x[SkillMileStraightaways-201032] + _ = x[SkillMileCornersLv2-201041] + _ = x[SkillMileCorners-201042] + _ = x[SkillChangingGears-201051] + _ = x[SkillShiftingGears-201052] + _ = x[SkillStepontheGas-201061] + _ = x[SkillAcceleration-201062] + _ = x[SkillBigSisterly-201071] + _ = x[SkillUnyieldingSpirit-201072] + _ = x[SkillGreedforSpeed-201081] + _ = x[SkillSpeedEater-201082] + _ = x[SkillBattleFormation-201091] + _ = x[SkillOpeningGambit-201092] + _ = x[SkillMediumStraightawaysLv2-201101] + _ = x[SkillMediumStraightaways-201102] + _ = x[SkillMediumCornersLv2-201111] + _ = x[SkillMediumCorners-201112] + _ = x[SkillClairvoyance-201121] + _ = x[SkillHawkeye-201122] + _ = x[SkillLightningStep-201131] + _ = x[SkillThunderboltStep-201132] + _ = x[SkillMiraculousStep-201141] + _ = x[SkillSoftStep-201142] + _ = x[SkillDominator-201151] + _ = x[SkillTether-201152] + _ = x[SkillMystifyingMurmur-201161] + _ = x[SkillMurmur-201162] + _ = x[SkillLongStraightawaysLv2-201171] + _ = x[SkillLongStraightaways-201172] + _ = x[SkillLongCornersLv2-201181] + _ = x[SkillLongCorners-201182] + _ = x[SkillVanguardSpirit-201191] + _ = x[SkillKeepingtheLead-201192] + _ = x[SkillVIPPass-201201] + _ = x[SkillPassingPro-201202] + _ = x[SkillOverwhelmingPressure-201211] + _ = x[SkillPressure-201212] + _ = x[SkillStaminaSiphon-201221] + _ = x[SkillStaminaEater-201222] + _ = x[SkillIllusionist-201231] + _ = x[SkillSmokeScreen-201232] + _ = x[SkillFrontRunnerStraightawaysLv2-201241] + _ = x[SkillFrontRunnerStraightaways-201242] + _ = x[SkillFrontRunnerCornersLv2-201251] + _ = x[SkillFrontRunnerCorners-201252] + _ = x[SkillSixthSense-201261] + _ = x[SkillDodgingDanger-201262] + _ = x[SkillLeadersPride-201272] + _ = x[SkillRestless-201281] + _ = x[SkillMoxie-201282] + _ = x[SkillReignition-201291] + _ = x[SkillSecondWind-201292] + _ = x[SkillRestart-201302] + _ = x[SkillPaceChaserStraightawaysLv2-201311] + _ = x[SkillPaceChaserStraightaways-201312] + _ = x[SkillPaceChaserCornersLv2-201321] + _ = x[SkillPaceChaserCorners-201322] + _ = x[SkillTechnician-201331] + _ = x[SkillShrewdStep-201332] + _ = x[SkillDeterminedDescent-201341] + _ = x[SkillStraightDescent-201342] + _ = x[SkillGourmand-201351] + _ = x[SkillHydrate-201352] + _ = x[SkillShatterproof-201361] + _ = x[SkillTacticalTweak-201362] + _ = x[SkillDazzlingDisorientation-201371] + _ = x[SkillDisorient-201372] + _ = x[SkillLateSurgerStraightawaysLv2-201381] + _ = x[SkillLateSurgerStraightaways-201382] + _ = x[SkillLateSurgerCornersLv2-201391] + _ = x[SkillLateSurgerCorners-201392] + _ = x[SkillHardWorker-201401] + _ = x[SkillFighter-201402] + _ = x[SkillFifteenMillionCC-201411] + _ = x[SkillOneMillionCC-201412] + _ = x[SkillRelax-201421] + _ = x[SkillASmallBreather-201422] + _ = x[SkillTheBiggerPicture-201431] + _ = x[SkillStudious-201432] + _ = x[SkillAllSeeingEyes-201441] + _ = x[SkillSharpGaze-201442] + _ = x[SkillEndCloserStraightawaysLv2-201451] + _ = x[SkillEndCloserStraightaways-201452] + _ = x[SkillEndCloserCornersLv2-201461] + _ = x[SkillEndCloserCorners-201462] + _ = x[SkillTheCoastIsClear-201471] + _ = x[SkillICanSeeRightThroughYou-201472] + _ = x[SkillGoHomeSpecialist-201481] + _ = x[SkillAfterSchoolStroll-201482] + _ = x[SkillSerenity-201491] + _ = x[SkillLevelheaded-201492] + _ = x[SkillCrusader-201501] + _ = x[SkillStrategist-201502] + _ = x[SkillPetrifyingGaze-201511] + _ = x[SkillIntenseGaze-201512] + _ = x[SkillFrontRunnerSavvyLv2-201521] + _ = x[SkillFrontRunnerSavvy-201522] + _ = x[SkillPaceChaserSavvyLv2-201531] + _ = x[SkillPaceChaserSavvy-201532] + _ = x[SkillLateSurgerSavvyLv2-201541] + _ = x[SkillLateSurgerSavvy-201542] + _ = x[SkillEndCloserSavvyLv2-201551] + _ = x[SkillEndCloserSavvy-201552] + _ = x[SkillSuperLuckySeven-201561] + _ = x[SkillLuckySeven-201562] + _ = x[SkillTripleSevens-201571] + _ = x[SkillHighlander-201581] + _ = x[SkillUmaStan-201591] + _ = x[SkillSuperstan-201592] + _ = x[SkillGroundwork-201601] + _ = x[SkillTailHeldHigh-201611] + _ = x[SkillShakeItOut-201621] + _ = x[SkillSympathy-201631] + _ = x[SkillLoneWolf-201641] + _ = x[SkillSlipstream-201651] + _ = x[SkillPlaytimesOver-201661] + _ = x[SkillTrendingintheCharts-201671] + _ = x[SkillTopPick-201672] + _ = x[SkillLeadtheCharge-201681] + _ = x[SkillForwardMarch-201682] + _ = x[SkillLieinWait-201691] + _ = x[SkillBeStill-201692] + _ = x[SkillComeWhatMay-201701] + _ = x[SkillAllIveGot-201702] + _ = x[SkillNailArt-201801] + _ = x[SkillHeadOn-201902] + _ = x[SkillEarlyStart-202022] + _ = x[SkillRiskyBusiness-202032] + _ = x[SkillRunaway-202051] + _ = x[SkillBurningSpiritSPD-210011] + _ = x[SkillIgnitedSpiritSPD-210012] + _ = x[SkillBurningSpiritSTA-210021] + _ = x[SkillIgnitedSpiritSTA-210022] + _ = x[SkillBurningSpiritPWR-210031] + _ = x[SkillIgnitedSpiritPWR-210032] + _ = x[SkillBurningSpiritGUTS-210041] + _ = x[SkillIgnitedSpiritGUTS-210042] + _ = x[SkillBurningSpiritWIT-210051] + _ = x[SkillIgnitedSpiritWIT-210052] + _ = x[SkillUnquenchedThirst-300011] + _ = x[SkillUnchanging-300021] + _ = x[SkillShootingStarInherit-900011] + _ = x[SkillTheViewfromtheLeadIsMineInherit-900021] + _ = x[SkillSkyHighTeioStepInherit-900031] + _ = x[SkillRedShiftLP1211MInherit-900041] + _ = x[SkillLightsofVaudevilleInherit-900051] + _ = x[SkillTriumphantPulseInherit-900061] + _ = x[SkillAnchorsAweighInherit-900071] + _ = x[SkillCutandDriveInherit-900081] + _ = x[SkillResplendentRedAceInherit-900091] + _ = x[SkillShootingforVictoryInherit-900101] + _ = x[SkillWhereTheresaWillTheresaWayInherit-900111] + _ = x[SkillYouandMeOneonOneInherit-900121] + _ = x[SkillTheDutyofDignityCallsInherit-900131] + _ = x[SkillVictoriaporplanchaInherit-900141] + _ = x[SkillThisDanceIsforVittoriaInherit-900151] + _ = x[SkillShadowBreakInherit-900161] + _ = x[SkillBeholdThineEmperorsDivineMightInherit-900171] + _ = x[SkillBlazingPrideInherit-900181] + _ = x[SkillOMGTheFinalSprintInherit-900191] + _ = x[SkillAnglingandSchemingInherit-900201] + _ = x[SkillWinQEDInherit-900231] + _ = x[SkillFlashyLandingInherit-900241] + _ = x[SkillChasingAfterYouInherit-900251] + _ = x[SkillG00FirstFInfinityInherit-900261] + _ = x[SkillLetsPumpSomeIronInherit-900271] + _ = x[SkillYUMMYSPEEDInherit-900281] + _ = x[SkillBlueRoseCloserInherit-900301] + _ = x[SkillUma2Inherit-900321] + _ = x[SkillOurTickettoWinInherit-900351] + _ = x[SkillSchwarzesSchwertInherit-900371] + _ = x[SkillLookatCurrenInherit-900381] + _ = x[SkillAPrincessMustSeizeVictoryInherit-900391] + _ = x[SkillKEEPITREALInherit-900401] + _ = x[SkillGeniusxBakushinVictoryInherit-900411] + _ = x[SkillPureHeartInherit-900451] + _ = x[SkillSPARKLYSTARDOMInherit-900461] + _ = x[SkillPopAndPolishInherit-900481] + _ = x[SkillNemesisInherit-900501] + _ = x[SkillSuperDuperClimaxInherit-900521] + _ = x[SkillISeeVictoryinMyFutureInherit-900561] + _ = x[SkillINeverGoofUpInherit-900581] + _ = x[SkillMovingPastandBeyondInherit-900591] + _ = x[SkillJustaLittleFartherInherit-900601] + _ = x[SkillPridefulKingInherit-900611] + _ = x[SkillDazzlnDiverInherit-910011] + _ = x[SkillCertainVictoryInherit-910031] + _ = x[SkillAKissforCourageInherit-910041] + _ = x[SkillFestiveMiracleInherit-910061] + _ = x[SkillSuperiorHealInherit-910111] + _ = x[SkillLegacyoftheStrongInherit-910131] + _ = x[SkillCondorsFuryInherit-910141] + _ = x[SkillArrowsWhistleShadowsDisperseInherit-910171] + _ = x[SkillEternalMomentsInherit-910181] + _ = x[SkillPresentsfromXInherit-910231] + _ = x[SkillFloweryManeuverInherit-910241] + _ = x[SkillEveryRoseHasItsFangsInherit-910301] + _ = x[SkillDancingintheLeavesInherit-910401] + _ = x[SkillGiveMummyaHugInherit-910451] + _ = x[SkillBountifulHarvestInherit-910561] +} + +const _SkillID_name = "Warning Shot!XcelerationRed AceFocused MindCorazón ☆ ArdienteEmpress's Pride1st Place Kiss☆Feel the Burn!Introduction to PhysiologyV Is for Victory!Class Rep + Speed = BakushinClear HeartSuper-Duper StokedLuck Be with Me!I Can Win Sometimes, Right?Call Me KingShooting StarThe View from the Lead Is Mine!Sky-High Teio StepRed Shift/LP1211-MLights of VaudevilleTriumphant PulseAnchors Aweigh!Cut and Drive!Resplendent Red AceShooting for Victory!Where There's a Will, There's a WayYou and Me! One-on-One!The Duty of Dignity CallsVictoria por plancha ☆This Dance Is for Vittoria!Shadow BreakBehold Thine Emperor's Divine MightBlazing PrideOMG! (゚∀゚) The Final Sprint! ☆Angling and Scheming∴win Q.E.D.Flashy☆LandingChasing After YouG00 1st. F∞;Let's Pump Some Iron!YUMMY☆SPEED!Blue Rose CloserU=ma2Our Ticket to Win!Schwarzes Schwert#LookatCurrenA Princess Must Seize Victory!KEEP IT REAL.Genius x Bakushin = VictoryPure HeartSPARKLY☆STARDOMPop & PolishNemesisSuper-Duper ClimaxI See Victory in My Future!I Never Goof Up!Moving Past, and BeyondJust a Little Farther!Prideful KingDazzl'n ♪ DiverCertain VictoryA Kiss for CourageFestive MiracleSuperior HealLegacy of the StrongCondor's FuryArrows Whistle, Shadows DisperseEternal MomentsPresents from XFlowery☆ManeuverEvery Rose Has Its FangsDancing in the LeavesGive Mummy a Hug ♡Bountiful HarvestRight-Handed ◎Right-Handed ○Right-Handed ×Left-Handed ◎Left-Handed ○Left-Handed ×Tokyo Racecourse ◎Tokyo Racecourse ○Tokyo Racecourse ×Nakayama Racecourse ◎Nakayama Racecourse ○Nakayama Racecourse ×Hanshin Racecourse ◎Hanshin Racecourse ○Hanshin Racecourse ×Kyoto Racecourse ◎Kyoto Racecourse ○Kyoto Racecourse ×Yodo InvictaChukyo Racecourse ◎Chukyo Racecourse ○Chukyo Racecourse ×Sapporo Racecourse ◎Sapporo Racecourse ○Sapporo Racecourse ×Hakodate Racecourse ◎Hakodate Racecourse ○Hakodate Racecourse ×Fukushima Racecourse ◎Fukushima Racecourse ○Fukushima Racecourse ×Niigata Racecourse ◎Niigata Racecourse ○Niigata Racecourse ×Kokura Racecourse ◎Kokura Racecourse ○Kokura Racecourse ×Standard Distance ◎Standard Distance ○Standard Distance ×Non-Standard Distance ◎Non-Standard Distance ○Non-Standard Distance ×Firm Conditions ◎Firm Conditions ○Firm Conditions ×Wet Conditions ◎Wet Conditions ○Wet Conditions ×Spring Runner ◎Spring Runner ○Spring Runner ×Summer Runner ◎Summer Runner ○Summer Runner ×Fall Runner ◎Fall Runner ○Fall Runner ×Fall FrenzyWinter Runner ◎Winter Runner ○Winter Runner ×Sunny Days ◎Sunny Days ○Cloudy Days ◎Cloudy Days ○Rainy Days ◎Rainy Days ○Rainy Days ×Snowy Days ◎Snowy Days ○Inner Post Proficiency ◎Inner Post Proficiency ○Inner Post AversenessOuter Post Proficiency ◎Outer Post Proficiency ○Outer Post AversenessMaverick ◎Maverick ○Competitive Spirit ◎Competitive Spirit ○WallflowerTarget in Sight ◎Target in Sight ○Long Shot ◎Long Shot ○G1 AversenessPaddock FrightProfessor of CurvatureCorner Adept ○Corner Adept ×Corner ConnoisseurCorner Acceleration ○Corner Acceleration ×Swinging MaestroCorner Recovery ○Corner Recovery ×Beeline BurstStraightaway AdeptRushing Gale!Straightaway AccelerationBreath of Fresh AirStraightaway RecoveryRamp RevulsionPackphobiaDefeatistRecklessConcentrationFocusGatekeptIron WillLay LowCenter StagePrudent PositioningIt's On!Ramp UpIndomitablePace StrategyUnruffledCalm in a CrowdNo Stopping Me!Nimble NavigatorLane LegerdemainGo with the FlowIn Body and MindHomestretch HasteRunning IdleTaking the LeadEarly LeadEscape ArtistFast-PacedUnrestrainedFinal PushCalm and CollectedStamina to SpareRace PlannerPreferred PositionSpeed StarPrepared to PassFast & FuriousPosition PilferOn Your Left!Slick SurgeRising DragonOuter SwellSleeping LionStanding BySturm und DrangMasterful GambitEncroaching ShadowStraightaway SpurtTurbo SprintSprinting GearWait-and-SeeBlinding FlashGap CloserMile MavenProductive PlanKeen EyeWatchful EyeFurious FeatUpdraftersTrackblazerRosy OutlookKiller TunesUp-TempoUnyieldingSteadfastCooldownDeep BreathsInnate ExperienceInside ScoopAdrenaline RushExtra TankTrick (Front)Tantalizing TrickTrick (Rear)Frenzied Front RunnersFrenzied Pace ChasersFrenzied Late SurgersFrenzied End ClosersSubdued Front RunnersFlustered Front RunnersHesitant Front RunnersSubdued Pace ChasersFlustered Pace ChasersHesitant Pace ChasersSubdued Late SurgersFlustered Late SurgersHesitant Late SurgersSubdued End ClosersFlustered End ClosersHesitant End ClosersOi Racecourse ◎Oi Racecourse ○Oi Racecourse ×Sprint Straightaways ◎Sprint Straightaways ○Sprint Corners ◎Sprint Corners ○Staggering LeadHuge LeadPlan XCountermeasurePerfect Prep!Meticulous MeasuresAdored by AllIntimidateYou've Got No ShotStop Right There!Mile Straightaways ◎Mile Straightaways ○Mile Corners ◎Mile Corners ○Changing GearsShifting GearsStep on the Gas!AccelerationBig-SisterlyUnyielding SpiritGreed for SpeedSpeed EaterBattle FormationOpening GambitMedium Straightaways ◎Medium Straightaways ○Medium Corners ◎Medium Corners ○ClairvoyanceHawkeyeLightning StepThunderbolt StepMiraculous StepSoft StepDominatorTetherMystifying MurmurMurmurLong Straightaways ◎Long Straightaways ○Long Corners ◎Long Corners ○Vanguard SpiritKeeping the LeadVIP PassPassing ProOverwhelming PressurePressureStamina SiphonStamina EaterIllusionistSmoke ScreenFront Runner Straightaways ◎Front Runner Straightaways ○Front Runner Corners ◎Front Runner Corners ○Sixth SenseDodging DangerLeader's PrideRestlessMoxieReignitionSecond WindRestartPace Chaser Straightaways ◎Pace Chaser Straightaways ○Pace Chaser Corners ◎Pace Chaser Corners ○TechnicianShrewd StepDetermined DescentStraight DescentGourmandHydrateShatterproofTactical TweakDazzling DisorientationDisorientLate Surger Straightaways ◎Late Surger Straightaways ○Late Surger Corners ◎Late Surger Corners ○Hard WorkerFighter15,000,000 CC1,500,000 CCRelaxA Small BreatherThe Bigger PictureStudiousAll-Seeing EyesSharp GazeEnd Closer Straightaways ◎End Closer Straightaways ○End Closer Corners ◎End Closer Corners ○The Coast Is Clear!I Can See Right Through YouGo-Home SpecialistAfter-School StrollSerenityLevelheadedCrusaderStrategistPetrifying GazeIntense GazeFront Runner Savvy ◎Front Runner Savvy ○Pace Chaser Savvy ◎Pace Chaser Savvy ○Late Surger Savvy ◎Late Surger Savvy ○End Closer Savvy ◎End Closer Savvy ○Super Lucky SevenLucky SevenTriple 7sHighlanderUma StanSuperstanGroundworkTail Held HighShake It OutSympathyLone WolfSlipstreamPlaytime's Over!Trending in the Charts!Top PickLead the Charge!Forward, March!Lie in WaitBe StillCome What MayAll I've Got♡ 3D Nail ArtHead-OnEarly StartRisky BusinessRunawayBurning Spirit SPDIgnited Spirit SPDBurning Spirit STAIgnited Spirit STABurning Spirit PWRIgnited Spirit PWRBurning Spirit GUTSIgnited Spirit GUTSBurning Spirit WITIgnited Spirit WITUnquenched ThirstUnchangingShooting StarThe View from the Lead Is Mine!Sky-High Teio StepRed Shift/LP1211-MLights of VaudevilleTriumphant PulseAnchors Aweigh!Cut and Drive!Resplendent Red AceShooting for Victory!Where There's a Will, There's a WayYou and Me! One-on-One!The Duty of Dignity CallsVictoria por plancha ☆This Dance Is for Vittoria!Shadow BreakBehold Thine Emperor's Divine MightBlazing PrideOMG! (゚∀゚) The Final Sprint! ☆Angling and Scheming∴win Q.E.D.Flashy☆LandingChasing After YouG00 1st. F∞;Let's Pump Some Iron!YUMMY☆SPEED!Blue Rose CloserU=ma2Our Ticket to Win!Schwarzes Schwert#LookatCurrenA Princess Must Seize Victory!KEEP IT REAL.Genius x Bakushin = VictoryPure HeartSPARKLY☆STARDOMPop & PolishNemesisSuper-Duper ClimaxI See Victory in My Future!I Never Goof Up!Moving Past, and BeyondJust a Little Farther!Prideful KingDazzl'n ♪ DiverCertain VictoryA Kiss for CourageFestive MiracleSuperior HealLegacy of the StrongCondor's FuryArrows Whistle, Shadows DisperseEternal MomentsPresents from XFlowery☆ManeuverEvery Rose Has Its FangsDancing in the LeavesGive Mummy a Hug ♡Bountiful Harvest" + +var _SkillID_map = map[SkillID]string{ + 10071: _SkillID_name[0:13], + 10081: _SkillID_name[13:24], + 10091: _SkillID_name[24:31], + 10111: _SkillID_name[31:43], + 10141: _SkillID_name[43:64], + 10181: _SkillID_name[64:79], + 10241: _SkillID_name[79:96], + 10271: _SkillID_name[96:110], + 10321: _SkillID_name[110:136], + 10351: _SkillID_name[136:153], + 10411: _SkillID_name[153:181], + 10451: _SkillID_name[181:192], + 10521: _SkillID_name[192:210], + 10561: _SkillID_name[210:226], + 10601: _SkillID_name[226:253], + 10611: _SkillID_name[253:265], + 100011: _SkillID_name[265:278], + 100021: _SkillID_name[278:309], + 100031: _SkillID_name[309:327], + 100041: _SkillID_name[327:345], + 100051: _SkillID_name[345:365], + 100061: _SkillID_name[365:381], + 100071: _SkillID_name[381:396], + 100081: _SkillID_name[396:410], + 100091: _SkillID_name[410:429], + 100101: _SkillID_name[429:450], + 100111: _SkillID_name[450:485], + 100121: _SkillID_name[485:508], + 100131: _SkillID_name[508:533], + 100141: _SkillID_name[533:557], + 100151: _SkillID_name[557:584], + 100161: _SkillID_name[584:596], + 100171: _SkillID_name[596:631], + 100181: _SkillID_name[631:644], + 100191: _SkillID_name[644:683], + 100201: _SkillID_name[683:703], + 100231: _SkillID_name[703:716], + 100241: _SkillID_name[716:732], + 100251: _SkillID_name[732:749], + 100261: _SkillID_name[749:763], + 100271: _SkillID_name[763:784], + 100281: _SkillID_name[784:798], + 100301: _SkillID_name[798:814], + 100321: _SkillID_name[814:819], + 100351: _SkillID_name[819:837], + 100371: _SkillID_name[837:854], + 100381: _SkillID_name[854:867], + 100391: _SkillID_name[867:897], + 100401: _SkillID_name[897:910], + 100411: _SkillID_name[910:937], + 100451: _SkillID_name[937:947], + 100461: _SkillID_name[947:964], + 100481: _SkillID_name[964:976], + 100501: _SkillID_name[976:983], + 100521: _SkillID_name[983:1001], + 100561: _SkillID_name[1001:1028], + 100581: _SkillID_name[1028:1044], + 100591: _SkillID_name[1044:1067], + 100601: _SkillID_name[1067:1089], + 100611: _SkillID_name[1089:1102], + 110011: _SkillID_name[1102:1119], + 110031: _SkillID_name[1119:1134], + 110041: _SkillID_name[1134:1152], + 110061: _SkillID_name[1152:1167], + 110111: _SkillID_name[1167:1180], + 110131: _SkillID_name[1180:1200], + 110141: _SkillID_name[1200:1213], + 110171: _SkillID_name[1213:1245], + 110181: _SkillID_name[1245:1260], + 110231: _SkillID_name[1260:1275], + 110241: _SkillID_name[1275:1293], + 110301: _SkillID_name[1293:1317], + 110401: _SkillID_name[1317:1338], + 110451: _SkillID_name[1338:1358], + 110561: _SkillID_name[1358:1375], + 200011: _SkillID_name[1375:1391], + 200012: _SkillID_name[1391:1407], + 200013: _SkillID_name[1407:1422], + 200021: _SkillID_name[1422:1437], + 200022: _SkillID_name[1437:1452], + 200023: _SkillID_name[1452:1466], + 200031: _SkillID_name[1466:1486], + 200032: _SkillID_name[1486:1506], + 200033: _SkillID_name[1506:1525], + 200041: _SkillID_name[1525:1548], + 200042: _SkillID_name[1548:1571], + 200043: _SkillID_name[1571:1593], + 200051: _SkillID_name[1593:1615], + 200052: _SkillID_name[1615:1637], + 200053: _SkillID_name[1637:1658], + 200061: _SkillID_name[1658:1678], + 200062: _SkillID_name[1678:1698], + 200063: _SkillID_name[1698:1717], + 200064: _SkillID_name[1717:1729], + 200071: _SkillID_name[1729:1750], + 200072: _SkillID_name[1750:1771], + 200073: _SkillID_name[1771:1791], + 200081: _SkillID_name[1791:1813], + 200082: _SkillID_name[1813:1835], + 200083: _SkillID_name[1835:1856], + 200091: _SkillID_name[1856:1879], + 200092: _SkillID_name[1879:1902], + 200093: _SkillID_name[1902:1924], + 200101: _SkillID_name[1924:1948], + 200102: _SkillID_name[1948:1972], + 200103: _SkillID_name[1972:1995], + 200111: _SkillID_name[1995:2017], + 200112: _SkillID_name[2017:2039], + 200113: _SkillID_name[2039:2060], + 200121: _SkillID_name[2060:2081], + 200122: _SkillID_name[2081:2102], + 200123: _SkillID_name[2102:2122], + 200131: _SkillID_name[2122:2143], + 200132: _SkillID_name[2143:2164], + 200133: _SkillID_name[2164:2184], + 200141: _SkillID_name[2184:2209], + 200142: _SkillID_name[2209:2234], + 200143: _SkillID_name[2234:2258], + 200151: _SkillID_name[2258:2277], + 200152: _SkillID_name[2277:2296], + 200153: _SkillID_name[2296:2314], + 200161: _SkillID_name[2314:2332], + 200162: _SkillID_name[2332:2350], + 200163: _SkillID_name[2350:2367], + 200171: _SkillID_name[2367:2384], + 200172: _SkillID_name[2384:2401], + 200173: _SkillID_name[2401:2417], + 200181: _SkillID_name[2417:2434], + 200182: _SkillID_name[2434:2451], + 200183: _SkillID_name[2451:2467], + 200191: _SkillID_name[2467:2482], + 200192: _SkillID_name[2482:2497], + 200193: _SkillID_name[2497:2511], + 200194: _SkillID_name[2511:2522], + 200201: _SkillID_name[2522:2539], + 200202: _SkillID_name[2539:2556], + 200203: _SkillID_name[2556:2572], + 200211: _SkillID_name[2572:2586], + 200212: _SkillID_name[2586:2600], + 200221: _SkillID_name[2600:2615], + 200222: _SkillID_name[2615:2630], + 200231: _SkillID_name[2630:2644], + 200232: _SkillID_name[2644:2658], + 200233: _SkillID_name[2658:2671], + 200241: _SkillID_name[2671:2685], + 200242: _SkillID_name[2685:2699], + 200251: _SkillID_name[2699:2725], + 200252: _SkillID_name[2725:2751], + 200253: _SkillID_name[2751:2772], + 200261: _SkillID_name[2772:2798], + 200262: _SkillID_name[2798:2824], + 200263: _SkillID_name[2824:2845], + 200271: _SkillID_name[2845:2857], + 200272: _SkillID_name[2857:2869], + 200281: _SkillID_name[2869:2891], + 200282: _SkillID_name[2891:2913], + 200283: _SkillID_name[2913:2923], + 200291: _SkillID_name[2923:2942], + 200292: _SkillID_name[2942:2961], + 200301: _SkillID_name[2961:2974], + 200302: _SkillID_name[2974:2987], + 200311: _SkillID_name[2987:3000], + 200321: _SkillID_name[3000:3014], + 200331: _SkillID_name[3014:3036], + 200332: _SkillID_name[3036:3052], + 200333: _SkillID_name[3052:3067], + 200341: _SkillID_name[3067:3085], + 200342: _SkillID_name[3085:3108], + 200343: _SkillID_name[3108:3130], + 200351: _SkillID_name[3130:3146], + 200352: _SkillID_name[3146:3165], + 200353: _SkillID_name[3165:3183], + 200361: _SkillID_name[3183:3196], + 200362: _SkillID_name[3196:3214], + 200371: _SkillID_name[3214:3227], + 200372: _SkillID_name[3227:3252], + 200381: _SkillID_name[3252:3271], + 200382: _SkillID_name[3271:3292], + 200391: _SkillID_name[3292:3306], + 200401: _SkillID_name[3306:3316], + 200411: _SkillID_name[3316:3325], + 200421: _SkillID_name[3325:3333], + 200431: _SkillID_name[3333:3346], + 200432: _SkillID_name[3346:3351], + 200433: _SkillID_name[3351:3359], + 200441: _SkillID_name[3359:3368], + 200442: _SkillID_name[3368:3375], + 200451: _SkillID_name[3375:3387], + 200452: _SkillID_name[3387:3406], + 200461: _SkillID_name[3406:3414], + 200462: _SkillID_name[3414:3421], + 200471: _SkillID_name[3421:3432], + 200472: _SkillID_name[3432:3445], + 200481: _SkillID_name[3445:3454], + 200482: _SkillID_name[3454:3469], + 200491: _SkillID_name[3469:3484], + 200492: _SkillID_name[3484:3500], + 200501: _SkillID_name[3500:3516], + 200502: _SkillID_name[3516:3532], + 200511: _SkillID_name[3532:3548], + 200512: _SkillID_name[3548:3565], + 200521: _SkillID_name[3565:3577], + 200531: _SkillID_name[3577:3592], + 200532: _SkillID_name[3592:3602], + 200541: _SkillID_name[3602:3615], + 200542: _SkillID_name[3615:3625], + 200551: _SkillID_name[3625:3637], + 200552: _SkillID_name[3637:3647], + 200561: _SkillID_name[3647:3665], + 200562: _SkillID_name[3665:3681], + 200571: _SkillID_name[3681:3693], + 200572: _SkillID_name[3693:3711], + 200581: _SkillID_name[3711:3721], + 200582: _SkillID_name[3721:3737], + 200591: _SkillID_name[3737:3751], + 200592: _SkillID_name[3751:3766], + 200601: _SkillID_name[3766:3779], + 200602: _SkillID_name[3779:3790], + 200611: _SkillID_name[3790:3803], + 200612: _SkillID_name[3803:3814], + 200621: _SkillID_name[3814:3827], + 200622: _SkillID_name[3827:3838], + 200631: _SkillID_name[3838:3853], + 200632: _SkillID_name[3853:3869], + 200641: _SkillID_name[3869:3887], + 200642: _SkillID_name[3887:3905], + 200651: _SkillID_name[3905:3917], + 200652: _SkillID_name[3917:3931], + 200662: _SkillID_name[3931:3943], + 200671: _SkillID_name[3943:3957], + 200672: _SkillID_name[3957:3967], + 200681: _SkillID_name[3967:3977], + 200682: _SkillID_name[3977:3992], + 200691: _SkillID_name[3992:4000], + 200692: _SkillID_name[4000:4012], + 200701: _SkillID_name[4012:4024], + 200702: _SkillID_name[4024:4034], + 200711: _SkillID_name[4034:4045], + 200712: _SkillID_name[4045:4057], + 200721: _SkillID_name[4057:4069], + 200722: _SkillID_name[4069:4077], + 200731: _SkillID_name[4077:4087], + 200732: _SkillID_name[4087:4096], + 200741: _SkillID_name[4096:4104], + 200742: _SkillID_name[4104:4116], + 200751: _SkillID_name[4116:4133], + 200752: _SkillID_name[4133:4145], + 200761: _SkillID_name[4145:4160], + 200762: _SkillID_name[4160:4170], + 200771: _SkillID_name[4170:4183], + 200772: _SkillID_name[4183:4200], + 200781: _SkillID_name[4200:4212], + 200791: _SkillID_name[4212:4234], + 200801: _SkillID_name[4234:4255], + 200811: _SkillID_name[4255:4276], + 200821: _SkillID_name[4276:4296], + 200831: _SkillID_name[4296:4317], + 200841: _SkillID_name[4317:4340], + 200851: _SkillID_name[4340:4362], + 200861: _SkillID_name[4362:4382], + 200871: _SkillID_name[4382:4404], + 200881: _SkillID_name[4404:4425], + 200891: _SkillID_name[4425:4445], + 200901: _SkillID_name[4445:4467], + 200911: _SkillID_name[4467:4488], + 200921: _SkillID_name[4488:4507], + 200931: _SkillID_name[4507:4528], + 200941: _SkillID_name[4528:4548], + 200951: _SkillID_name[4548:4565], + 200952: _SkillID_name[4565:4582], + 200953: _SkillID_name[4582:4598], + 200961: _SkillID_name[4598:4622], + 200962: _SkillID_name[4622:4646], + 200971: _SkillID_name[4646:4664], + 200972: _SkillID_name[4664:4682], + 200981: _SkillID_name[4682:4697], + 200982: _SkillID_name[4697:4706], + 200991: _SkillID_name[4706:4712], + 200992: _SkillID_name[4712:4726], + 201001: _SkillID_name[4726:4739], + 201002: _SkillID_name[4739:4758], + 201011: _SkillID_name[4758:4771], + 201012: _SkillID_name[4771:4781], + 201021: _SkillID_name[4781:4799], + 201022: _SkillID_name[4799:4816], + 201031: _SkillID_name[4816:4838], + 201032: _SkillID_name[4838:4860], + 201041: _SkillID_name[4860:4876], + 201042: _SkillID_name[4876:4892], + 201051: _SkillID_name[4892:4906], + 201052: _SkillID_name[4906:4920], + 201061: _SkillID_name[4920:4936], + 201062: _SkillID_name[4936:4948], + 201071: _SkillID_name[4948:4960], + 201072: _SkillID_name[4960:4977], + 201081: _SkillID_name[4977:4992], + 201082: _SkillID_name[4992:5003], + 201091: _SkillID_name[5003:5019], + 201092: _SkillID_name[5019:5033], + 201101: _SkillID_name[5033:5057], + 201102: _SkillID_name[5057:5081], + 201111: _SkillID_name[5081:5099], + 201112: _SkillID_name[5099:5117], + 201121: _SkillID_name[5117:5129], + 201122: _SkillID_name[5129:5136], + 201131: _SkillID_name[5136:5150], + 201132: _SkillID_name[5150:5166], + 201141: _SkillID_name[5166:5181], + 201142: _SkillID_name[5181:5190], + 201151: _SkillID_name[5190:5199], + 201152: _SkillID_name[5199:5205], + 201161: _SkillID_name[5205:5222], + 201162: _SkillID_name[5222:5228], + 201171: _SkillID_name[5228:5250], + 201172: _SkillID_name[5250:5272], + 201181: _SkillID_name[5272:5288], + 201182: _SkillID_name[5288:5304], + 201191: _SkillID_name[5304:5319], + 201192: _SkillID_name[5319:5335], + 201201: _SkillID_name[5335:5343], + 201202: _SkillID_name[5343:5354], + 201211: _SkillID_name[5354:5375], + 201212: _SkillID_name[5375:5383], + 201221: _SkillID_name[5383:5397], + 201222: _SkillID_name[5397:5410], + 201231: _SkillID_name[5410:5421], + 201232: _SkillID_name[5421:5433], + 201241: _SkillID_name[5433:5463], + 201242: _SkillID_name[5463:5493], + 201251: _SkillID_name[5493:5517], + 201252: _SkillID_name[5517:5541], + 201261: _SkillID_name[5541:5552], + 201262: _SkillID_name[5552:5566], + 201272: _SkillID_name[5566:5580], + 201281: _SkillID_name[5580:5588], + 201282: _SkillID_name[5588:5593], + 201291: _SkillID_name[5593:5603], + 201292: _SkillID_name[5603:5614], + 201302: _SkillID_name[5614:5621], + 201311: _SkillID_name[5621:5650], + 201312: _SkillID_name[5650:5679], + 201321: _SkillID_name[5679:5702], + 201322: _SkillID_name[5702:5725], + 201331: _SkillID_name[5725:5735], + 201332: _SkillID_name[5735:5746], + 201341: _SkillID_name[5746:5764], + 201342: _SkillID_name[5764:5780], + 201351: _SkillID_name[5780:5788], + 201352: _SkillID_name[5788:5795], + 201361: _SkillID_name[5795:5807], + 201362: _SkillID_name[5807:5821], + 201371: _SkillID_name[5821:5844], + 201372: _SkillID_name[5844:5853], + 201381: _SkillID_name[5853:5882], + 201382: _SkillID_name[5882:5911], + 201391: _SkillID_name[5911:5934], + 201392: _SkillID_name[5934:5957], + 201401: _SkillID_name[5957:5968], + 201402: _SkillID_name[5968:5975], + 201411: _SkillID_name[5975:5988], + 201412: _SkillID_name[5988:6000], + 201421: _SkillID_name[6000:6005], + 201422: _SkillID_name[6005:6021], + 201431: _SkillID_name[6021:6039], + 201432: _SkillID_name[6039:6047], + 201441: _SkillID_name[6047:6062], + 201442: _SkillID_name[6062:6072], + 201451: _SkillID_name[6072:6100], + 201452: _SkillID_name[6100:6128], + 201461: _SkillID_name[6128:6150], + 201462: _SkillID_name[6150:6172], + 201471: _SkillID_name[6172:6191], + 201472: _SkillID_name[6191:6218], + 201481: _SkillID_name[6218:6236], + 201482: _SkillID_name[6236:6255], + 201491: _SkillID_name[6255:6263], + 201492: _SkillID_name[6263:6274], + 201501: _SkillID_name[6274:6282], + 201502: _SkillID_name[6282:6292], + 201511: _SkillID_name[6292:6307], + 201512: _SkillID_name[6307:6319], + 201521: _SkillID_name[6319:6341], + 201522: _SkillID_name[6341:6363], + 201531: _SkillID_name[6363:6384], + 201532: _SkillID_name[6384:6405], + 201541: _SkillID_name[6405:6426], + 201542: _SkillID_name[6426:6447], + 201551: _SkillID_name[6447:6467], + 201552: _SkillID_name[6467:6487], + 201561: _SkillID_name[6487:6504], + 201562: _SkillID_name[6504:6515], + 201571: _SkillID_name[6515:6524], + 201581: _SkillID_name[6524:6534], + 201591: _SkillID_name[6534:6542], + 201592: _SkillID_name[6542:6551], + 201601: _SkillID_name[6551:6561], + 201611: _SkillID_name[6561:6575], + 201621: _SkillID_name[6575:6587], + 201631: _SkillID_name[6587:6595], + 201641: _SkillID_name[6595:6604], + 201651: _SkillID_name[6604:6614], + 201661: _SkillID_name[6614:6630], + 201671: _SkillID_name[6630:6653], + 201672: _SkillID_name[6653:6661], + 201681: _SkillID_name[6661:6677], + 201682: _SkillID_name[6677:6692], + 201691: _SkillID_name[6692:6703], + 201692: _SkillID_name[6703:6711], + 201701: _SkillID_name[6711:6724], + 201702: _SkillID_name[6724:6736], + 201801: _SkillID_name[6736:6751], + 201902: _SkillID_name[6751:6758], + 202022: _SkillID_name[6758:6769], + 202032: _SkillID_name[6769:6783], + 202051: _SkillID_name[6783:6790], + 210011: _SkillID_name[6790:6808], + 210012: _SkillID_name[6808:6826], + 210021: _SkillID_name[6826:6844], + 210022: _SkillID_name[6844:6862], + 210031: _SkillID_name[6862:6880], + 210032: _SkillID_name[6880:6898], + 210041: _SkillID_name[6898:6917], + 210042: _SkillID_name[6917:6936], + 210051: _SkillID_name[6936:6954], + 210052: _SkillID_name[6954:6972], + 300011: _SkillID_name[6972:6989], + 300021: _SkillID_name[6989:6999], + 900011: _SkillID_name[6999:7012], + 900021: _SkillID_name[7012:7043], + 900031: _SkillID_name[7043:7061], + 900041: _SkillID_name[7061:7079], + 900051: _SkillID_name[7079:7099], + 900061: _SkillID_name[7099:7115], + 900071: _SkillID_name[7115:7130], + 900081: _SkillID_name[7130:7144], + 900091: _SkillID_name[7144:7163], + 900101: _SkillID_name[7163:7184], + 900111: _SkillID_name[7184:7219], + 900121: _SkillID_name[7219:7242], + 900131: _SkillID_name[7242:7267], + 900141: _SkillID_name[7267:7291], + 900151: _SkillID_name[7291:7318], + 900161: _SkillID_name[7318:7330], + 900171: _SkillID_name[7330:7365], + 900181: _SkillID_name[7365:7378], + 900191: _SkillID_name[7378:7417], + 900201: _SkillID_name[7417:7437], + 900231: _SkillID_name[7437:7450], + 900241: _SkillID_name[7450:7466], + 900251: _SkillID_name[7466:7483], + 900261: _SkillID_name[7483:7497], + 900271: _SkillID_name[7497:7518], + 900281: _SkillID_name[7518:7532], + 900301: _SkillID_name[7532:7548], + 900321: _SkillID_name[7548:7553], + 900351: _SkillID_name[7553:7571], + 900371: _SkillID_name[7571:7588], + 900381: _SkillID_name[7588:7601], + 900391: _SkillID_name[7601:7631], + 900401: _SkillID_name[7631:7644], + 900411: _SkillID_name[7644:7671], + 900451: _SkillID_name[7671:7681], + 900461: _SkillID_name[7681:7698], + 900481: _SkillID_name[7698:7710], + 900501: _SkillID_name[7710:7717], + 900521: _SkillID_name[7717:7735], + 900561: _SkillID_name[7735:7762], + 900581: _SkillID_name[7762:7778], + 900591: _SkillID_name[7778:7801], + 900601: _SkillID_name[7801:7823], + 900611: _SkillID_name[7823:7836], + 910011: _SkillID_name[7836:7853], + 910031: _SkillID_name[7853:7868], + 910041: _SkillID_name[7868:7886], + 910061: _SkillID_name[7886:7901], + 910111: _SkillID_name[7901:7914], + 910131: _SkillID_name[7914:7934], + 910141: _SkillID_name[7934:7947], + 910171: _SkillID_name[7947:7979], + 910181: _SkillID_name[7979:7994], + 910231: _SkillID_name[7994:8009], + 910241: _SkillID_name[8009:8027], + 910301: _SkillID_name[8027:8051], + 910401: _SkillID_name[8051:8072], + 910451: _SkillID_name[8072:8092], + 910561: _SkillID_name[8092:8109], +} + +func (i SkillID) String() string { + if str, ok := _SkillID_map[i]; ok { + return str + } + return "SkillID(" + strconv.FormatInt(int64(i), 10) + ")" +}