def  shape( lst) :
    def  ishape( lst) :
        shapes =  [ ishape( x)  if  isinstance ( x,  list )  else  [ ]  for  x in  lst] 
        shape =  shapes[ 0 ] 
        if  shapes.count ( shape)  !=  len ( lst) :
            raise  ValueError ( 'Ragged list' ) 
        shape.append ( len ( lst) ) 
        return  shape
    return  tuple ( reversed ( ishape( lst) ) ) 
 
print ( shape( [ 1 ,  2 ,  3 ,  4 ,  5 ,  6 ] ) ) 
print ( shape( [ [ 1 ,  2 ,  3 ] ,  [ 4 ,  5 ,  6 ] ] ) ) 
print ( shape( [ [ 1 ,  2 ] ,  [ 3 ,  4 ] ,  [ 5 ,  6 ] ] ) ) 
print ( shape( [ [ [ 1 ,  2 ,  3 ,  4 ,  5 ,  6 ] ] ] ) ) 
print ( shape( [ [ [ 1 ,  2 ] ,  [ 3 ,  4 ] ] ,  [ [ 5 ,  6 ] ,  [ 7 ,  8 ] ] ] ) ) 
print ( shape( [ [ 1 ,  2 ,  3 ] ,  [ 4 ,  5 ] ] ) ) 
ZGVmIHNoYXBlKGxzdCk6CiAgICBkZWYgaXNoYXBlKGxzdCk6CiAgICAgICAgc2hhcGVzID0gW2lzaGFwZSh4KSBpZiBpc2luc3RhbmNlKHgsIGxpc3QpIGVsc2UgW10gZm9yIHggaW4gbHN0XQogICAgICAgIHNoYXBlID0gc2hhcGVzWzBdCiAgICAgICAgaWYgc2hhcGVzLmNvdW50KHNoYXBlKSAhPSBsZW4obHN0KToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUmFnZ2VkIGxpc3QnKQogICAgICAgIHNoYXBlLmFwcGVuZChsZW4obHN0KSkKICAgICAgICByZXR1cm4gc2hhcGUKICAgIHJldHVybiB0dXBsZShyZXZlcnNlZChpc2hhcGUobHN0KSkpCgpwcmludChzaGFwZShbMSwgMiwgMywgNCwgNSwgNl0pKQpwcmludChzaGFwZShbWzEsIDIsIDNdLCBbNCwgNSwgNl1dKSkKcHJpbnQoc2hhcGUoW1sxLCAyXSwgWzMsIDRdLCBbNSwgNl1dKSkKcHJpbnQoc2hhcGUoW1tbMSwgMiwgMywgNCwgNSwgNl1dXSkpCnByaW50KHNoYXBlKFtbWzEsIDJdLCBbMywgNF1dLCBbWzUsIDZdLCBbNywgOF1dXSkpCnByaW50KHNoYXBlKFtbMSwgMiwgM10sIFs0LCA1XV0pKQ==
				
				 
			
				
			
			
				
	
		
		
		
		 
	
		(6,)
(2, 3)
(3, 2)
(1, 1, 6)
(2, 2, 2)
 
	 
		
	 
	
		
		 
	
        Traceback (most recent call last):
  File "./prog.py", line 16, in <module>
  File "./prog.py", line 9, in shape
  File "./prog.py", line 6, in ishape
ValueError: Ragged list