N = 120
# X(G) = 9
COLORS = 8
# M = 1276
EDGES = [
    [1, 16],
    [1, 20],
    [1, 94],
    [1, 80],
    [1, 57],
    [1, 62],
    [1, 89],
    [1, 113],
    [1, 5],
    [1, 21],
    [1, 15],
    [2, 24],
    [2, 30],
    [2, 77],
    [2, 92],
    [2, 41],
    [2, 55],
    [2, 6],
    [2, 54],
    [3, 100],
    [3, 44],
    [3, 105],
    [3, 91],
    [3, 42],
    [3, 103],
    [3, 90],
    [3, 22],
    [3, 67],
    [3, 31],
    [3, 115],
    [3, 71],
    [4, 38],
    [4, 85],
    [4, 49],
    [4, 50],
    [4, 61],
    [4, 63],
    [4, 99],
    [4, 96],
    [4, 84],
    [4, 107],
    [4, 12],
    [5, 56],
    [5, 26],
    [5, 72],
    [5, 38],
    [5, 32],
    [5, 85],
    [5, 76],
    [5, 1],
    [5, 34],
    [5, 53],
    [6, 11],
    [6, 87],
    [6, 13],
    [6, 14],
    [6, 41],
    [6, 24],
    [6, 55],
    [6, 92],
    [6, 2],
    [6, 60],
    [7, 66],
    [7, 83],
    [7, 21],
    [7, 118],
    [7, 48],
    [7, 10],
    [7, 120],
    [7, 25],
    [7, 75],
    [7, 64],
    [7, 28],
    [7, 51],
    [8, 73],
    [8, 18],
    [8, 53],
    [8, 86],
    [8, 71],
    [8, 104],
    [8, 98],
    [8, 38],
    [8, 46],
    [8, 100],
    [9, 33],
    [9, 31],
    [9, 69],
    [9, 58],
    [9, 116],
    [9, 17],
    [9, 51],
    [9, 70],
    [9, 101],
    [9, 119],
    [9, 38],
    [10, 25],
    [10, 75],
    [10, 48],
    [10, 83],
    [10, 21],
    [10, 7],
    [10, 64],
    [10, 35],
    [10, 120],
    [10, 36],
    [10, 118],
    [11, 6],
    [11, 55],
    [11, 14],
    [11, 41],
    [11, 60],
    [11, 87],
    [11, 30],
    [11, 54],
    [11, 13],
    [12, 117],
    [12, 19],
    [12, 43],
    [12, 102],
    [12, 23],
    [12, 88],
    [12, 35],
    [12, 97],
    [12, 68],
    [12, 29],
    [12, 4],
    [13, 60],
    [13, 41],
    [13, 6],
    [13, 87],
    [13, 55],
    [13, 14],
    [13, 54],
    [13, 77],
    [13, 30],
    [13, 11],
    [14, 55],
    [14, 60],
    [14, 11],
    [14, 6],
    [14, 87],
    [14, 13],
    [14, 77],
    [14, 54],
    [14, 24],
    [14, 41],
    [15, 53],
    [15, 95],
    [15, 52],
    [15, 65],
    [15, 59],
    [15, 108],
    [15, 39],
    [15, 66],
    [15, 37],
    [15, 112],
    [15, 88],
    [15, 1],
    [16, 65],
    [16, 1],
    [16, 62],
    [16, 80],
    [16, 94],
    [16, 47],
    [16, 57],
    [16, 113],
    [16, 89],
    [16, 26],
    [16, 27],
    [16, 34],
    [17, 31],
    [17, 34],
    [17, 28],
    [17, 9],
    [17, 101],
    [17, 69],
    [17, 33],
    [17, 79],
    [17, 42],
    [17, 103],
    [17, 115],
    [18, 20],
    [18, 8],
    [18, 93],
    [18, 100],
    [18, 86],
    [18, 27],
    [18, 84],
    [18, 73],
    [18, 53],
    [18, 71],
    [18, 98],
    [19, 61],
    [19, 97],
    [19, 12],
    [19, 23],
    [19, 35],
    [19, 43],
    [19, 117],
    [19, 102],
    [19, 29],
    [19, 80],
    [19, 114],
    [19, 90],
    [20, 18],
    [20, 113],
    [20, 1],
    [20, 89],
    [20, 62],
    [20, 80],
    [20, 47],
    [20, 94],
    [20, 57],
    [20, 65],
    [20, 56],
    [20, 67],
    [21, 83],
    [21, 118],
    [21, 7],
    [21, 10],
    [21, 120],
    [21, 25],
    [21, 75],
    [21, 48],
    [21, 1],
    [22, 39],
    [22, 44],
    [22, 105],
    [22, 91],
    [22, 42],
    [22, 3],
    [22, 90],
    [22, 103],
    [22, 67],
    [22, 74],
    [23, 27],
    [23, 102],
    [23, 43],
    [23, 19],
    [23, 97],
    [23, 12],
    [23, 35],
    [23, 117],
    [23, 59],
    [23, 44],
    [23, 57],
    [23, 95],
    [23, 38],
    [24, 2],
    [24, 54],
    [24, 30],
    [24, 92],
    [24, 6],
    [24, 60],
    [24, 14],
    [24, 77],
    [25, 10],
    [25, 120],
    [25, 118],
    [25, 75],
    [25, 83],
    [25, 21],
    [25, 7],
    [25, 28],
    [25, 31],
    [25, 48],
    [25, 50],
    [26, 5],
    [26, 109],
    [26, 93],
    [26, 64],
    [26, 34],
    [26, 72],
    [26, 56],
    [26, 16],
    [26, 76],
    [26, 92],
    [26, 51],
    [27, 23],
    [27, 65],
    [27, 76],
    [27, 38],
    [27, 84],
    [27, 72],
    [27, 88],
    [27, 18],
    [27, 95],
    [27, 47],
    [27, 16],
    [27, 113],
    [28, 58],
    [28, 79],
    [28, 68],
    [28, 17],
    [28, 32],
    [28, 109],
    [28, 120],
    [28, 25],
    [28, 89],
    [28, 7],
    [28, 75],
    [29, 52],
    [29, 65],
    [29, 39],
    [29, 108],
    [29, 112],
    [29, 37],
    [29, 19],
    [29, 95],
    [29, 74],
    [29, 12],
    [30, 92],
    [30, 2],
    [30, 24],
    [30, 77],
    [30, 54],
    [30, 55],
    [30, 11],
    [30, 41],
    [30, 13],
    [30, 93],
    [31, 17],
    [31, 9],
    [31, 58],
    [31, 33],
    [31, 79],
    [31, 51],
    [31, 70],
    [31, 3],
    [31, 106],
    [31, 25],
    [31, 110],
    [32, 114],
    [32, 69],
    [32, 5],
    [32, 28],
    [32, 78],
    [32, 101],
    [32, 110],
    [32, 115],
    [32, 85],
    [32, 79],
    [32, 36],
    [33, 113],
    [33, 9],
    [33, 38],
    [33, 31],
    [33, 106],
    [33, 110],
    [33, 51],
    [33, 17],
    [33, 91],
    [33, 116],
    [33, 69],
    [34, 37],
    [34, 88],
    [34, 109],
    [34, 17],
    [34, 56],
    [34, 93],
    [34, 26],
    [34, 76],
    [34, 106],
    [34, 72],
    [34, 16],
    [34, 5],
    [34, 65],
    [35, 43],
    [35, 117],
    [35, 102],
    [35, 19],
    [35, 97],
    [35, 23],
    [35, 12],
    [35, 10],
    [35, 89],
    [35, 80],
    [36, 49],
    [36, 98],
    [36, 64],
    [36, 111],
    [36, 116],
    [36, 115],
    [36, 10],
    [36, 32],
    [37, 34],
    [37, 39],
    [37, 95],
    [37, 59],
    [37, 112],
    [37, 65],
    [37, 29],
    [37, 108],
    [37, 15],
    [37, 52],
    [37, 104],
    [37, 57],
    [38, 4],
    [38, 106],
    [38, 51],
    [38, 33],
    [38, 27],
    [38, 5],
    [38, 58],
    [38, 70],
    [38, 116],
    [38, 8],
    [38, 9],
    [38, 81],
    [38, 23],
    [39, 22],
    [39, 37],
    [39, 112],
    [39, 29],
    [39, 65],
    [39, 52],
    [39, 15],
    [39, 59],
    [39, 117],
    [39, 98],
    [39, 90],
    [40, 74],
    [40, 119],
    [40, 82],
    [40, 66],
    [40, 46],
    [40, 81],
    [40, 73],
    [40, 45],
    [40, 107],
    [41, 87],
    [41, 13],
    [41, 55],
    [41, 11],
    [41, 6],
    [41, 2],
    [41, 60],
    [41, 30],
    [41, 14],
    [42, 91],
    [42, 67],
    [42, 103],
    [42, 3],
    [42, 44],
    [42, 22],
    [42, 90],
    [42, 105],
    [42, 17],
    [42, 106],
    [43, 35],
    [43, 23],
    [43, 12],
    [43, 117],
    [43, 19],
    [43, 102],
    [43, 97],
    [43, 105],
    [43, 70],
    [43, 111],
    [44, 88],
    [44, 3],
    [44, 90],
    [44, 105],
    [44, 22],
    [44, 67],
    [44, 42],
    [44, 91],
    [44, 97],
    [44, 103],
    [44, 23],
    [44, 76],
    [45, 100],
    [45, 81],
    [45, 119],
    [45, 46],
    [45, 74],
    [45, 66],
    [45, 82],
    [45, 52],
    [45, 117],
    [45, 40],
    [45, 86],
    [46, 119],
    [46, 66],
    [46, 45],
    [46, 111],
    [46, 81],
    [46, 74],
    [46, 40],
    [46, 82],
    [46, 102],
    [46, 8],
    [46, 104],
    [47, 94],
    [47, 89],
    [47, 62],
    [47, 113],
    [47, 16],
    [47, 20],
    [47, 57],
    [47, 80],
    [47, 27],
    [47, 59],
    [48, 84],
    [48, 10],
    [48, 120],
    [48, 7],
    [48, 75],
    [48, 118],
    [48, 83],
    [48, 21],
    [48, 114],
    [48, 25],
    [49, 36],
    [49, 4],
    [49, 76],
    [49, 50],
    [49, 96],
    [49, 63],
    [49, 61],
    [49, 113],
    [49, 99],
    [49, 107],
    [49, 109],
    [49, 85],
    [50, 96],
    [50, 4],
    [50, 107],
    [50, 49],
    [50, 61],
    [50, 63],
    [50, 99],
    [50, 51],
    [50, 78],
    [50, 25],
    [51, 38],
    [51, 70],
    [51, 106],
    [51, 110],
    [51, 31],
    [51, 9],
    [51, 33],
    [51, 50],
    [51, 94],
    [51, 26],
    [51, 7],
    [52, 98],
    [52, 29],
    [52, 15],
    [52, 108],
    [52, 95],
    [52, 39],
    [52, 59],
    [52, 45],
    [52, 100],
    [52, 37],
    [52, 73],
    [53, 15],
    [53, 71],
    [53, 100],
    [53, 98],
    [53, 8],
    [53, 104],
    [53, 73],
    [53, 86],
    [53, 18],
    [53, 112],
    [53, 5],
    [54, 77],
    [54, 24],
    [54, 92],
    [54, 30],
    [54, 13],
    [54, 14],
    [54, 11],
    [54, 2],
    [55, 14],
    [55, 11],
    [55, 41],
    [55, 60],
    [55, 13],
    [55, 30],
    [55, 6],
    [55, 2],
    [55, 87],
    [56, 5],
    [56, 88],
    [56, 68],
    [56, 34],
    [56, 109],
    [56, 76],
    [56, 93],
    [56, 26],
    [56, 84],
    [56, 20],
    [56, 72],
    [57, 107],
    [57, 62],
    [57, 94],
    [57, 113],
    [57, 89],
    [57, 1],
    [57, 16],
    [57, 47],
    [57, 20],
    [57, 23],
    [57, 37],
    [58, 68],
    [58, 116],
    [58, 28],
    [58, 31],
    [58, 9],
    [58, 76],
    [58, 38],
    [58, 115],
    [58, 106],
    [58, 110],
    [58, 70],
    [58, 101],
    [59, 89],
    [59, 112],
    [59, 108],
    [59, 37],
    [59, 15],
    [59, 95],
    [59, 52],
    [59, 39],
    [59, 23],
    [59, 65],
    [59, 47],
    [59, 66],
    [60, 13],
    [60, 14],
    [60, 87],
    [60, 55],
    [60, 11],
    [60, 77],
    [60, 41],
    [60, 24],
    [60, 92],
    [60, 6],
    [61, 19],
    [61, 110],
    [61, 63],
    [61, 85],
    [61, 4],
    [61, 96],
    [61, 50],
    [61, 107],
    [61, 49],
    [61, 78],
    [61, 99],
    [62, 57],
    [62, 16],
    [62, 47],
    [62, 20],
    [62, 89],
    [62, 1],
    [62, 80],
    [62, 94],
    [62, 114],
    [62, 103],
    [62, 96],
    [63, 106],
    [63, 61],
    [63, 96],
    [63, 107],
    [63, 4],
    [63, 49],
    [63, 50],
    [63, 93],
    [63, 99],
    [63, 103],
    [64, 36],
    [64, 114],
    [64, 26],
    [64, 70],
    [64, 84],
    [64, 10],
    [64, 119],
    [64, 7],
    [64, 120],
    [65, 16],
    [65, 27],
    [65, 108],
    [65, 29],
    [65, 15],
    [65, 39],
    [65, 37],
    [65, 95],
    [65, 112],
    [65, 20],
    [65, 59],
    [65, 76],
    [65, 34],
    [66, 7],
    [66, 82],
    [66, 46],
    [66, 119],
    [66, 45],
    [66, 40],
    [66, 15],
    [66, 95],
    [66, 74],
    [66, 81],
    [66, 59],
    [66, 68],
    [67, 42],
    [67, 105],
    [67, 44],
    [67, 88],
    [67, 103],
    [67, 91],
    [67, 3],
    [67, 90],
    [67, 104],
    [67, 22],
    [67, 20],
    [68, 58],
    [68, 56],
    [68, 28],
    [68, 72],
    [68, 69],
    [68, 111],
    [68, 101],
    [68, 109],
    [68, 12],
    [68, 66],
    [69, 79],
    [69, 9],
    [69, 32],
    [69, 115],
    [69, 101],
    [69, 68],
    [69, 17],
    [69, 111],
    [69, 33],
    [70, 79],
    [70, 51],
    [70, 110],
    [70, 116],
    [70, 64],
    [70, 38],
    [70, 31],
    [70, 9],
    [70, 58],
    [70, 43],
    [71, 100],
    [71, 98],
    [71, 53],
    [71, 73],
    [71, 104],
    [71, 81],
    [71, 119],
    [71, 8],
    [71, 86],
    [71, 18],
    [71, 3],
    [72, 76],
    [72, 5],
    [72, 88],
    [72, 27],
    [72, 68],
    [72, 26],
    [72, 109],
    [72, 34],
    [72, 97],
    [72, 56],
    [72, 83],
    [73, 88],
    [73, 8],
    [73, 104],
    [73, 71],
    [73, 86],
    [73, 108],
    [73, 53],
    [73, 18],
    [73, 100],
    [73, 40],
    [73, 52],
    [74, 40],
    [74, 82],
    [74, 45],
    [74, 46],
    [74, 119],
    [74, 81],
    [74, 66],
    [74, 29],
    [74, 22],
    [75, 10],
    [75, 120],
    [75, 25],
    [75, 118],
    [75, 48],
    [75, 83],
    [75, 21],
    [75, 7],
    [75, 85],
    [75, 28],
    [76, 79],
    [76, 72],
    [76, 27],
    [76, 49],
    [76, 109],
    [76, 58],
    [76, 56],
    [76, 34],
    [76, 5],
    [76, 26],
    [76, 65],
    [76, 44],
    [77, 54],
    [77, 92],
    [77, 2],
    [77, 30],
    [77, 93],
    [77, 60],
    [77, 14],
    [77, 13],
    [77, 87],
    [77, 24],
    [78, 109],
    [78, 107],
    [78, 79],
    [78, 99],
    [78, 32],
    [78, 61],
    [78, 85],
    [78, 50],
    [78, 96],
    [79, 76],
    [79, 70],
    [79, 69],
    [79, 28],
    [79, 78],
    [79, 31],
    [79, 116],
    [79, 88],
    [79, 85],
    [79, 17],
    [79, 32],
    [80, 89],
    [80, 113],
    [80, 16],
    [80, 1],
    [80, 20],
    [80, 94],
    [80, 62],
    [80, 47],
    [80, 19],
    [80, 35],
    [80, 86],
    [81, 45],
    [81, 82],
    [81, 71],
    [81, 46],
    [81, 119],
    [81, 74],
    [81, 40],
    [81, 66],
    [81, 38],
    [82, 66],
    [82, 81],
    [82, 74],
    [82, 40],
    [82, 45],
    [82, 114],
    [82, 119],
    [82, 46],
    [82, 86],
    [82, 104],
    [82, 118],
    [83, 21],
    [83, 7],
    [83, 10],
    [83, 120],
    [83, 25],
    [83, 75],
    [83, 48],
    [83, 118],
    [83, 72],
    [84, 93],
    [84, 48],
    [84, 27],
    [84, 64],
    [84, 18],
    [84, 56],
    [84, 4],
    [85, 4],
    [85, 61],
    [85, 99],
    [85, 101],
    [85, 5],
    [85, 109],
    [85, 79],
    [85, 78],
    [85, 32],
    [85, 75],
    [85, 49],
    [86, 100],
    [86, 104],
    [86, 73],
    [86, 18],
    [86, 8],
    [86, 98],
    [86, 53],
    [86, 71],
    [86, 82],
    [86, 80],
    [86, 45],
    [87, 41],
    [87, 6],
    [87, 60],
    [87, 13],
    [87, 14],
    [87, 11],
    [87, 92],
    [87, 77],
    [87, 55],
    [88, 44],
    [88, 73],
    [88, 34],
    [88, 56],
    [88, 72],
    [88, 67],
    [88, 27],
    [88, 12],
    [88, 79],
    [88, 89],
    [88, 15],
    [88, 100],
    [89, 59],
    [89, 80],
    [89, 47],
    [89, 20],
    [89, 57],
    [89, 62],
    [89, 113],
    [89, 1],
    [89, 16],
    [89, 88],
    [89, 35],
    [89, 28],
    [90, 44],
    [90, 103],
    [90, 91],
    [90, 105],
    [90, 3],
    [90, 42],
    [90, 22],
    [90, 67],
    [90, 39],
    [90, 19],
    [91, 42],
    [91, 3],
    [91, 90],
    [91, 103],
    [91, 22],
    [91, 44],
    [91, 67],
    [91, 105],
    [91, 98],
    [91, 33],
    [91, 111],
    [92, 30],
    [92, 77],
    [92, 54],
    [92, 24],
    [92, 2],
    [92, 87],
    [92, 6],
    [92, 60],
    [92, 26],
    [93, 84],
    [93, 106],
    [93, 18],
    [93, 26],
    [93, 34],
    [93, 77],
    [93, 56],
    [93, 96],
    [93, 63],
    [93, 30],
    [94, 116],
    [94, 47],
    [94, 57],
    [94, 1],
    [94, 16],
    [94, 113],
    [94, 80],
    [94, 20],
    [94, 62],
    [94, 118],
    [94, 117],
    [94, 51],
    [95, 15],
    [95, 37],
    [95, 112],
    [95, 52],
    [95, 59],
    [95, 65],
    [95, 27],
    [95, 66],
    [95, 29],
    [95, 108],
    [95, 23],
    [96, 50],
    [96, 99],
    [96, 63],
    [96, 61],
    [96, 49],
    [96, 93],
    [96, 107],
    [96, 4],
    [96, 62],
    [96, 78],
    [97, 19],
    [97, 102],
    [97, 117],
    [97, 23],
    [97, 35],
    [97, 44],
    [97, 43],
    [97, 12],
    [97, 111],
    [97, 72],
    [97, 108],
    [98, 52],
    [98, 71],
    [98, 36],
    [98, 111],
    [98, 53],
    [98, 104],
    [98, 100],
    [98, 86],
    [98, 91],
    [98, 8],
    [98, 39],
    [98, 18],
    [99, 101],
    [99, 96],
    [99, 85],
    [99, 78],
    [99, 107],
    [99, 4],
    [99, 50],
    [99, 49],
    [99, 63],
    [99, 61],
    [100, 3],
    [100, 71],
    [100, 45],
    [100, 86],
    [100, 53],
    [100, 18],
    [100, 104],
    [100, 98],
    [100, 52],
    [100, 73],
    [100, 112],
    [100, 88],
    [100, 8],
    [101, 99],
    [101, 116],
    [101, 115],
    [101, 85],
    [101, 69],
    [101, 17],
    [101, 32],
    [101, 68],
    [101, 9],
    [101, 110],
    [101, 58],
    [102, 23],
    [102, 97],
    [102, 35],
    [102, 12],
    [102, 117],
    [102, 43],
    [102, 19],
    [102, 104],
    [102, 114],
    [102, 46],
    [103, 90],
    [103, 42],
    [103, 91],
    [103, 3],
    [103, 67],
    [103, 105],
    [103, 44],
    [103, 22],
    [103, 62],
    [103, 17],
    [103, 63],
    [104, 73],
    [104, 86],
    [104, 71],
    [104, 100],
    [104, 98],
    [104, 53],
    [104, 8],
    [104, 102],
    [104, 67],
    [104, 37],
    [104, 82],
    [104, 46],
    [105, 3],
    [105, 44],
    [105, 67],
    [105, 22],
    [105, 90],
    [105, 103],
    [105, 91],
    [105, 42],
    [105, 43],
    [105, 117],
    [105, 112],
    [106, 38],
    [106, 63],
    [106, 93],
    [106, 51],
    [106, 33],
    [106, 110],
    [106, 116],
    [106, 34],
    [106, 58],
    [106, 31],
    [106, 42],
    [107, 57],
    [107, 78],
    [107, 50],
    [107, 63],
    [107, 99],
    [107, 61],
    [107, 110],
    [107, 96],
    [107, 49],
    [107, 4],
    [107, 40],
    [108, 65],
    [108, 59],
    [108, 52],
    [108, 29],
    [108, 15],
    [108, 73],
    [108, 37],
    [108, 112],
    [108, 113],
    [108, 95],
    [108, 97],
    [109, 78],
    [109, 34],
    [109, 26],
    [109, 76],
    [109, 56],
    [109, 28],
    [109, 85],
    [109, 72],
    [109, 68],
    [109, 49],
    [109, 120],
    [110, 61],
    [110, 116],
    [110, 70],
    [110, 51],
    [110, 106],
    [110, 33],
    [110, 107],
    [110, 32],
    [110, 58],
    [110, 101],
    [110, 31],
    [111, 98],
    [111, 46],
    [111, 115],
    [111, 36],
    [111, 68],
    [111, 69],
    [111, 97],
    [111, 91],
    [111, 43],
    [112, 59],
    [112, 39],
    [112, 95],
    [112, 37],
    [112, 29],
    [112, 65],
    [112, 108],
    [112, 15],
    [112, 100],
    [112, 53],
    [112, 105],
    [113, 33],
    [113, 20],
    [113, 80],
    [113, 57],
    [113, 47],
    [113, 94],
    [113, 89],
    [113, 16],
    [113, 1],
    [113, 49],
    [113, 108],
    [113, 27],
    [114, 115],
    [114, 32],
    [114, 64],
    [114, 82],
    [114, 62],
    [114, 102],
    [114, 48],
    [114, 19],
    [115, 114],
    [115, 101],
    [115, 69],
    [115, 111],
    [115, 58],
    [115, 36],
    [115, 32],
    [115, 3],
    [115, 17],
    [116, 94],
    [116, 58],
    [116, 110],
    [116, 101],
    [116, 70],
    [116, 9],
    [116, 79],
    [116, 106],
    [116, 36],
    [116, 38],
    [116, 33],
    [116, 119],
    [117, 12],
    [117, 35],
    [117, 97],
    [117, 43],
    [117, 102],
    [117, 19],
    [117, 23],
    [117, 39],
    [117, 94],
    [117, 45],
    [117, 105],
    [118, 120],
    [118, 21],
    [118, 25],
    [118, 7],
    [118, 75],
    [118, 48],
    [118, 94],
    [118, 83],
    [118, 10],
    [118, 82],
    [119, 46],
    [119, 45],
    [119, 66],
    [119, 40],
    [119, 71],
    [119, 81],
    [119, 74],
    [119, 82],
    [119, 64],
    [119, 9],
    [119, 116],
    [120, 118],
    [120, 25],
    [120, 75],
    [120, 48],
    [120, 83],
    [120, 21],
    [120, 7],
    [120, 28],
    [120, 10],
    [120, 64],
    [120, 109],
]

