# shift 
# Fig. 25.7 

def xor(x, y):
  return (x + y)%2
  # return x ^ y

def shifts(regs, fn, r1, r2, numShifts):
  initRegs = regs[:]
  print(*regs, sep='', end = ' ')
  for i in range(numShifts): 
    if i%7 == 0:
      print()
    xn = fn(regs[r1], regs[r2])
    regs = regs[1:]+[xn]
    if regs == initRegs:
      print(*regs, sep='', end = '* ')
      print(i+1)
    else:
      print(*regs, sep='', end = '  ')
  print()

if __name__ == "__main__":
  shifts([0, 1, 1, 0, 1, 0, 0], xor, -6, -7, 134)
