R=range
def f(x,y,v):
d={}
for j in R(x*y):d[r]=d.get(r:=v.get(z:=(j//y,j%y),-1),[])+[z]
if any(i+1and len(d[i])-2for i in d):return 0
D=eval(str(d));M=max(d);del D[M][0];q=[(M,D,d[M][0],0)]
while q:
M,D,(j,k),C=q.pop(0)
if(j,k)in D[M]:
Y=eval(str(D));del Y[M];M=max(Y)
if~M:q+=(M,Y,Y[M][0],0),;del Y[M][0]
if{-1:[]}==Y:return 1
else:
for T in[(j-1,k),(j+1,k),(j,k+1),(j,k-1)]:
if T in D[-1]:Y=eval(str(D));Y[-1].remove(T);q+=(M,Y,T,C+1),
elif T in D[M]and C:q+=(M,D,T,C+1),
s1 = '5,5 0,0,0 3,0,1 1,1,2 1,2,2 4,2,1 4,4,0'
s2 = '5,2 2,0,1 0,1,2 4,1,2'
s3 = '4,2 0,0,0 3,0,0 0,1,0 3,1,0'
s4 = '8,6 0,0,1 7,5,1'
s5 = '2,5 0,0,1 2,0,6 4,0,6 0,1,4 3,1,4 4,1,1'
s6 = '6,3 1,0,4 5,0,1 0,1,4 1,1,3 5,1,3 0,2,2 3,2,2 5,2,1'
s7 = '5,2 0,0,1 3,0,1 0,1,3 4,1,1'
s8 = '2,2 0,0,0 1,1,0'
s9 = '5,5 0,3,0 0,4,1 1,2,2 1,3,1 2,0,0 3,0,4 3,1,2 3,3,5 3,4,4 4,4,5'
s10 = '13,13 1,1,0 9,1,1 10,1,2 11,1,3 1,2,4 2,2,5 5,2,6 7,2,7 3,3,0 5,4,6 6,4,1 9,6,3 4,7,8 5,8,9 12,8,8 11,9,10 2,10,4 4,10,2 9,10,5 11,10,7 1,11,9 12,12,10'
s11 = '7,7 0,0,0 0,1,1 1,1,2 2,1,3 4,2,4 0,3,1 5,3,3 0,4,4 2,4,5 5,4,2 0,5,0 1,5,5 3,5,6 3,7,6'
def to_inp(s):
a, *b = s.split()
return int(a.split(',')[1]),int(a.split(',')[0]), {(int(b),int(a)):int(c)for a, b, c in [i.split(',')for i in b]}
print(f(*to_inp(s1)))
print(f(*to_inp(s2)))
print(f(*to_inp(s3)))
#print(f(*to_inp(s4))) times out
print(f(*to_inp(s5)))
print(f(*to_inp(s6)))
print(f(*to_inp(s7)))
print(f(*to_inp(s8)))
print(f(*to_inp(s9)))
#print(f(*to_inp(s10))) #times out
print(f(*to_inp(s11)))
Uj1yYW5nZQpkZWYgZih4LHksdik6CiBkPXt9CiBmb3IgaiBpbiBSKHgqeSk6ZFtyXT1kLmdldChyOj12LmdldCh6Oj0oai8veSxqJXkpLC0xKSxbXSkrW3pdCiBpZiBhbnkoaSsxYW5kIGxlbihkW2ldKS0yZm9yIGkgaW4gZCk6cmV0dXJuIDAKIEQ9ZXZhbChzdHIoZCkpO009bWF4KGQpO2RlbCBEW01dWzBdO3E9WyhNLEQsZFtNXVswXSwwKV0KIHdoaWxlIHE6CiAgTSxELChqLGspLEM9cS5wb3AoMCkKICBpZihqLGspaW4gRFtNXToKICAgWT1ldmFsKHN0cihEKSk7ZGVsIFlbTV07TT1tYXgoWSkKICAgaWZ+TTpxKz0oTSxZLFlbTV1bMF0sMCksO2RlbCBZW01dWzBdCiAgIGlmey0xOltdfT09WTpyZXR1cm4gMQogIGVsc2U6CiAgIGZvciBUIGluWyhqLTEsayksKGorMSxrKSwoaixrKzEpLChqLGstMSldOgogICAgaWYgVCBpbiBEWy0xXTpZPWV2YWwoc3RyKEQpKTtZWy0xXS5yZW1vdmUoVCk7cSs9KE0sWSxULEMrMSksCiAgICBlbGlmIFQgaW4gRFtNXWFuZCBDOnErPShNLEQsVCxDKzEpLAogICAgCnMxID0gJzUsNSAwLDAsMCAzLDAsMSAxLDEsMiAxLDIsMiA0LDIsMSA0LDQsMCcKczIgPSAnNSwyIDIsMCwxIDAsMSwyIDQsMSwyJwpzMyA9ICc0LDIgMCwwLDAgMywwLDAgMCwxLDAgMywxLDAnCnM0ID0gJzgsNiAwLDAsMSA3LDUsMScKczUgPSAnMiw1IDAsMCwxIDIsMCw2IDQsMCw2IDAsMSw0IDMsMSw0IDQsMSwxJwpzNiA9ICc2LDMgMSwwLDQgNSwwLDEgMCwxLDQgMSwxLDMgNSwxLDMgMCwyLDIgMywyLDIgNSwyLDEnCnM3ID0gJzUsMiAwLDAsMSAzLDAsMSAwLDEsMyA0LDEsMScKczggPSAnMiwyIDAsMCwwIDEsMSwwJwpzOSA9ICc1LDUgMCwzLDAgMCw0LDEgMSwyLDIgMSwzLDEgMiwwLDAgMywwLDQgMywxLDIgMywzLDUgMyw0LDQgNCw0LDUnCnMxMCA9ICcxMywxMyAxLDEsMCA5LDEsMSAxMCwxLDIgMTEsMSwzIDEsMiw0IDIsMiw1IDUsMiw2IDcsMiw3IDMsMywwIDUsNCw2IDYsNCwxIDksNiwzIDQsNyw4IDUsOCw5IDEyLDgsOCAxMSw5LDEwIDIsMTAsNCA0LDEwLDIgOSwxMCw1IDExLDEwLDcgMSwxMSw5IDEyLDEyLDEwJwpzMTEgPSAnNyw3IDAsMCwwIDAsMSwxIDEsMSwyIDIsMSwzIDQsMiw0IDAsMywxIDUsMywzIDAsNCw0IDIsNCw1IDUsNCwyIDAsNSwwIDEsNSw1IDMsNSw2IDMsNyw2JwpkZWYgdG9faW5wKHMpOgoJYSwgKmIgPSBzLnNwbGl0KCkKCXJldHVybiBpbnQoYS5zcGxpdCgnLCcpWzFdKSxpbnQoYS5zcGxpdCgnLCcpWzBdKSwgeyhpbnQoYiksaW50KGEpKTppbnQoYylmb3IgYSwgYiwgYyBpbiBbaS5zcGxpdCgnLCcpZm9yIGkgaW4gYl19CgoKcHJpbnQoZigqdG9faW5wKHMxKSkpCnByaW50KGYoKnRvX2lucChzMikpKQpwcmludChmKCp0b19pbnAoczMpKSkKI3ByaW50KGYoKnRvX2lucChzNCkpKSB0aW1lcyBvdXQKcHJpbnQoZigqdG9faW5wKHM1KSkpCnByaW50KGYoKnRvX2lucChzNikpKQpwcmludChmKCp0b19pbnAoczcpKSkKcHJpbnQoZigqdG9faW5wKHM4KSkpCnByaW50KGYoKnRvX2lucChzOSkpKQojcHJpbnQoZigqdG9faW5wKHMxMCkpKSAjdGltZXMgb3V0CnByaW50KGYoKnRvX2lucChzMTEpKSk=