upd using itertools