N = 47
# X(G) = 6
COLORS = 5
# M = 236
EDGES = [
    [1, 2],
    [1, 4],
    [1, 7],
    [1, 9],
    [1, 13],
    [1, 15],
    [1, 18],
    [1, 20],
    [1, 25],
    [1, 27],
    [1, 30],
    [1, 32],
    [1, 36],
    [1, 38],
    [1, 41],
    [1, 43],
    [2, 3],
    [2, 6],
    [2, 8],
    [2, 12],
    [2, 14],
    [2, 17],
    [2, 19],
    [2, 24],
    [2, 26],
    [2, 29],
    [2, 31],
    [2, 35],
    [2, 37],
    [2, 40],
    [2, 42],
    [3, 5],
    [3, 7],
    [3, 10],
    [3, 13],
    [3, 16],
    [3, 18],
    [3, 21],
    [3, 25],
    [3, 28],
    [3, 30],
    [3, 33],
    [3, 36],
    [3, 39],
    [3, 41],
    [3, 44],
    [4, 5],
    [4, 6],
    [4, 10],
    [4, 12],
    [4, 16],
    [4, 17],
    [4, 21],
    [4, 24],
    [4, 28],
    [4, 29],
    [4, 33],
    [4, 35],
    [4, 39],
    [4, 40],
    [4, 44],
    [5, 8],
    [5, 9],
    [5, 14],
    [5, 15],
    [5, 19],
    [5, 20],
    [5, 26],
    [5, 27],
    [5, 31],
    [5, 32],
    [5, 37],
    [5, 38],
    [5, 42],
    [5, 43],
    [6, 11],
    [6, 13],
    [6, 15],
    [6, 22],
    [6, 25],
    [6, 27],
    [6, 34],
    [6, 36],
    [6, 38],
    [6, 45],
    [7, 11],
    [7, 12],
    [7, 14],
    [7, 22],
    [7, 24],
    [7, 26],
    [7, 34],
    [7, 35],
    [7, 37],
    [7, 45],
    [8, 11],
    [8, 13],
    [8, 16],
    [8, 22],
    [8, 25],
    [8, 28],
    [8, 34],
    [8, 36],
    [8, 39],
    [8, 45],
    [9, 11],
    [9, 12],
    [9, 16],
    [9, 22],
    [9, 24],
    [9, 28],
    [9, 34],
    [9, 35],
    [9, 39],
    [9, 45],
    [10, 11],
    [10, 14],
    [10, 15],
    [10, 22],
    [10, 26],
    [10, 27],
    [10, 34],
    [10, 37],
    [10, 38],
    [10, 45],
    [11, 17],
    [11, 18],
    [11, 19],
    [11, 20],
    [11, 21],
    [11, 29],
    [11, 30],
    [11, 31],
    [11, 32],
    [11, 33],
    [11, 40],
    [11, 41],
    [11, 42],
    [11, 43],
    [11, 44],
    [12, 23],
    [12, 25],
    [12, 27],
    [12, 30],
    [12, 32],
    [12, 46],
    [13, 23],
    [13, 24],
    [13, 26],
    [13, 29],
    [13, 31],
    [13, 46],
    [14, 23],
    [14, 25],
    [14, 28],
    [14, 30],
    [14, 33],
    [14, 46],
    [15, 23],
    [15, 24],
    [15, 28],
    [15, 29],
    [15, 33],
    [15, 46],
    [16, 23],
    [16, 26],
    [16, 27],
    [16, 31],
    [16, 32],
    [16, 46],
    [17, 23],
    [17, 25],
    [17, 27],
    [17, 34],
    [17, 46],
    [18, 23],
    [18, 24],
    [18, 26],
    [18, 34],
    [18, 46],
    [19, 23],
    [19, 25],
    [19, 28],
    [19, 34],
    [19, 46],
    [20, 23],
    [20, 24],
    [20, 28],
    [20, 34],
    [20, 46],
    [21, 23],
    [21, 26],
    [21, 27],
    [21, 34],
    [21, 46],
    [22, 23],
    [22, 29],
    [22, 30],
    [22, 31],
    [22, 32],
    [22, 33],
    [22, 46],
    [23, 35],
    [23, 36],
    [23, 37],
    [23, 38],
    [23, 39],
    [23, 40],
    [23, 41],
    [23, 42],
    [23, 43],
    [23, 44],
    [23, 45],
    [24, 47],
    [25, 47],
    [26, 47],
    [27, 47],
    [28, 47],
    [29, 47],
    [30, 47],
    [31, 47],
    [32, 47],
    [33, 47],
    [34, 47],
    [35, 47],
    [36, 47],
    [37, 47],
    [38, 47],
    [39, 47],
    [40, 47],
    [41, 47],
    [42, 47],
    [43, 47],
    [44, 47],
    [45, 47],
    [46, 47],
]

import pycosat
from timeit import default_timer as timer

# x(v, c) <--> vertex v is set to color c
def x(v, c):
    return c * N + v


# x(1,0) = 1, x(2,0) = 2, ..., x(n-1, 0) = n-1, x(1,1) = n, ...

cnf = []

# Constraint 1: every vertex gets a color
for v in range(1, N + 1):
    cnf.append([x(v, c) for c in range(COLORS)])

# Constraint 2: if (u, v) is an edge, then u and v have different colors
for u, v in EDGES:
    for c in range(COLORS):
        cnf.append([-x(u, c), -x(v, c)])

# Constraint 3: every vertex has at most one color
for v in range(1, N + 1):
    for c1 in range(COLORS):
        for c2 in range(c1 + 1, COLORS):
            cnf.append([-x(v, c1), -x(v, c2)])

# Symmetry breaking -- try solving the second graph for K=5 with and without these constraints!
cnf.append([x(1, 0)])
cnf.append([x(2, 1)])

t = timer()
soln = pycosat.solve(cnf)
time = timer() - t
print(soln)
print(f"{COLORS} colors took {time} sec")
