(O:=[(lambda P:(N:={*map(int,P.split())})and[a*b for a in N if(b:=2020-a)in N][0],lambda P:(N:={*map(int,P.split())})and[a*b*c for a in N for b in N if(c:=2020-a-b)in N][0],),(lambda P:sum((x:=[*map(int,p.split("-"))])[0]<=a.count(c[0])<=x[1]for p,c,a in map(str.split,P.splitlines())),lambda P:sum(1==sum(c[0]==a[int(x)-1]for x in p.split("-"))for p,c,a in map(str.split,P.splitlines()))),(lambda P:sum(l[(i*3)%len(l)]=="#"for i,l in enumerate(P.split())),lambda P:(o:=(X:=lambda a,b:sum(l[(i*a)%len(l)]=="#"for i,l in enumerate(P.split()[::b])))(1,2))and[o:=o*X(d,1)for d in[1,3,5,7]]and o),(lambda P:sum(all(map(k.count,"byr iyr eyr hgt hcl ecl pid".split()))for k in P.split("\n\n")),lambda P,f=__import__("re").fullmatch:sum(all([d:=dict(x.split(":")for x in K)]+[f(p,d.get(k,""))for p,k in[(r"19[2-9]\d|200[012]","byr"),(r"20(1\d|20)","iyr"),(r"20(2\d|30)","eyr"),(r"1([5-8]\d|9[0-3])cm|(59|6\d|7[0-6])+in","hgt"),(r"#[\da-f]{6}","hcl"),("amb|blu|brn|gry|grn|hzl|oth","ecl"),(r"\d{9}","pid")]])for K in map(str.split,P.split("\n\n")))),(lambda P:max(int(l.translate(l.maketrans("FLBR","0011")),2)for l in P.split()),lambda P:[*{*range(min(S:={int(l.translate(l.maketrans("FLBR","0011")),2)for l in P.split()}),max(S)+1)}-S][0]),(lambda P:sum(len(set(g)-{"\n"})for g in P.split("\n\n")),lambda P:sum(len(set.intersection(*map(set,g.split())))for g in P.split("\n\n"))),(lambda P,f=__import__("re").findall:len((g:={})or[[(m:=f("([a-z]+ [a-z]+) bag",l)),[g.setdefault(x,[]).append(m[0])for x in m[1:]]]for l in P.splitlines()]and(dfs:=lambda p:set.union({p},*map(dfs,g.get(p,[]))))("shiny gold"))-1,lambda P,r=__import__("re"):(g:={})or[g.setdefault(r.match(r"^(\w+ \w+)",l).group(1),[]).extend(r.findall(r"(\d+) (\w+ \w+) bag",l))for l in P.splitlines()]and(dfs:=lambda p:1+sum(dfs(q)*int(n)for n,q in g.get(p,[])))("shiny gold")-1,),(lambda P,p=[0],a=[0]:[*iter(lambda:(p[-1]not in p[:-1]and(k:=P.splitlines()[p[-1]].split(),a.append(a[-1]+(k[0]=="acc")*int(k[1])),p.append(p[-1]+(int(k[1])if"jmp"==k[0] else 1)))),False)]and a[-1],lambda P:(L:=P.splitlines())and next(iter(y[1]for x in range(len(P))if(y:=(lambda f,p=[0],a=[0],s=set():[*iter(lambda:((c:=p[-1])=len(L),a[-1]))(x))[0]))),(lambda P:(n:=[*map(int,P.split())])and next(iter(x for i,x in enumerate(n[25:])if(s:=set())or 1-any((2*y-x and x-y in s)or s.add(y)for y in n[i:i+25]))),lambda P:(n:=[*map(int,P.split())],t:=next(iter(x for i,x in enumerate(n[25:])if(s:=set())or 1-any((2*y-x and x-y in s)or s.add(y)for y in n[i:i+25]))))and next(iter(min(n[a:b])+max(n[a:b])for a in range(len(n))for b in range(a+2,len(n))if(s:=sum(n[a:b])==t)))),(lambda P:(n:=sorted(map(int,P.split())))and(X:=[b-a for a,b in zip([0]+n,n)].count)(1)*(X(3)+1),lambda P:(n:=sorted(map(int,P.split())))and(d:={})or(c:=lambda i,j:j==n[-1]if i==len(n)else(0 if 3+j=len(G[f[1]])and(A==p[3]and(x:=O[f[0]],y:=[*(set(G[f[1]])-{x,f[0]})][0])or(y:=O[f[0]],x:=[*(set(G[f[1]])-{y,f[0]})][0]),Q.append((f[1],u,v,x,y))))for A,u,v in[(p[3],p[1],p[2]+1),(p[4],p[1]+1,p[2])]if(f:=G[p[0]].get(A))]))*0),I:=["".join(l)for t in T for l in zip(*t)])and sum(l.count("#")for l in I)-len({s for i in Y(4)for j in Y(4)if i not in(j,O[j])and(m:=R([18*" "+"# ",3*"# #"+"##",6*" # "+" "],(i,j)))for y in Y(len(I)-len(m)+1)for x in Y(len(I[0])-len(m[0])+1)if(p:=[(y+i,x+j)for i,l in z(m)for j,c in z(l)if"#"==c])if all(I[i][j]=="#"for i,j in p)for s in p})),(lambda P:(a:={},i:=[],[a.setdefault(x,[]).append(j)for l in P.splitlines()if(k:=l.split(" (contains "),i.extend(j:=k[0].split()))for x in k[1].strip(")").split(", ")],a:={0}.union(*[set(k[0]).intersection(*k)for k in a.values()]),sum(1-(x in a)for x in i))[4],lambda P:(a:={},[a.setdefault(x,[]).append(k[0].split())for l in P.splitlines()if(k:=l.split(" (contains "))for x in k[1].strip(")").split(", ")],a:={k:{*v[0]}.intersection(*v)for k,v in a.items()},f:={},next([]for()in iter(list,0)if not a or([t.remove(g)for k,v in[*a.items()]if 1==len(v)and(f.setdefault(k,g:=[*v][0]),a.pop(k))for t in a.values()if g in t])*0))and",".join(x[1]for x in sorted(f.items()))),(lambda P:(p:=[[*map(int,x.split()[2:])]for x in P.split("\n\n")],next(0 for()in iter(list,0)if not(p[0]and p[1])or p[(x:=(k:=[p[0].pop(0),p[1].pop(0)])[0]d[0])].extend(d[::1-2*w])))and sum(x*(i+1)for i,x in enumerate((c(*[[*map(int,x.split()[2:])]for x in P.split("\n\n")])[1])[::-1]))),(lambda P,r=range:(n:=[*map(int,P)],S:=dict(zip(n,n[1:]+n[:1])),c:=n[0],[0 for _ in r(100)if(u:=S[(t:=S[(s:=S[(f:=S[c])])])],d:=next(k for i in r(2,7)if(k:=(c-i)%len(S)+1)not in(f,s,t)),[S.__setitem__(*x)for x in[(c,u),(t,S[d]),(d,f)]],c:=S[c])*0])and((k:=lambda x:x-1 and str(x)+k(S[x])or"")(S[1])),lambda P,r=range:(n:=[*map(int,P)],S:=[*r(1,1000002)],[S.__setitem__(*x)for x in zip([-1]+n,n+[len(n)+1])],c:=n[0],[0 for _ in r(10000000)if(u:=S[(t:=S[(s:=S[(f:=S[c])])])],d:=next(k for i in r(2,7)if(k:=(c-i)%(len(S)-1)+1)not in(f,s,t)),[S.__setitem__(*x)for x in[(c,u),(t,S[d]),(d,f)]],c:=S[c])*0])and(f:=S[1])*S[f]),(lambda P:(g:=(lambda l:((((t:=g(l[1:]))[0]+1-2*(l[0]=="w"),t[1])if l[0]in"ew"else((t:=g(l[2:]))[0]+(l[:2]=="se")-(l[:2]=="nw"),t[1]+1-2*(l[0]=="n")))if l else(0,0))),b:=set(),[b:=b^{g(l)}for l in P.splitlines()])and len(b),lambda P:(g:=(lambda l:((((t:=g(l[1:]))[0]+1-2*(l[0]=="w"),t[1])if l[0]in"ew"else((t:=g(l[2:]))[0]+(l[:2]=="se")-(l[:2]=="nw"),t[1]+1-2*(l[0]=="n")))if l else(0,0))),n:=(lambda x,y:{(x+p,y+q)for p,q in[(1,0),(-1,0),(1,1),(0,1),(0,-1),(-1,-1)]}),s:=set(),[s:=s^{g(l)}for l in P.splitlines()],[0 for _ in"_"*100if(f:=set(),F:=set(),[(a*(c not in(1,2))and f.add((x,y)),2==c*(1-a)and F.add((x,y)))for p,q in s for x,y in{(p,q)}|n(p,q)if(c:=len(s&n(x,y)),a:=(x,y)in s)],s:=s-f|F)])and len(s)),(lambda P,k=1,i=0:(n:=[*map(int,P.splitlines())],next(0 for()in iter(list,0)if k in n or(k:=(k*7)%20201227,i:=i+1)*0))and pow(n[1-n.index(k)],i,20201227),)],[(P:=print,i and P(),P(f"=== Day {i+1:02} ==="),P(f"Part 1:",a(p:=open(f"{i+1:02}.txt").read().strip())),b and P(f"Part 2:",b[0](p)))for i,(a,*b)in [*enumerate(O)]])