knotting

def twist(a, n):
    return a[:n][::-1] + a[n:]

def skip(a, k):
    return a[k:] + a[:k]

def knot(a, x):
    p = k = 0
    for i in x:
        a = skip(twist(skip(a, p), i), -p)
        p = (p + i + k) % len(a)
        k += 1
    return a