from itertools import permutations
def sort4l(d):
def lswap2(a,b):
nonlocal d
t=d[a]
d[a]=d[b]
d[b]=t
def lswap3(a,b,c):
nonlocal d
t=d[a]
d[a]=d[b]
d[b]=d[c]
d[c]=t
def lswap4(p,q,r,s):
nonlocal d
t=d[p]
d[p]=d[q]
d[q]=d[r]
d[r]=d[s]
d[s]=t
if(d[0]<d[1]):
if(d[2]<d[3]):
if(d[0]<d[2]):
if(d[1]<d[3]):
if(d[1]<d[2]):return
else:
lswap2(1,2)
else:
lswap3(3,1,2)
else:
if(d[1]<d[3]):lswap3(1,0,2)
else:
if(d[0]<d[3]):lswap4(3,1,0,2)
else:
lswap2(3,1)
lswap2(0,2)
else:
if(d[0]<d[3]):
if(d[1]<d[2]):
if(d[1]<d[3]):lswap2(3,2)
else:
lswap3(1,3,2)
else:
lswap2(1,3)
else:
if(d[1]<d[2]):lswap4(2,1,0,3)
else:
if(d[0]<d[2]):lswap3(0,3,1)
else:
lswap4(2,0,3,1)
else:
if(d[2]<d[3]):
if(d[0]<d[3]):
if(d[1]<d[2]):
if(d[0]<d[2]):lswap2(0,1)
else:
lswap3(2,0,1)
else:
lswap2(2,0)
else:
if(d[1]<d[2]):lswap4(1,2,3,0)
else:
if(d[1]<d[3]):lswap3(3,0,2)
else:
lswap4(1,3,0,2)
else:
if(d[0]<d[2]):
if(d[1]<d[3]):
if(d[0]<d[3]):
lswap2(0,1)
lswap2(3,2)
else:
lswap4(0,1,3,2)
else:
lswap3(0,3,2)
else:
if(d[1]<d[3]):lswap3(1,3,0)
else:
if(d[1]<d[2]):lswap2(3,0)
else:
lswap2(1,2)
lswap2(3,0)
x=list(['a', 'b', 'c', 'd'])
sort4l(x)
for t in permutations(x):
d=list(t)
print(d)
sort4l(d)
if (d != x):print(t,d)
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucwpkZWYgc29ydDRsKGQpOgoJZGVmIGxzd2FwMihhLGIpOgoJCW5vbmxvY2FsIGQKCQl0PWRbYV0KCQlkW2FdPWRbYl0KCQlkW2JdPXQKCglkZWYgbHN3YXAzKGEsYixjKToKCQlub25sb2NhbCBkCgkJdD1kW2FdCgkJZFthXT1kW2JdCgkJZFtiXT1kW2NdCgkJZFtjXT10CgoJZGVmIGxzd2FwNChwLHEscixzKToKCQlub25sb2NhbCBkCgkJdD1kW3BdCgkJZFtwXT1kW3FdCgkJZFtxXT1kW3JdCgkJZFtyXT1kW3NdCgkJZFtzXT10CgoJaWYoZFswXTxkWzFdKToKCQlpZihkWzJdPGRbM10pOgoJCQlpZihkWzBdPGRbMl0pOgoJCQkJaWYoZFsxXTxkWzNdKToKCQkJCQlpZihkWzFdPGRbMl0pOnJldHVybgoJCQkJCWVsc2U6CgkJCQkJCWxzd2FwMigxLDIpCgkJCQllbHNlOgoJCQkJCWxzd2FwMygzLDEsMikKCQkJZWxzZToKCQkJCWlmKGRbMV08ZFszXSk6bHN3YXAzKDEsMCwyKQoJCQkJZWxzZToKCQkJCQlpZihkWzBdPGRbM10pOmxzd2FwNCgzLDEsMCwyKQoJCQkJCWVsc2U6CgkJCQkJCWxzd2FwMigzLDEpCgkJCQkJCWxzd2FwMigwLDIpCgkJZWxzZToKCQkJaWYoZFswXTxkWzNdKToKCQkJCWlmKGRbMV08ZFsyXSk6CgkJCQkJaWYoZFsxXTxkWzNdKTpsc3dhcDIoMywyKQoJCQkJCWVsc2U6CgkJCQkJCWxzd2FwMygxLDMsMikKCQkJCWVsc2U6CgkJCQkJbHN3YXAyKDEsMykKCQkJZWxzZToKCQkJCWlmKGRbMV08ZFsyXSk6bHN3YXA0KDIsMSwwLDMpCgkJCQllbHNlOgoJCQkJCWlmKGRbMF08ZFsyXSk6bHN3YXAzKDAsMywxKQoJCQkJCWVsc2U6CgkJCQkJCWxzd2FwNCgyLDAsMywxKQoJZWxzZToKCQlpZihkWzJdPGRbM10pOgoJCQlpZihkWzBdPGRbM10pOgoJCQkJaWYoZFsxXTxkWzJdKToKCQkJCQlpZihkWzBdPGRbMl0pOmxzd2FwMigwLDEpCgkJCQkJZWxzZToKCQkJCQkJbHN3YXAzKDIsMCwxKQoJCQkJZWxzZToKCQkJCQlsc3dhcDIoMiwwKQoJCQllbHNlOgoJCQkJaWYoZFsxXTxkWzJdKTpsc3dhcDQoMSwyLDMsMCkKCQkJCWVsc2U6CgkJCQkJaWYoZFsxXTxkWzNdKTpsc3dhcDMoMywwLDIpCgkJCQkJZWxzZToKCQkJCQkJbHN3YXA0KDEsMywwLDIpCgkJZWxzZToKCQkJaWYoZFswXTxkWzJdKToKCQkJCWlmKGRbMV08ZFszXSk6CgkJCQkJaWYoZFswXTxkWzNdKToKCQkJCQkJbHN3YXAyKDAsMSkKCQkJCQkJbHN3YXAyKDMsMikKCQkJCQllbHNlOgoJCQkJCQlsc3dhcDQoMCwxLDMsMikKCQkJCWVsc2U6CgkJCQkJbHN3YXAzKDAsMywyKQoJCQllbHNlOgoJCQkJaWYoZFsxXTxkWzNdKTpsc3dhcDMoMSwzLDApCgkJCQllbHNlOgoJCQkJCWlmKGRbMV08ZFsyXSk6bHN3YXAyKDMsMCkKCQkJCQllbHNlOgoJCQkJCQlsc3dhcDIoMSwyKQoJCQkJCQlsc3dhcDIoMywwKQoKeD1saXN0KFsnYScsICdiJywgJ2MnLCAnZCddKQpzb3J0NGwoeCkKZm9yIHQgaW4gcGVybXV0YXRpb25zKHgpOgoJZD1saXN0KHQpCglwcmludChkKQoJc29ydDRsKGQpCglpZiAoZCAhPSB4KTpwcmludCh0LGQpCgo=
['a', 'b', 'c', 'd']
['a', 'b', 'd', 'c']
['a', 'c', 'b', 'd']
['a', 'c', 'd', 'b']
['a', 'd', 'b', 'c']
['a', 'd', 'c', 'b']
['b', 'a', 'c', 'd']
['b', 'a', 'd', 'c']
['b', 'c', 'a', 'd']
['b', 'c', 'd', 'a']
['b', 'd', 'a', 'c']
['b', 'd', 'c', 'a']
['c', 'a', 'b', 'd']
['c', 'a', 'd', 'b']
['c', 'b', 'a', 'd']
['c', 'b', 'd', 'a']
['c', 'd', 'a', 'b']
['c', 'd', 'b', 'a']
['d', 'a', 'b', 'c']
['d', 'a', 'c', 'b']
['d', 'b', 'a', 'c']
['d', 'b', 'c', 'a']
['d', 'c', 'a', 'b']
['d', 'c', 'b', 'a']