diff --git a/DynamicProgramming/DynamicProgramming.py b/DynamicProgramming/DynamicProgramming.py new file mode 100644 index 0000000..eba91c9 --- /dev/null +++ b/DynamicProgramming/DynamicProgramming.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +# coding: utf-8 + + +import numpy as np +import time +#Lire une instance du graph a partir d'un fichier +def from_file(file_path): + with open(file_path) as f: + line = f.readline() + while line[0] != "p": + line = f.readline() + n = int(line.split()[2]) + adj_mat = [] + for i in range(0,n): + adj_mat.append([False]*n) + for line in f: + if line[0] == "e": + w, v = map(int, line.split()[1:]) + adj_mat[w-1][v-1] = adj_mat[v-1][w-1] = True + return np.array(adj_mat) + +#Ecrire la solution dans un fichier +def to_file(file_path , Graph): + Temps,Soluce = DynamicProgramming(Graph) + with open(file_path,"w") as f: + f.write( "# Solution pour le Graph du fichier "+file_path+"\n" ) + f.write( "Minimum number of colors used : " + str(Soluce[1]) + "\n" ) + f.write( "Temps execution :: "+str(Temps) + "\n" ) + f.write( "Color Affectation to the nodes : \n") + [f.write( "Node "+ str(i)+ " :: "+str(Soluce[0][i]) +"\n") for i in range(0,len(Soluce[0]))] + return + +#Fonction de Transition d'un etat a un autre +#Colorer le noeud node avec toutes les couleurs possibles +#Si aucune couleur possible, ajouter une nouvelle couleur + +def ColorerVoisin(Graph, state, node): + #Le premier noeud, on lui affectte la couleur 0 + if node == 0: + NewStates = [ ([0] , 1) ] + else : + #Recuperer la colorisation sous-optimale + Soluce = state[0] + #Le nombre de couleur sous-optimal + XG = state[1] + #Initialisation de la liste des sous-solutions optimales + NewStates = [] + #Recuperer la liste des adjacents du noeud + Adjacents = np.where(Graph[node][:node] == True)[0] + #Recuperer la liste des couleurs deja utiliser par les adjacents du noeud + AdjColor = np.unique( np.array( [Soluce[V] for V in Adjacents] ) ) + #Affecter Toutes les couleurs possibles au noeud + for color in range(0,XG): + if color not in AdjColor: + NewSoluce = Soluce.copy() + NewSoluce.append(color) + NewState = (NewSoluce , XG) + NewStates.append(NewState) + #Si pas de couleurs possibles alors ajouter une nouvelle couleur + if len(NewStates) == 0: + NewSoluce = Soluce.copy() + NewSoluce.append(XG) + NewState = (NewSoluce , XG + 1) + NewStates.append(NewState) + return np.array(NewStates,dtype=object) + +#Programmation dynamique +#Input : Un graph a N noeuds +# Supposons qu'on a une solution optimale pour le Graph a (N - 1) Noeuds : X( G (N-1) ) +# Quel est la solution optimale pour un graph a (N) Noeuds, X( G(N) ) = ? +# Ensemble des decisitons possible : +# Soit on peut affecter une couleur au noeud N, sans enfreindre les regles de colorisation ==> X( G(N) ) = X( G(N-1) ) +# Si aucune couleur possible au noeud N, Ajouter une nouvelle couleur ==> X( G(N) ) = X( G(N-1) ) + 1 + +def DynamicProgramming(Graph): + #Temps initial + ts = time.time() + #Nombre de Noeuds + V = len(Graph) + #Etat initiale : Aucun noeud , 0 couleur + state = ([],0) + #Ensembles des etats Ek : Ensemble des colorisations possibles optimales du sous-graph a k noeuds + Level = [np.array( [ ( [] , 0) ], dtype=object)] + #Pour chaque Noeud : + for node in range(0,V): + #Obtenir l'ensembles des etats precedent :E(k-1) + States = Level.pop() + #Recuperer le cout de chaque solution (nombre de couleurs) + XG_list = States[:,1] + #Recupere les solutions avec le moindres couts(nombre de couleur) + indStates = np.where(XG_list== XG_list.min())[0] + #Initialiser l'ensemble E(k) + Solutions = [] + #Pour chaque Solutions optimales a k-1 + for i in indStates : + #Obtenir les nouvelles solutions optimales a l'ordre k + Solutions.extend(ColorerVoisin(Graph,States[i],node) ) + #Ajouter les Ek + Level.append(np.array(Solutions)) + #Recupere les solutions optimales des derniers etats E(n) + States = Level.pop() + XG_list = States[:,1] + tf = time.time() + return tf-ts,States[np.argmin(XG_list)] + +def coloring_graph(fromFile , toFilePath): + Graph = from_file(fromFile) + to_file(toFilePath+ fromFile+".Soluce.txt",Graph) + +coloring_graph("myciel4.col","DynamicSoluce/") + + + + + + diff --git a/DynamicProgramming/DynamicSoluce/myciel3.col.Soluce.txt b/DynamicProgramming/DynamicSoluce/myciel3.col.Soluce.txt new file mode 100644 index 0000000..f4edefa --- /dev/null +++ b/DynamicProgramming/DynamicSoluce/myciel3.col.Soluce.txt @@ -0,0 +1,15 @@ +# Solution pour le Graph du fichier DynamicSoluce/myciel3.col.Soluce.txt +Minimum number of colors used : 4 +Temps execution :: 0.002442598342895508 +Color Affectation to the nodes : +Node 0 :: 0 +Node 1 :: 1 +Node 2 :: 0 +Node 3 :: 1 +Node 4 :: 2 +Node 5 :: 0 +Node 6 :: 1 +Node 7 :: 0 +Node 8 :: 1 +Node 9 :: 2 +Node 10 :: 3 diff --git a/DynamicProgramming/DynamicSoluce/myciel4.col.Soluce.txt b/DynamicProgramming/DynamicSoluce/myciel4.col.Soluce.txt new file mode 100644 index 0000000..1c9435d --- /dev/null +++ b/DynamicProgramming/DynamicSoluce/myciel4.col.Soluce.txt @@ -0,0 +1,27 @@ +# Solution pour le Graph du fichier DynamicSoluce/myciel4.col.Soluce.txt +Minimum number of colors used : 5 +Temps execution :: 0.29488134384155273 +Color Affectation to the nodes : +Node 0 :: 0 +Node 1 :: 1 +Node 2 :: 0 +Node 3 :: 1 +Node 4 :: 2 +Node 5 :: 0 +Node 6 :: 1 +Node 7 :: 0 +Node 8 :: 1 +Node 9 :: 2 +Node 10 :: 3 +Node 11 :: 0 +Node 12 :: 1 +Node 13 :: 0 +Node 14 :: 1 +Node 15 :: 2 +Node 16 :: 0 +Node 17 :: 1 +Node 18 :: 0 +Node 19 :: 1 +Node 20 :: 2 +Node 21 :: 3 +Node 22 :: 4 diff --git a/DynamicProgramming/DynamicSoluce/queen5_5.col.Soluce.txt b/DynamicProgramming/DynamicSoluce/queen5_5.col.Soluce.txt new file mode 100644 index 0000000..3dae47f --- /dev/null +++ b/DynamicProgramming/DynamicSoluce/queen5_5.col.Soluce.txt @@ -0,0 +1,29 @@ +# Solution pour le Graph du fichier DynamicSoluce/queen5_5.col.Soluce.txt +Minimum number of colors used : 5 +Temps execution :: 0.0049898624420166016 +Color Affectation to the nodes : +Node 0 :: 0 +Node 1 :: 1 +Node 2 :: 2 +Node 3 :: 3 +Node 4 :: 4 +Node 5 :: 2 +Node 6 :: 3 +Node 7 :: 4 +Node 8 :: 0 +Node 9 :: 1 +Node 10 :: 4 +Node 11 :: 0 +Node 12 :: 1 +Node 13 :: 2 +Node 14 :: 3 +Node 15 :: 1 +Node 16 :: 2 +Node 17 :: 3 +Node 18 :: 4 +Node 19 :: 0 +Node 20 :: 3 +Node 21 :: 4 +Node 22 :: 0 +Node 23 :: 1 +Node 24 :: 2 diff --git a/DynamicProgramming/DynamicSoluce/queen7_7.col.Soluce.txt b/DynamicProgramming/DynamicSoluce/queen7_7.col.Soluce.txt new file mode 100644 index 0000000..a2abb8a --- /dev/null +++ b/DynamicProgramming/DynamicSoluce/queen7_7.col.Soluce.txt @@ -0,0 +1,53 @@ +# Solution pour le Graph du fichier DynamicSoluce/queen7_7.col.Soluce.txt +Minimum number of colors used : 7 +Temps execution :: 4.870969772338867 +Color Affectation to the nodes : +Node 0 :: 0 +Node 1 :: 1 +Node 2 :: 2 +Node 3 :: 3 +Node 4 :: 4 +Node 5 :: 5 +Node 6 :: 6 +Node 7 :: 2 +Node 8 :: 3 +Node 9 :: 4 +Node 10 :: 5 +Node 11 :: 6 +Node 12 :: 0 +Node 13 :: 1 +Node 14 :: 4 +Node 15 :: 5 +Node 16 :: 6 +Node 17 :: 0 +Node 18 :: 1 +Node 19 :: 2 +Node 20 :: 3 +Node 21 :: 6 +Node 22 :: 0 +Node 23 :: 1 +Node 24 :: 2 +Node 25 :: 3 +Node 26 :: 4 +Node 27 :: 5 +Node 28 :: 1 +Node 29 :: 2 +Node 30 :: 3 +Node 31 :: 4 +Node 32 :: 5 +Node 33 :: 6 +Node 34 :: 0 +Node 35 :: 3 +Node 36 :: 4 +Node 37 :: 5 +Node 38 :: 6 +Node 39 :: 0 +Node 40 :: 1 +Node 41 :: 2 +Node 42 :: 5 +Node 43 :: 6 +Node 44 :: 0 +Node 45 :: 1 +Node 46 :: 2 +Node 47 :: 3 +Node 48 :: 4 diff --git a/DynamicProgramming/myciel3.col b/DynamicProgramming/myciel3.col new file mode 100644 index 0000000..8b806da --- /dev/null +++ b/DynamicProgramming/myciel3.col @@ -0,0 +1,26 @@ +c FILE: myciel3.col +c SOURCE: Michael Trick (trick@cmu.edu) +c DESCRIPTION: Graph based on Mycielski transformation. +c Triangle free (clique number 2) but increasing +c coloring number +p edge 11 20 +e 1 2 +e 1 4 +e 1 7 +e 1 9 +e 2 3 +e 2 6 +e 2 8 +e 3 5 +e 3 7 +e 3 10 +e 4 5 +e 4 6 +e 4 10 +e 5 8 +e 5 9 +e 6 11 +e 7 11 +e 8 11 +e 9 11 +e 10 11 diff --git a/DynamicProgramming/myciel4.col b/DynamicProgramming/myciel4.col new file mode 100644 index 0000000..fd387de --- /dev/null +++ b/DynamicProgramming/myciel4.col @@ -0,0 +1,77 @@ +c FILE: myciel4.col +c SOURCE: Michael Trick (trick@cmu.edu) +c DESCRIPTION: Graph based on Mycielski transformation. +c Triangle free (clique number 2) but increasing +c coloring number +p edge 23 71 +e 1 2 +e 1 4 +e 1 7 +e 1 9 +e 1 13 +e 1 15 +e 1 18 +e 1 20 +e 2 3 +e 2 6 +e 2 8 +e 2 12 +e 2 14 +e 2 17 +e 2 19 +e 3 5 +e 3 7 +e 3 10 +e 3 13 +e 3 16 +e 3 18 +e 3 21 +e 4 5 +e 4 6 +e 4 10 +e 4 12 +e 4 16 +e 4 17 +e 4 21 +e 5 8 +e 5 9 +e 5 14 +e 5 15 +e 5 19 +e 5 20 +e 6 11 +e 6 13 +e 6 15 +e 6 22 +e 7 11 +e 7 12 +e 7 14 +e 7 22 +e 8 11 +e 8 13 +e 8 16 +e 8 22 +e 9 11 +e 9 12 +e 9 16 +e 9 22 +e 10 11 +e 10 14 +e 10 15 +e 10 22 +e 11 17 +e 11 18 +e 11 19 +e 11 20 +e 11 21 +e 12 23 +e 13 23 +e 14 23 +e 15 23 +e 16 23 +e 17 23 +e 18 23 +e 19 23 +e 20 23 +e 21 23 +e 22 23 diff --git a/DynamicProgramming/myciel5.col b/DynamicProgramming/myciel5.col new file mode 100644 index 0000000..fbfa049 --- /dev/null +++ b/DynamicProgramming/myciel5.col @@ -0,0 +1,242 @@ +c FILE: myciel5.col +c SOURCE: Michael Trick (trick@cmu.edu) +c DESCRIPTION: Graph based on Mycielski transformation. +c Triangle free (clique number 2) but increasing +c coloring number +p edge 47 236 +e 1 2 +e 1 4 +e 1 7 +e 1 9 +e 1 13 +e 1 15 +e 1 18 +e 1 20 +e 1 25 +e 1 27 +e 1 30 +e 1 32 +e 1 36 +e 1 38 +e 1 41 +e 1 43 +e 2 3 +e 2 6 +e 2 8 +e 2 12 +e 2 14 +e 2 17 +e 2 19 +e 2 24 +e 2 26 +e 2 29 +e 2 31 +e 2 35 +e 2 37 +e 2 40 +e 2 42 +e 3 5 +e 3 7 +e 3 10 +e 3 13 +e 3 16 +e 3 18 +e 3 21 +e 3 25 +e 3 28 +e 3 30 +e 3 33 +e 3 36 +e 3 39 +e 3 41 +e 3 44 +e 4 5 +e 4 6 +e 4 10 +e 4 12 +e 4 16 +e 4 17 +e 4 21 +e 4 24 +e 4 28 +e 4 29 +e 4 33 +e 4 35 +e 4 39 +e 4 40 +e 4 44 +e 5 8 +e 5 9 +e 5 14 +e 5 15 +e 5 19 +e 5 20 +e 5 26 +e 5 27 +e 5 31 +e 5 32 +e 5 37 +e 5 38 +e 5 42 +e 5 43 +e 6 11 +e 6 13 +e 6 15 +e 6 22 +e 6 25 +e 6 27 +e 6 34 +e 6 36 +e 6 38 +e 6 45 +e 7 11 +e 7 12 +e 7 14 +e 7 22 +e 7 24 +e 7 26 +e 7 34 +e 7 35 +e 7 37 +e 7 45 +e 8 11 +e 8 13 +e 8 16 +e 8 22 +e 8 25 +e 8 28 +e 8 34 +e 8 36 +e 8 39 +e 8 45 +e 9 11 +e 9 12 +e 9 16 +e 9 22 +e 9 24 +e 9 28 +e 9 34 +e 9 35 +e 9 39 +e 9 45 +e 10 11 +e 10 14 +e 10 15 +e 10 22 +e 10 26 +e 10 27 +e 10 34 +e 10 37 +e 10 38 +e 10 45 +e 11 17 +e 11 18 +e 11 19 +e 11 20 +e 11 21 +e 11 29 +e 11 30 +e 11 31 +e 11 32 +e 11 33 +e 11 40 +e 11 41 +e 11 42 +e 11 43 +e 11 44 +e 12 23 +e 12 25 +e 12 27 +e 12 30 +e 12 32 +e 12 46 +e 13 23 +e 13 24 +e 13 26 +e 13 29 +e 13 31 +e 13 46 +e 14 23 +e 14 25 +e 14 28 +e 14 30 +e 14 33 +e 14 46 +e 15 23 +e 15 24 +e 15 28 +e 15 29 +e 15 33 +e 15 46 +e 16 23 +e 16 26 +e 16 27 +e 16 31 +e 16 32 +e 16 46 +e 17 23 +e 17 25 +e 17 27 +e 17 34 +e 17 46 +e 18 23 +e 18 24 +e 18 26 +e 18 34 +e 18 46 +e 19 23 +e 19 25 +e 19 28 +e 19 34 +e 19 46 +e 20 23 +e 20 24 +e 20 28 +e 20 34 +e 20 46 +e 21 23 +e 21 26 +e 21 27 +e 21 34 +e 21 46 +e 22 23 +e 22 29 +e 22 30 +e 22 31 +e 22 32 +e 22 33 +e 22 46 +e 23 35 +e 23 36 +e 23 37 +e 23 38 +e 23 39 +e 23 40 +e 23 41 +e 23 42 +e 23 43 +e 23 44 +e 23 45 +e 24 47 +e 25 47 +e 26 47 +e 27 47 +e 28 47 +e 29 47 +e 30 47 +e 31 47 +e 32 47 +e 33 47 +e 34 47 +e 35 47 +e 36 47 +e 37 47 +e 38 47 +e 39 47 +e 40 47 +e 41 47 +e 42 47 +e 43 47 +e 44 47 +e 45 47 +e 46 47 diff --git a/DynamicProgramming/queen5_5.col b/DynamicProgramming/queen5_5.col new file mode 100644 index 0000000..542715c --- /dev/null +++ b/DynamicProgramming/queen5_5.col @@ -0,0 +1,324 @@ +c FILE: queen5_5.col +c Translated from Stanford GraphBase File: queen5_5.sgb +c Stanford GraphBase ID: gunion(board(5,5,0,0,-1,0,0),board(5,5,0,0,-2,0,0),0,0) +p edge 25 320 +e 1 7 +e 1 13 +e 1 19 +e 1 25 +e 1 2 +e 1 3 +e 1 4 +e 1 5 +e 1 6 +e 1 11 +e 1 16 +e 1 21 +e 2 8 +e 2 14 +e 2 20 +e 2 6 +e 2 3 +e 2 4 +e 2 5 +e 2 7 +e 2 12 +e 2 17 +e 2 22 +e 2 1 +e 3 9 +e 3 15 +e 3 7 +e 3 11 +e 3 4 +e 3 5 +e 3 8 +e 3 13 +e 3 18 +e 3 23 +e 3 2 +e 3 1 +e 4 10 +e 4 8 +e 4 12 +e 4 16 +e 4 5 +e 4 9 +e 4 14 +e 4 19 +e 4 24 +e 4 3 +e 4 2 +e 4 1 +e 5 9 +e 5 13 +e 5 17 +e 5 21 +e 5 10 +e 5 15 +e 5 20 +e 5 25 +e 5 4 +e 5 3 +e 5 2 +e 5 1 +e 6 12 +e 6 18 +e 6 24 +e 6 7 +e 6 8 +e 6 9 +e 6 10 +e 6 11 +e 6 16 +e 6 21 +e 6 2 +e 6 1 +e 7 13 +e 7 19 +e 7 25 +e 7 11 +e 7 8 +e 7 9 +e 7 10 +e 7 12 +e 7 17 +e 7 22 +e 7 6 +e 7 3 +e 7 2 +e 7 1 +e 8 14 +e 8 20 +e 8 12 +e 8 16 +e 8 9 +e 8 10 +e 8 13 +e 8 18 +e 8 23 +e 8 7 +e 8 6 +e 8 4 +e 8 3 +e 8 2 +e 9 15 +e 9 13 +e 9 17 +e 9 21 +e 9 10 +e 9 14 +e 9 19 +e 9 24 +e 9 8 +e 9 7 +e 9 6 +e 9 5 +e 9 4 +e 9 3 +e 10 14 +e 10 18 +e 10 22 +e 10 15 +e 10 20 +e 10 25 +e 10 9 +e 10 8 +e 10 7 +e 10 6 +e 10 5 +e 10 4 +e 11 17 +e 11 23 +e 11 12 +e 11 13 +e 11 14 +e 11 15 +e 11 16 +e 11 21 +e 11 7 +e 11 6 +e 11 3 +e 11 1 +e 12 18 +e 12 24 +e 12 16 +e 12 13 +e 12 14 +e 12 15 +e 12 17 +e 12 22 +e 12 11 +e 12 8 +e 12 7 +e 12 6 +e 12 4 +e 12 2 +e 13 19 +e 13 25 +e 13 17 +e 13 21 +e 13 14 +e 13 15 +e 13 18 +e 13 23 +e 13 12 +e 13 11 +e 13 9 +e 13 8 +e 13 7 +e 13 5 +e 13 3 +e 13 1 +e 14 20 +e 14 18 +e 14 22 +e 14 15 +e 14 19 +e 14 24 +e 14 13 +e 14 12 +e 14 11 +e 14 10 +e 14 9 +e 14 8 +e 14 4 +e 14 2 +e 15 19 +e 15 23 +e 15 20 +e 15 25 +e 15 14 +e 15 13 +e 15 12 +e 15 11 +e 15 10 +e 15 9 +e 15 5 +e 15 3 +e 16 22 +e 16 17 +e 16 18 +e 16 19 +e 16 20 +e 16 21 +e 16 12 +e 16 11 +e 16 8 +e 16 6 +e 16 4 +e 16 1 +e 17 23 +e 17 21 +e 17 18 +e 17 19 +e 17 20 +e 17 22 +e 17 16 +e 17 13 +e 17 12 +e 17 11 +e 17 9 +e 17 7 +e 17 5 +e 17 2 +e 18 24 +e 18 22 +e 18 19 +e 18 20 +e 18 23 +e 18 17 +e 18 16 +e 18 14 +e 18 13 +e 18 12 +e 18 10 +e 18 8 +e 18 6 +e 18 3 +e 19 25 +e 19 23 +e 19 20 +e 19 24 +e 19 18 +e 19 17 +e 19 16 +e 19 15 +e 19 14 +e 19 13 +e 19 9 +e 19 7 +e 19 4 +e 19 1 +e 20 24 +e 20 25 +e 20 19 +e 20 18 +e 20 17 +e 20 16 +e 20 15 +e 20 14 +e 20 10 +e 20 8 +e 20 5 +e 20 2 +e 21 22 +e 21 23 +e 21 24 +e 21 25 +e 21 17 +e 21 16 +e 21 13 +e 21 11 +e 21 9 +e 21 6 +e 21 5 +e 21 1 +e 22 23 +e 22 24 +e 22 25 +e 22 21 +e 22 18 +e 22 17 +e 22 16 +e 22 14 +e 22 12 +e 22 10 +e 22 7 +e 22 2 +e 23 24 +e 23 25 +e 23 22 +e 23 21 +e 23 19 +e 23 18 +e 23 17 +e 23 15 +e 23 13 +e 23 11 +e 23 8 +e 23 3 +e 24 25 +e 24 23 +e 24 22 +e 24 21 +e 24 20 +e 24 19 +e 24 18 +e 24 14 +e 24 12 +e 24 9 +e 24 6 +e 24 4 +e 25 24 +e 25 23 +e 25 22 +e 25 21 +e 25 20 +e 25 19 +e 25 15 +e 25 13 +e 25 10 +e 25 7 +e 25 5 +e 25 1 diff --git a/DynamicProgramming/queen7_7.col b/DynamicProgramming/queen7_7.col new file mode 100644 index 0000000..075e319 --- /dev/null +++ b/DynamicProgramming/queen7_7.col @@ -0,0 +1,956 @@ +c FILE: queen7_7.col +c Translated from Stanford GraphBase File: queen7_7.sgb +c Stanford GraphBase ID: gunion(board(7,7,0,0,-1,0,0),board(7,7,0,0,-2,0,0),0,0) +p edge 49 952 +e 1 9 +e 1 17 +e 1 25 +e 1 33 +e 1 41 +e 1 49 +e 1 2 +e 1 3 +e 1 4 +e 1 5 +e 1 6 +e 1 7 +e 1 8 +e 1 15 +e 1 22 +e 1 29 +e 1 36 +e 1 43 +e 2 10 +e 2 18 +e 2 26 +e 2 34 +e 2 42 +e 2 8 +e 2 3 +e 2 4 +e 2 5 +e 2 6 +e 2 7 +e 2 9 +e 2 16 +e 2 23 +e 2 30 +e 2 37 +e 2 44 +e 2 1 +e 3 11 +e 3 19 +e 3 27 +e 3 35 +e 3 9 +e 3 15 +e 3 4 +e 3 5 +e 3 6 +e 3 7 +e 3 10 +e 3 17 +e 3 24 +e 3 31 +e 3 38 +e 3 45 +e 3 2 +e 3 1 +e 4 12 +e 4 20 +e 4 28 +e 4 10 +e 4 16 +e 4 22 +e 4 5 +e 4 6 +e 4 7 +e 4 11 +e 4 18 +e 4 25 +e 4 32 +e 4 39 +e 4 46 +e 4 3 +e 4 2 +e 4 1 +e 5 13 +e 5 21 +e 5 11 +e 5 17 +e 5 23 +e 5 29 +e 5 6 +e 5 7 +e 5 12 +e 5 19 +e 5 26 +e 5 33 +e 5 40 +e 5 47 +e 5 4 +e 5 3 +e 5 2 +e 5 1 +e 6 14 +e 6 12 +e 6 18 +e 6 24 +e 6 30 +e 6 36 +e 6 7 +e 6 13 +e 6 20 +e 6 27 +e 6 34 +e 6 41 +e 6 48 +e 6 5 +e 6 4 +e 6 3 +e 6 2 +e 6 1 +e 7 13 +e 7 19 +e 7 25 +e 7 31 +e 7 37 +e 7 43 +e 7 14 +e 7 21 +e 7 28 +e 7 35 +e 7 42 +e 7 49 +e 7 6 +e 7 5 +e 7 4 +e 7 3 +e 7 2 +e 7 1 +e 8 16 +e 8 24 +e 8 32 +e 8 40 +e 8 48 +e 8 9 +e 8 10 +e 8 11 +e 8 12 +e 8 13 +e 8 14 +e 8 15 +e 8 22 +e 8 29 +e 8 36 +e 8 43 +e 8 2 +e 8 1 +e 9 17 +e 9 25 +e 9 33 +e 9 41 +e 9 49 +e 9 15 +e 9 10 +e 9 11 +e 9 12 +e 9 13 +e 9 14 +e 9 16 +e 9 23 +e 9 30 +e 9 37 +e 9 44 +e 9 8 +e 9 3 +e 9 2 +e 9 1 +e 10 18 +e 10 26 +e 10 34 +e 10 42 +e 10 16 +e 10 22 +e 10 11 +e 10 12 +e 10 13 +e 10 14 +e 10 17 +e 10 24 +e 10 31 +e 10 38 +e 10 45 +e 10 9 +e 10 8 +e 10 4 +e 10 3 +e 10 2 +e 11 19 +e 11 27 +e 11 35 +e 11 17 +e 11 23 +e 11 29 +e 11 12 +e 11 13 +e 11 14 +e 11 18 +e 11 25 +e 11 32 +e 11 39 +e 11 46 +e 11 10 +e 11 9 +e 11 8 +e 11 5 +e 11 4 +e 11 3 +e 12 20 +e 12 28 +e 12 18 +e 12 24 +e 12 30 +e 12 36 +e 12 13 +e 12 14 +e 12 19 +e 12 26 +e 12 33 +e 12 40 +e 12 47 +e 12 11 +e 12 10 +e 12 9 +e 12 8 +e 12 6 +e 12 5 +e 12 4 +e 13 21 +e 13 19 +e 13 25 +e 13 31 +e 13 37 +e 13 43 +e 13 14 +e 13 20 +e 13 27 +e 13 34 +e 13 41 +e 13 48 +e 13 12 +e 13 11 +e 13 10 +e 13 9 +e 13 8 +e 13 7 +e 13 6 +e 13 5 +e 14 20 +e 14 26 +e 14 32 +e 14 38 +e 14 44 +e 14 21 +e 14 28 +e 14 35 +e 14 42 +e 14 49 +e 14 13 +e 14 12 +e 14 11 +e 14 10 +e 14 9 +e 14 8 +e 14 7 +e 14 6 +e 15 23 +e 15 31 +e 15 39 +e 15 47 +e 15 16 +e 15 17 +e 15 18 +e 15 19 +e 15 20 +e 15 21 +e 15 22 +e 15 29 +e 15 36 +e 15 43 +e 15 9 +e 15 8 +e 15 3 +e 15 1 +e 16 24 +e 16 32 +e 16 40 +e 16 48 +e 16 22 +e 16 17 +e 16 18 +e 16 19 +e 16 20 +e 16 21 +e 16 23 +e 16 30 +e 16 37 +e 16 44 +e 16 15 +e 16 10 +e 16 9 +e 16 8 +e 16 4 +e 16 2 +e 17 25 +e 17 33 +e 17 41 +e 17 49 +e 17 23 +e 17 29 +e 17 18 +e 17 19 +e 17 20 +e 17 21 +e 17 24 +e 17 31 +e 17 38 +e 17 45 +e 17 16 +e 17 15 +e 17 11 +e 17 10 +e 17 9 +e 17 5 +e 17 3 +e 17 1 +e 18 26 +e 18 34 +e 18 42 +e 18 24 +e 18 30 +e 18 36 +e 18 19 +e 18 20 +e 18 21 +e 18 25 +e 18 32 +e 18 39 +e 18 46 +e 18 17 +e 18 16 +e 18 15 +e 18 12 +e 18 11 +e 18 10 +e 18 6 +e 18 4 +e 18 2 +e 19 27 +e 19 35 +e 19 25 +e 19 31 +e 19 37 +e 19 43 +e 19 20 +e 19 21 +e 19 26 +e 19 33 +e 19 40 +e 19 47 +e 19 18 +e 19 17 +e 19 16 +e 19 15 +e 19 13 +e 19 12 +e 19 11 +e 19 7 +e 19 5 +e 19 3 +e 20 28 +e 20 26 +e 20 32 +e 20 38 +e 20 44 +e 20 21 +e 20 27 +e 20 34 +e 20 41 +e 20 48 +e 20 19 +e 20 18 +e 20 17 +e 20 16 +e 20 15 +e 20 14 +e 20 13 +e 20 12 +e 20 6 +e 20 4 +e 21 27 +e 21 33 +e 21 39 +e 21 45 +e 21 28 +e 21 35 +e 21 42 +e 21 49 +e 21 20 +e 21 19 +e 21 18 +e 21 17 +e 21 16 +e 21 15 +e 21 14 +e 21 13 +e 21 7 +e 21 5 +e 22 30 +e 22 38 +e 22 46 +e 22 23 +e 22 24 +e 22 25 +e 22 26 +e 22 27 +e 22 28 +e 22 29 +e 22 36 +e 22 43 +e 22 16 +e 22 15 +e 22 10 +e 22 8 +e 22 4 +e 22 1 +e 23 31 +e 23 39 +e 23 47 +e 23 29 +e 23 24 +e 23 25 +e 23 26 +e 23 27 +e 23 28 +e 23 30 +e 23 37 +e 23 44 +e 23 22 +e 23 17 +e 23 16 +e 23 15 +e 23 11 +e 23 9 +e 23 5 +e 23 2 +e 24 32 +e 24 40 +e 24 48 +e 24 30 +e 24 36 +e 24 25 +e 24 26 +e 24 27 +e 24 28 +e 24 31 +e 24 38 +e 24 45 +e 24 23 +e 24 22 +e 24 18 +e 24 17 +e 24 16 +e 24 12 +e 24 10 +e 24 8 +e 24 6 +e 24 3 +e 25 33 +e 25 41 +e 25 49 +e 25 31 +e 25 37 +e 25 43 +e 25 26 +e 25 27 +e 25 28 +e 25 32 +e 25 39 +e 25 46 +e 25 24 +e 25 23 +e 25 22 +e 25 19 +e 25 18 +e 25 17 +e 25 13 +e 25 11 +e 25 9 +e 25 7 +e 25 4 +e 25 1 +e 26 34 +e 26 42 +e 26 32 +e 26 38 +e 26 44 +e 26 27 +e 26 28 +e 26 33 +e 26 40 +e 26 47 +e 26 25 +e 26 24 +e 26 23 +e 26 22 +e 26 20 +e 26 19 +e 26 18 +e 26 14 +e 26 12 +e 26 10 +e 26 5 +e 26 2 +e 27 35 +e 27 33 +e 27 39 +e 27 45 +e 27 28 +e 27 34 +e 27 41 +e 27 48 +e 27 26 +e 27 25 +e 27 24 +e 27 23 +e 27 22 +e 27 21 +e 27 20 +e 27 19 +e 27 13 +e 27 11 +e 27 6 +e 27 3 +e 28 34 +e 28 40 +e 28 46 +e 28 35 +e 28 42 +e 28 49 +e 28 27 +e 28 26 +e 28 25 +e 28 24 +e 28 23 +e 28 22 +e 28 21 +e 28 20 +e 28 14 +e 28 12 +e 28 7 +e 28 4 +e 29 37 +e 29 45 +e 29 30 +e 29 31 +e 29 32 +e 29 33 +e 29 34 +e 29 35 +e 29 36 +e 29 43 +e 29 23 +e 29 22 +e 29 17 +e 29 15 +e 29 11 +e 29 8 +e 29 5 +e 29 1 +e 30 38 +e 30 46 +e 30 36 +e 30 31 +e 30 32 +e 30 33 +e 30 34 +e 30 35 +e 30 37 +e 30 44 +e 30 29 +e 30 24 +e 30 23 +e 30 22 +e 30 18 +e 30 16 +e 30 12 +e 30 9 +e 30 6 +e 30 2 +e 31 39 +e 31 47 +e 31 37 +e 31 43 +e 31 32 +e 31 33 +e 31 34 +e 31 35 +e 31 38 +e 31 45 +e 31 30 +e 31 29 +e 31 25 +e 31 24 +e 31 23 +e 31 19 +e 31 17 +e 31 15 +e 31 13 +e 31 10 +e 31 7 +e 31 3 +e 32 40 +e 32 48 +e 32 38 +e 32 44 +e 32 33 +e 32 34 +e 32 35 +e 32 39 +e 32 46 +e 32 31 +e 32 30 +e 32 29 +e 32 26 +e 32 25 +e 32 24 +e 32 20 +e 32 18 +e 32 16 +e 32 14 +e 32 11 +e 32 8 +e 32 4 +e 33 41 +e 33 49 +e 33 39 +e 33 45 +e 33 34 +e 33 35 +e 33 40 +e 33 47 +e 33 32 +e 33 31 +e 33 30 +e 33 29 +e 33 27 +e 33 26 +e 33 25 +e 33 21 +e 33 19 +e 33 17 +e 33 12 +e 33 9 +e 33 5 +e 33 1 +e 34 42 +e 34 40 +e 34 46 +e 34 35 +e 34 41 +e 34 48 +e 34 33 +e 34 32 +e 34 31 +e 34 30 +e 34 29 +e 34 28 +e 34 27 +e 34 26 +e 34 20 +e 34 18 +e 34 13 +e 34 10 +e 34 6 +e 34 2 +e 35 41 +e 35 47 +e 35 42 +e 35 49 +e 35 34 +e 35 33 +e 35 32 +e 35 31 +e 35 30 +e 35 29 +e 35 28 +e 35 27 +e 35 21 +e 35 19 +e 35 14 +e 35 11 +e 35 7 +e 35 3 +e 36 44 +e 36 37 +e 36 38 +e 36 39 +e 36 40 +e 36 41 +e 36 42 +e 36 43 +e 36 30 +e 36 29 +e 36 24 +e 36 22 +e 36 18 +e 36 15 +e 36 12 +e 36 8 +e 36 6 +e 36 1 +e 37 45 +e 37 43 +e 37 38 +e 37 39 +e 37 40 +e 37 41 +e 37 42 +e 37 44 +e 37 36 +e 37 31 +e 37 30 +e 37 29 +e 37 25 +e 37 23 +e 37 19 +e 37 16 +e 37 13 +e 37 9 +e 37 7 +e 37 2 +e 38 46 +e 38 44 +e 38 39 +e 38 40 +e 38 41 +e 38 42 +e 38 45 +e 38 37 +e 38 36 +e 38 32 +e 38 31 +e 38 30 +e 38 26 +e 38 24 +e 38 22 +e 38 20 +e 38 17 +e 38 14 +e 38 10 +e 38 3 +e 39 47 +e 39 45 +e 39 40 +e 39 41 +e 39 42 +e 39 46 +e 39 38 +e 39 37 +e 39 36 +e 39 33 +e 39 32 +e 39 31 +e 39 27 +e 39 25 +e 39 23 +e 39 21 +e 39 18 +e 39 15 +e 39 11 +e 39 4 +e 40 48 +e 40 46 +e 40 41 +e 40 42 +e 40 47 +e 40 39 +e 40 38 +e 40 37 +e 40 36 +e 40 34 +e 40 33 +e 40 32 +e 40 28 +e 40 26 +e 40 24 +e 40 19 +e 40 16 +e 40 12 +e 40 8 +e 40 5 +e 41 49 +e 41 47 +e 41 42 +e 41 48 +e 41 40 +e 41 39 +e 41 38 +e 41 37 +e 41 36 +e 41 35 +e 41 34 +e 41 33 +e 41 27 +e 41 25 +e 41 20 +e 41 17 +e 41 13 +e 41 9 +e 41 6 +e 41 1 +e 42 48 +e 42 49 +e 42 41 +e 42 40 +e 42 39 +e 42 38 +e 42 37 +e 42 36 +e 42 35 +e 42 34 +e 42 28 +e 42 26 +e 42 21 +e 42 18 +e 42 14 +e 42 10 +e 42 7 +e 42 2 +e 43 44 +e 43 45 +e 43 46 +e 43 47 +e 43 48 +e 43 49 +e 43 37 +e 43 36 +e 43 31 +e 43 29 +e 43 25 +e 43 22 +e 43 19 +e 43 15 +e 43 13 +e 43 8 +e 43 7 +e 43 1 +e 44 45 +e 44 46 +e 44 47 +e 44 48 +e 44 49 +e 44 43 +e 44 38 +e 44 37 +e 44 36 +e 44 32 +e 44 30 +e 44 26 +e 44 23 +e 44 20 +e 44 16 +e 44 14 +e 44 9 +e 44 2 +e 45 46 +e 45 47 +e 45 48 +e 45 49 +e 45 44 +e 45 43 +e 45 39 +e 45 38 +e 45 37 +e 45 33 +e 45 31 +e 45 29 +e 45 27 +e 45 24 +e 45 21 +e 45 17 +e 45 10 +e 45 3 +e 46 47 +e 46 48 +e 46 49 +e 46 45 +e 46 44 +e 46 43 +e 46 40 +e 46 39 +e 46 38 +e 46 34 +e 46 32 +e 46 30 +e 46 28 +e 46 25 +e 46 22 +e 46 18 +e 46 11 +e 46 4 +e 47 48 +e 47 49 +e 47 46 +e 47 45 +e 47 44 +e 47 43 +e 47 41 +e 47 40 +e 47 39 +e 47 35 +e 47 33 +e 47 31 +e 47 26 +e 47 23 +e 47 19 +e 47 15 +e 47 12 +e 47 5 +e 48 49 +e 48 47 +e 48 46 +e 48 45 +e 48 44 +e 48 43 +e 48 42 +e 48 41 +e 48 40 +e 48 34 +e 48 32 +e 48 27 +e 48 24 +e 48 20 +e 48 16 +e 48 13 +e 48 8 +e 48 6 +e 49 48 +e 49 47 +e 49 46 +e 49 45 +e 49 44 +e 49 43 +e 49 42 +e 49 41 +e 49 35 +e 49 33 +e 49 28 +e 49 25 +e 49 21 +e 49 17 +e 49 14 +e 49 9 +e 49 7 +e 49 1 diff --git a/DynamicProgramming/queen8_8.col b/DynamicProgramming/queen8_8.col new file mode 100644 index 0000000..bbca061 --- /dev/null +++ b/DynamicProgramming/queen8_8.col @@ -0,0 +1,1460 @@ +c FILE: queen8_8.col +c Translated from Stanford GraphBase File: queen8_8.gb +c Stanford GraphBase ID: gunion(board(8,8,0,0,-1,0,0),board(8,8,0,0,-2,0,0),0,0) +p edge 64 1456 +e 1 10 +e 1 19 +e 1 28 +e 1 37 +e 1 46 +e 1 55 +e 1 64 +e 1 2 +e 1 3 +e 1 4 +e 1 5 +e 1 6 +e 1 7 +e 1 8 +e 1 9 +e 1 17 +e 1 25 +e 1 33 +e 1 41 +e 1 49 +e 1 57 +e 2 11 +e 2 20 +e 2 29 +e 2 38 +e 2 47 +e 2 56 +e 2 9 +e 2 3 +e 2 4 +e 2 5 +e 2 6 +e 2 7 +e 2 8 +e 2 10 +e 2 18 +e 2 26 +e 2 34 +e 2 42 +e 2 50 +e 2 58 +e 2 1 +e 3 12 +e 3 21 +e 3 30 +e 3 39 +e 3 48 +e 3 10 +e 3 17 +e 3 4 +e 3 5 +e 3 6 +e 3 7 +e 3 8 +e 3 11 +e 3 19 +e 3 27 +e 3 35 +e 3 43 +e 3 51 +e 3 59 +e 3 2 +e 3 1 +e 4 13 +e 4 22 +e 4 31 +e 4 40 +e 4 11 +e 4 18 +e 4 25 +e 4 5 +e 4 6 +e 4 7 +e 4 8 +e 4 12 +e 4 20 +e 4 28 +e 4 36 +e 4 44 +e 4 52 +e 4 60 +e 4 3 +e 4 2 +e 4 1 +e 5 14 +e 5 23 +e 5 32 +e 5 12 +e 5 19 +e 5 26 +e 5 33 +e 5 6 +e 5 7 +e 5 8 +e 5 13 +e 5 21 +e 5 29 +e 5 37 +e 5 45 +e 5 53 +e 5 61 +e 5 4 +e 5 3 +e 5 2 +e 5 1 +e 6 15 +e 6 24 +e 6 13 +e 6 20 +e 6 27 +e 6 34 +e 6 41 +e 6 7 +e 6 8 +e 6 14 +e 6 22 +e 6 30 +e 6 38 +e 6 46 +e 6 54 +e 6 62 +e 6 5 +e 6 4 +e 6 3 +e 6 2 +e 6 1 +e 7 16 +e 7 14 +e 7 21 +e 7 28 +e 7 35 +e 7 42 +e 7 49 +e 7 8 +e 7 15 +e 7 23 +e 7 31 +e 7 39 +e 7 47 +e 7 55 +e 7 63 +e 7 6 +e 7 5 +e 7 4 +e 7 3 +e 7 2 +e 7 1 +e 8 15 +e 8 22 +e 8 29 +e 8 36 +e 8 43 +e 8 50 +e 8 57 +e 8 16 +e 8 24 +e 8 32 +e 8 40 +e 8 48 +e 8 56 +e 8 64 +e 8 7 +e 8 6 +e 8 5 +e 8 4 +e 8 3 +e 8 2 +e 8 1 +e 9 18 +e 9 27 +e 9 36 +e 9 45 +e 9 54 +e 9 63 +e 9 10 +e 9 11 +e 9 12 +e 9 13 +e 9 14 +e 9 15 +e 9 16 +e 9 17 +e 9 25 +e 9 33 +e 9 41 +e 9 49 +e 9 57 +e 9 2 +e 9 1 +e 10 19 +e 10 28 +e 10 37 +e 10 46 +e 10 55 +e 10 64 +e 10 17 +e 10 11 +e 10 12 +e 10 13 +e 10 14 +e 10 15 +e 10 16 +e 10 18 +e 10 26 +e 10 34 +e 10 42 +e 10 50 +e 10 58 +e 10 9 +e 10 3 +e 10 2 +e 10 1 +e 11 20 +e 11 29 +e 11 38 +e 11 47 +e 11 56 +e 11 18 +e 11 25 +e 11 12 +e 11 13 +e 11 14 +e 11 15 +e 11 16 +e 11 19 +e 11 27 +e 11 35 +e 11 43 +e 11 51 +e 11 59 +e 11 10 +e 11 9 +e 11 4 +e 11 3 +e 11 2 +e 12 21 +e 12 30 +e 12 39 +e 12 48 +e 12 19 +e 12 26 +e 12 33 +e 12 13 +e 12 14 +e 12 15 +e 12 16 +e 12 20 +e 12 28 +e 12 36 +e 12 44 +e 12 52 +e 12 60 +e 12 11 +e 12 10 +e 12 9 +e 12 5 +e 12 4 +e 12 3 +e 13 22 +e 13 31 +e 13 40 +e 13 20 +e 13 27 +e 13 34 +e 13 41 +e 13 14 +e 13 15 +e 13 16 +e 13 21 +e 13 29 +e 13 37 +e 13 45 +e 13 53 +e 13 61 +e 13 12 +e 13 11 +e 13 10 +e 13 9 +e 13 6 +e 13 5 +e 13 4 +e 14 23 +e 14 32 +e 14 21 +e 14 28 +e 14 35 +e 14 42 +e 14 49 +e 14 15 +e 14 16 +e 14 22 +e 14 30 +e 14 38 +e 14 46 +e 14 54 +e 14 62 +e 14 13 +e 14 12 +e 14 11 +e 14 10 +e 14 9 +e 14 7 +e 14 6 +e 14 5 +e 15 24 +e 15 22 +e 15 29 +e 15 36 +e 15 43 +e 15 50 +e 15 57 +e 15 16 +e 15 23 +e 15 31 +e 15 39 +e 15 47 +e 15 55 +e 15 63 +e 15 14 +e 15 13 +e 15 12 +e 15 11 +e 15 10 +e 15 9 +e 15 8 +e 15 7 +e 15 6 +e 16 23 +e 16 30 +e 16 37 +e 16 44 +e 16 51 +e 16 58 +e 16 24 +e 16 32 +e 16 40 +e 16 48 +e 16 56 +e 16 64 +e 16 15 +e 16 14 +e 16 13 +e 16 12 +e 16 11 +e 16 10 +e 16 9 +e 16 8 +e 16 7 +e 17 26 +e 17 35 +e 17 44 +e 17 53 +e 17 62 +e 17 18 +e 17 19 +e 17 20 +e 17 21 +e 17 22 +e 17 23 +e 17 24 +e 17 25 +e 17 33 +e 17 41 +e 17 49 +e 17 57 +e 17 10 +e 17 9 +e 17 3 +e 17 1 +e 18 27 +e 18 36 +e 18 45 +e 18 54 +e 18 63 +e 18 25 +e 18 19 +e 18 20 +e 18 21 +e 18 22 +e 18 23 +e 18 24 +e 18 26 +e 18 34 +e 18 42 +e 18 50 +e 18 58 +e 18 17 +e 18 11 +e 18 10 +e 18 9 +e 18 4 +e 18 2 +e 19 28 +e 19 37 +e 19 46 +e 19 55 +e 19 64 +e 19 26 +e 19 33 +e 19 20 +e 19 21 +e 19 22 +e 19 23 +e 19 24 +e 19 27 +e 19 35 +e 19 43 +e 19 51 +e 19 59 +e 19 18 +e 19 17 +e 19 12 +e 19 11 +e 19 10 +e 19 5 +e 19 3 +e 19 1 +e 20 29 +e 20 38 +e 20 47 +e 20 56 +e 20 27 +e 20 34 +e 20 41 +e 20 21 +e 20 22 +e 20 23 +e 20 24 +e 20 28 +e 20 36 +e 20 44 +e 20 52 +e 20 60 +e 20 19 +e 20 18 +e 20 17 +e 20 13 +e 20 12 +e 20 11 +e 20 6 +e 20 4 +e 20 2 +e 21 30 +e 21 39 +e 21 48 +e 21 28 +e 21 35 +e 21 42 +e 21 49 +e 21 22 +e 21 23 +e 21 24 +e 21 29 +e 21 37 +e 21 45 +e 21 53 +e 21 61 +e 21 20 +e 21 19 +e 21 18 +e 21 17 +e 21 14 +e 21 13 +e 21 12 +e 21 7 +e 21 5 +e 21 3 +e 22 31 +e 22 40 +e 22 29 +e 22 36 +e 22 43 +e 22 50 +e 22 57 +e 22 23 +e 22 24 +e 22 30 +e 22 38 +e 22 46 +e 22 54 +e 22 62 +e 22 21 +e 22 20 +e 22 19 +e 22 18 +e 22 17 +e 22 15 +e 22 14 +e 22 13 +e 22 8 +e 22 6 +e 22 4 +e 23 32 +e 23 30 +e 23 37 +e 23 44 +e 23 51 +e 23 58 +e 23 24 +e 23 31 +e 23 39 +e 23 47 +e 23 55 +e 23 63 +e 23 22 +e 23 21 +e 23 20 +e 23 19 +e 23 18 +e 23 17 +e 23 16 +e 23 15 +e 23 14 +e 23 7 +e 23 5 +e 24 31 +e 24 38 +e 24 45 +e 24 52 +e 24 59 +e 24 32 +e 24 40 +e 24 48 +e 24 56 +e 24 64 +e 24 23 +e 24 22 +e 24 21 +e 24 20 +e 24 19 +e 24 18 +e 24 17 +e 24 16 +e 24 15 +e 24 8 +e 24 6 +e 25 34 +e 25 43 +e 25 52 +e 25 61 +e 25 26 +e 25 27 +e 25 28 +e 25 29 +e 25 30 +e 25 31 +e 25 32 +e 25 33 +e 25 41 +e 25 49 +e 25 57 +e 25 18 +e 25 17 +e 25 11 +e 25 9 +e 25 4 +e 25 1 +e 26 35 +e 26 44 +e 26 53 +e 26 62 +e 26 33 +e 26 27 +e 26 28 +e 26 29 +e 26 30 +e 26 31 +e 26 32 +e 26 34 +e 26 42 +e 26 50 +e 26 58 +e 26 25 +e 26 19 +e 26 18 +e 26 17 +e 26 12 +e 26 10 +e 26 5 +e 26 2 +e 27 36 +e 27 45 +e 27 54 +e 27 63 +e 27 34 +e 27 41 +e 27 28 +e 27 29 +e 27 30 +e 27 31 +e 27 32 +e 27 35 +e 27 43 +e 27 51 +e 27 59 +e 27 26 +e 27 25 +e 27 20 +e 27 19 +e 27 18 +e 27 13 +e 27 11 +e 27 9 +e 27 6 +e 27 3 +e 28 37 +e 28 46 +e 28 55 +e 28 64 +e 28 35 +e 28 42 +e 28 49 +e 28 29 +e 28 30 +e 28 31 +e 28 32 +e 28 36 +e 28 44 +e 28 52 +e 28 60 +e 28 27 +e 28 26 +e 28 25 +e 28 21 +e 28 20 +e 28 19 +e 28 14 +e 28 12 +e 28 10 +e 28 7 +e 28 4 +e 28 1 +e 29 38 +e 29 47 +e 29 56 +e 29 36 +e 29 43 +e 29 50 +e 29 57 +e 29 30 +e 29 31 +e 29 32 +e 29 37 +e 29 45 +e 29 53 +e 29 61 +e 29 28 +e 29 27 +e 29 26 +e 29 25 +e 29 22 +e 29 21 +e 29 20 +e 29 15 +e 29 13 +e 29 11 +e 29 8 +e 29 5 +e 29 2 +e 30 39 +e 30 48 +e 30 37 +e 30 44 +e 30 51 +e 30 58 +e 30 31 +e 30 32 +e 30 38 +e 30 46 +e 30 54 +e 30 62 +e 30 29 +e 30 28 +e 30 27 +e 30 26 +e 30 25 +e 30 23 +e 30 22 +e 30 21 +e 30 16 +e 30 14 +e 30 12 +e 30 6 +e 30 3 +e 31 40 +e 31 38 +e 31 45 +e 31 52 +e 31 59 +e 31 32 +e 31 39 +e 31 47 +e 31 55 +e 31 63 +e 31 30 +e 31 29 +e 31 28 +e 31 27 +e 31 26 +e 31 25 +e 31 24 +e 31 23 +e 31 22 +e 31 15 +e 31 13 +e 31 7 +e 31 4 +e 32 39 +e 32 46 +e 32 53 +e 32 60 +e 32 40 +e 32 48 +e 32 56 +e 32 64 +e 32 31 +e 32 30 +e 32 29 +e 32 28 +e 32 27 +e 32 26 +e 32 25 +e 32 24 +e 32 23 +e 32 16 +e 32 14 +e 32 8 +e 32 5 +e 33 42 +e 33 51 +e 33 60 +e 33 34 +e 33 35 +e 33 36 +e 33 37 +e 33 38 +e 33 39 +e 33 40 +e 33 41 +e 33 49 +e 33 57 +e 33 26 +e 33 25 +e 33 19 +e 33 17 +e 33 12 +e 33 9 +e 33 5 +e 33 1 +e 34 43 +e 34 52 +e 34 61 +e 34 41 +e 34 35 +e 34 36 +e 34 37 +e 34 38 +e 34 39 +e 34 40 +e 34 42 +e 34 50 +e 34 58 +e 34 33 +e 34 27 +e 34 26 +e 34 25 +e 34 20 +e 34 18 +e 34 13 +e 34 10 +e 34 6 +e 34 2 +e 35 44 +e 35 53 +e 35 62 +e 35 42 +e 35 49 +e 35 36 +e 35 37 +e 35 38 +e 35 39 +e 35 40 +e 35 43 +e 35 51 +e 35 59 +e 35 34 +e 35 33 +e 35 28 +e 35 27 +e 35 26 +e 35 21 +e 35 19 +e 35 17 +e 35 14 +e 35 11 +e 35 7 +e 35 3 +e 36 45 +e 36 54 +e 36 63 +e 36 43 +e 36 50 +e 36 57 +e 36 37 +e 36 38 +e 36 39 +e 36 40 +e 36 44 +e 36 52 +e 36 60 +e 36 35 +e 36 34 +e 36 33 +e 36 29 +e 36 28 +e 36 27 +e 36 22 +e 36 20 +e 36 18 +e 36 15 +e 36 12 +e 36 9 +e 36 8 +e 36 4 +e 37 46 +e 37 55 +e 37 64 +e 37 44 +e 37 51 +e 37 58 +e 37 38 +e 37 39 +e 37 40 +e 37 45 +e 37 53 +e 37 61 +e 37 36 +e 37 35 +e 37 34 +e 37 33 +e 37 30 +e 37 29 +e 37 28 +e 37 23 +e 37 21 +e 37 19 +e 37 16 +e 37 13 +e 37 10 +e 37 5 +e 37 1 +e 38 47 +e 38 56 +e 38 45 +e 38 52 +e 38 59 +e 38 39 +e 38 40 +e 38 46 +e 38 54 +e 38 62 +e 38 37 +e 38 36 +e 38 35 +e 38 34 +e 38 33 +e 38 31 +e 38 30 +e 38 29 +e 38 24 +e 38 22 +e 38 20 +e 38 14 +e 38 11 +e 38 6 +e 38 2 +e 39 48 +e 39 46 +e 39 53 +e 39 60 +e 39 40 +e 39 47 +e 39 55 +e 39 63 +e 39 38 +e 39 37 +e 39 36 +e 39 35 +e 39 34 +e 39 33 +e 39 32 +e 39 31 +e 39 30 +e 39 23 +e 39 21 +e 39 15 +e 39 12 +e 39 7 +e 39 3 +e 40 47 +e 40 54 +e 40 61 +e 40 48 +e 40 56 +e 40 64 +e 40 39 +e 40 38 +e 40 37 +e 40 36 +e 40 35 +e 40 34 +e 40 33 +e 40 32 +e 40 31 +e 40 24 +e 40 22 +e 40 16 +e 40 13 +e 40 8 +e 40 4 +e 41 50 +e 41 59 +e 41 42 +e 41 43 +e 41 44 +e 41 45 +e 41 46 +e 41 47 +e 41 48 +e 41 49 +e 41 57 +e 41 34 +e 41 33 +e 41 27 +e 41 25 +e 41 20 +e 41 17 +e 41 13 +e 41 9 +e 41 6 +e 41 1 +e 42 51 +e 42 60 +e 42 49 +e 42 43 +e 42 44 +e 42 45 +e 42 46 +e 42 47 +e 42 48 +e 42 50 +e 42 58 +e 42 41 +e 42 35 +e 42 34 +e 42 33 +e 42 28 +e 42 26 +e 42 21 +e 42 18 +e 42 14 +e 42 10 +e 42 7 +e 42 2 +e 43 52 +e 43 61 +e 43 50 +e 43 57 +e 43 44 +e 43 45 +e 43 46 +e 43 47 +e 43 48 +e 43 51 +e 43 59 +e 43 42 +e 43 41 +e 43 36 +e 43 35 +e 43 34 +e 43 29 +e 43 27 +e 43 25 +e 43 22 +e 43 19 +e 43 15 +e 43 11 +e 43 8 +e 43 3 +e 44 53 +e 44 62 +e 44 51 +e 44 58 +e 44 45 +e 44 46 +e 44 47 +e 44 48 +e 44 52 +e 44 60 +e 44 43 +e 44 42 +e 44 41 +e 44 37 +e 44 36 +e 44 35 +e 44 30 +e 44 28 +e 44 26 +e 44 23 +e 44 20 +e 44 17 +e 44 16 +e 44 12 +e 44 4 +e 45 54 +e 45 63 +e 45 52 +e 45 59 +e 45 46 +e 45 47 +e 45 48 +e 45 53 +e 45 61 +e 45 44 +e 45 43 +e 45 42 +e 45 41 +e 45 38 +e 45 37 +e 45 36 +e 45 31 +e 45 29 +e 45 27 +e 45 24 +e 45 21 +e 45 18 +e 45 13 +e 45 9 +e 45 5 +e 46 55 +e 46 64 +e 46 53 +e 46 60 +e 46 47 +e 46 48 +e 46 54 +e 46 62 +e 46 45 +e 46 44 +e 46 43 +e 46 42 +e 46 41 +e 46 39 +e 46 38 +e 46 37 +e 46 32 +e 46 30 +e 46 28 +e 46 22 +e 46 19 +e 46 14 +e 46 10 +e 46 6 +e 46 1 +e 47 56 +e 47 54 +e 47 61 +e 47 48 +e 47 55 +e 47 63 +e 47 46 +e 47 45 +e 47 44 +e 47 43 +e 47 42 +e 47 41 +e 47 40 +e 47 39 +e 47 38 +e 47 31 +e 47 29 +e 47 23 +e 47 20 +e 47 15 +e 47 11 +e 47 7 +e 47 2 +e 48 55 +e 48 62 +e 48 56 +e 48 64 +e 48 47 +e 48 46 +e 48 45 +e 48 44 +e 48 43 +e 48 42 +e 48 41 +e 48 40 +e 48 39 +e 48 32 +e 48 30 +e 48 24 +e 48 21 +e 48 16 +e 48 12 +e 48 8 +e 48 3 +e 49 58 +e 49 50 +e 49 51 +e 49 52 +e 49 53 +e 49 54 +e 49 55 +e 49 56 +e 49 57 +e 49 42 +e 49 41 +e 49 35 +e 49 33 +e 49 28 +e 49 25 +e 49 21 +e 49 17 +e 49 14 +e 49 9 +e 49 7 +e 49 1 +e 50 59 +e 50 57 +e 50 51 +e 50 52 +e 50 53 +e 50 54 +e 50 55 +e 50 56 +e 50 58 +e 50 49 +e 50 43 +e 50 42 +e 50 41 +e 50 36 +e 50 34 +e 50 29 +e 50 26 +e 50 22 +e 50 18 +e 50 15 +e 50 10 +e 50 8 +e 50 2 +e 51 60 +e 51 58 +e 51 52 +e 51 53 +e 51 54 +e 51 55 +e 51 56 +e 51 59 +e 51 50 +e 51 49 +e 51 44 +e 51 43 +e 51 42 +e 51 37 +e 51 35 +e 51 33 +e 51 30 +e 51 27 +e 51 23 +e 51 19 +e 51 16 +e 51 11 +e 51 3 +e 52 61 +e 52 59 +e 52 53 +e 52 54 +e 52 55 +e 52 56 +e 52 60 +e 52 51 +e 52 50 +e 52 49 +e 52 45 +e 52 44 +e 52 43 +e 52 38 +e 52 36 +e 52 34 +e 52 31 +e 52 28 +e 52 25 +e 52 24 +e 52 20 +e 52 12 +e 52 4 +e 53 62 +e 53 60 +e 53 54 +e 53 55 +e 53 56 +e 53 61 +e 53 52 +e 53 51 +e 53 50 +e 53 49 +e 53 46 +e 53 45 +e 53 44 +e 53 39 +e 53 37 +e 53 35 +e 53 32 +e 53 29 +e 53 26 +e 53 21 +e 53 17 +e 53 13 +e 53 5 +e 54 63 +e 54 61 +e 54 55 +e 54 56 +e 54 62 +e 54 53 +e 54 52 +e 54 51 +e 54 50 +e 54 49 +e 54 47 +e 54 46 +e 54 45 +e 54 40 +e 54 38 +e 54 36 +e 54 30 +e 54 27 +e 54 22 +e 54 18 +e 54 14 +e 54 9 +e 54 6 +e 55 64 +e 55 62 +e 55 56 +e 55 63 +e 55 54 +e 55 53 +e 55 52 +e 55 51 +e 55 50 +e 55 49 +e 55 48 +e 55 47 +e 55 46 +e 55 39 +e 55 37 +e 55 31 +e 55 28 +e 55 23 +e 55 19 +e 55 15 +e 55 10 +e 55 7 +e 55 1 +e 56 63 +e 56 64 +e 56 55 +e 56 54 +e 56 53 +e 56 52 +e 56 51 +e 56 50 +e 56 49 +e 56 48 +e 56 47 +e 56 40 +e 56 38 +e 56 32 +e 56 29 +e 56 24 +e 56 20 +e 56 16 +e 56 11 +e 56 8 +e 56 2 +e 57 58 +e 57 59 +e 57 60 +e 57 61 +e 57 62 +e 57 63 +e 57 64 +e 57 50 +e 57 49 +e 57 43 +e 57 41 +e 57 36 +e 57 33 +e 57 29 +e 57 25 +e 57 22 +e 57 17 +e 57 15 +e 57 9 +e 57 8 +e 57 1 +e 58 59 +e 58 60 +e 58 61 +e 58 62 +e 58 63 +e 58 64 +e 58 57 +e 58 51 +e 58 50 +e 58 49 +e 58 44 +e 58 42 +e 58 37 +e 58 34 +e 58 30 +e 58 26 +e 58 23 +e 58 18 +e 58 16 +e 58 10 +e 58 2 +e 59 60 +e 59 61 +e 59 62 +e 59 63 +e 59 64 +e 59 58 +e 59 57 +e 59 52 +e 59 51 +e 59 50 +e 59 45 +e 59 43 +e 59 41 +e 59 38 +e 59 35 +e 59 31 +e 59 27 +e 59 24 +e 59 19 +e 59 11 +e 59 3 +e 60 61 +e 60 62 +e 60 63 +e 60 64 +e 60 59 +e 60 58 +e 60 57 +e 60 53 +e 60 52 +e 60 51 +e 60 46 +e 60 44 +e 60 42 +e 60 39 +e 60 36 +e 60 33 +e 60 32 +e 60 28 +e 60 20 +e 60 12 +e 60 4 +e 61 62 +e 61 63 +e 61 64 +e 61 60 +e 61 59 +e 61 58 +e 61 57 +e 61 54 +e 61 53 +e 61 52 +e 61 47 +e 61 45 +e 61 43 +e 61 40 +e 61 37 +e 61 34 +e 61 29 +e 61 25 +e 61 21 +e 61 13 +e 61 5 +e 62 63 +e 62 64 +e 62 61 +e 62 60 +e 62 59 +e 62 58 +e 62 57 +e 62 55 +e 62 54 +e 62 53 +e 62 48 +e 62 46 +e 62 44 +e 62 38 +e 62 35 +e 62 30 +e 62 26 +e 62 22 +e 62 17 +e 62 14 +e 62 6 +e 63 64 +e 63 62 +e 63 61 +e 63 60 +e 63 59 +e 63 58 +e 63 57 +e 63 56 +e 63 55 +e 63 54 +e 63 47 +e 63 45 +e 63 39 +e 63 36 +e 63 31 +e 63 27 +e 63 23 +e 63 18 +e 63 15 +e 63 9 +e 63 7 +e 64 63 +e 64 62 +e 64 61 +e 64 60 +e 64 59 +e 64 58 +e 64 57 +e 64 56 +e 64 55 +e 64 48 +e 64 46 +e 64 40 +e 64 37 +e 64 32 +e 64 28 +e 64 24 +e 64 19 +e 64 16 +e 64 10 +e 64 8 +e 64 1