events = [
	('use rince',[
		('after','hygiene'),
		('during','morning')
	]),
	('brush-teeth',[
		('during','hygiene'),
		('during','morning')
		]
	),
	('pee',[
		('during','morning'),
		('before','hygiene')
		]
	),
	('have breakfast',[
		('during','breakfast'),
		('during','morning')
		]
	)
]

timelines = [
	['morning','noon'],
	['hygiene','breakfast']
]

def order(timelines, events):
	if not timelines:
		return events
	ordered = []
	for timestamp in timelines[0]:
		before = []
		during = []
		after = []
		for event,lst in events:
			for when,ts in lst:
				if ts == timestamp:
					if when == 'during':
						during.append((event,lst))
					if when == 'after':
						after.append((event,lst))
					if when == 'before':
						before.append((event,lst))
		ordered += order(timelines[1:],before)
		ordered += order(timelines[1:],during)
		ordered += order(timelines[1:],after)
	return ordered

tmp = order(timelines,events)
for event,_ in tmp:
	print(event)
