def unfold(f, x):
	while x is not None:
		yield x
		x = f(x)
 
def next_elem(t):
	(a, b, c, d) = t
	return (b, c, d, a*(a+1))
 
logical = unfold(next_elem, (4, 5, 6, 8))
 
for n in logical:
	print(n)
	if n[-1] > 1000:
		break
				ZGVmIHVuZm9sZChmLCB4KToKCXdoaWxlIHggaXMgbm90IE5vbmU6CgkJeWllbGQgeAoJCXggPSBmKHgpCgpkZWYgbmV4dF9lbGVtKHQpOgoJKGEsIGIsIGMsIGQpID0gdAoJcmV0dXJuIChiLCBjLCBkLCBhKihhKzEpKQoKbG9naWNhbCA9IHVuZm9sZChuZXh0X2VsZW0sICg0LCA1LCA2LCA4KSkKCmZvciBuIGluIGxvZ2ljYWw6CglwcmludChuKQoJaWYgblstMV0gPiAxMDAwOgoJCWJyZWFr
				
				
				
				
				
			 
			
				
			
			
				
	
		
		
	
	
		(4, 5, 6, 8)
(5, 6, 8, 20)
(6, 8, 20, 30)
(8, 20, 30, 42)
(20, 30, 42, 72)
(30, 42, 72, 420)
(42, 72, 420, 930)
(72, 420, 930, 1806)