+class OrderMaker:
+ def __init__(self, n=8):
+ self.n = n
+ self.a = []
+ self.u = []
+ self.s = []
+ for x in range(0,n):
+ self.u.append(False)
+ self.go()
+
+ def go(self):
+ from copy import deepcopy
+ if len(self.s) == self.n:
+ self.a.append(deepcopy(self.s))
+ else:
+ for x in range(0,self.n):
+ if self.u[x]: continue
+ self.s.append(x)
+ self.u[x] = True
+ self.go()
+ self.u[x] = False
+ self.s.pop()
+
+ def order(self):
+ return self.a
+