def l(a):
from itertools import count
for i in count():
if a(i) is None:
return i
def r(k, a):
l_a = l(a)
return lambda i: a(i % l_a) if i < l_a * k else None
def c(a, b):
l_a, l_b = l(a), l(b)
return lambda i: a(i) if i < l_a else b(i - l_a) if i < l_a + l_b else None
def s(c):
assert len(c) == 1
return lambda i: c if i == 0 else None
def p(a):
print ''.join(a(i) for i in range(l(a)))
if __name__ == '__main__':
p(c(r(3,c(r(3,s('9')),s('1'))),s('2')))
ZGVmIGwoYSk6CiAgICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY291bnQKICAgIGZvciBpIGluIGNvdW50KCk6CiAgICAgICAgaWYgYShpKSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gaQogIApkZWYgcihrLCBhKToKICAgIGxfYSA9IGwoYSkKICAgIHJldHVybiBsYW1iZGEgaTogYShpICUgbF9hKSBpZiBpIDwgbF9hICogayBlbHNlIE5vbmUKICAKZGVmIGMoYSwgYik6CiAgICBsX2EsIGxfYiA9IGwoYSksIGwoYikKICAgIHJldHVybiBsYW1iZGEgaTogYShpKSBpZiBpIDwgbF9hIGVsc2UgYihpIC0gbF9hKSBpZiBpIDwgbF9hICsgbF9iIGVsc2UgTm9uZQogIApkZWYgcyhjKToKICAgIGFzc2VydCBsZW4oYykgPT0gMQogICAgcmV0dXJuIGxhbWJkYSBpOiBjIGlmIGkgPT0gMCBlbHNlIE5vbmUKICAKZGVmIHAoYSk6CiAgICBwcmludCAnJy5qb2luKGEoaSkgZm9yIGkgaW4gcmFuZ2UobChhKSkpCiAgCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBwKGMocigzLGMocigzLHMoJzknKSkscygnMScpKSkscygnMicpKSk=