class Bar:
  def __init__(self, n):
    self.n, self.curr = n, 0

  def __next__(self):
    self.curr = (self.curr+1) % self.n
    return self.curr

  def __iter__(self):
    return self

def baz(m):
  print('a')
  it, x = Bar(4), 0
  while x < m:
    print('b')
    yield x
    print('c')
    x += next(iter(it))

print('d')
b = baz(7)
print('foo')
print('e', next(b))
print('f', next(b))
print([x for x in b])
