# -*- Mode: Python; tab-width: 4 -*-

import coroutine

def flatten1(l):
	flatten (l)
	coroutine.main (None)

def flatten (l):
	if type(l) is type([]):
		for item in l:
			flatten (item)
	else:
		coroutine.main (l)

x = [0,1,[2,3],[4,[5,[6]],7,[[[[8]]]],9]]
y = [[[0,1],2,[3,[4],[5]],[[6],[7]],8],9]

co1 = coroutine.new (flatten1)
print coroutine.resume (co1, (x,))
co2 = coroutine.new (flatten1)
print coroutine.resume (co2, (y,))

flag = 1
while 1:
	v1 = coroutine.resume (co1, None)
	v2 = coroutine.resume (co2, None)
	print '%s ?= %s' % (v1, v2)
	if v1 != v2:
		flag = 0
		break
	if v1 is None:
		break

if flag:
	print 'equal'
else:
	print 'not equal'
