import time

def fannkuch(n):
    count = range(1, n+1)
    max_flips = 0
    m = n-1
    r = n
    check = 0
    perm1 = range(n)
    perm = range(n)
    perm1_ins = perm1.insert
    perm1_pop = perm1.pop

    while 1:
        if check < 30:
            #print "".join(str(i+1) for i in perm1)
            check = check + 1

        while r != 1:
            count[r-1] = r
            r = r - 1

        if perm1[0] != 0 and perm1[m] != m:
            perm = perm1[:]
            flips_count = 0
            k = perm[0]
            while k:
                perm[:k+1] = perm[k::-1]
                flips_count = flips_count + 1
                k = perm[0]

            if flips_count > max_flips:
                max_flips = flips_count

        while r != n:
            perm1_ins(r, perm1_pop(0))
            count[r] = count[r] - 1
            if count[r] > 0:
                break
            r = r + 1
        else:
            return max_flips

DEFAULT_ARG = 9

def main(n):
    for i in range(2, n):
        t0 = time.time()
        print fannkuch(i)
        tk = time.time()
        print tk - t0
main(11)
