from queue import PriorityQueue
from collections import deque
def plan(T):
Plamy,Places=swap(T)
paliwo=Plamy[0]
i=1
flag=1
sum1=0
n=len(T[0])
Q=PriorityQueue()
while paliwo<n-1:
while i<len(Places) and Places[i]<=paliwo:
Q.put(-Plamy[Places[i]])
sum1+=(Plamy[Places[i]])
i+=1
quantity=Q.get()
paliwo-=quantity
flag+=1
return flag
def swap(T):
m=len(T)
n=len(T[0])
Plamy=[0 for _ in range(n)]
Places=[]
for i in range(n):
if T[0][i]!=0 :
sum=T[0][i]
T[0][i]=0
Q=deque()
Q.append((0,i))
while len(Q)!=0:
x,y=Q.popleft()
if x<m-1:
flag=x+1
if T[flag][y]!=0:
Q.append((flag,y))
sum+=T[flag][y]
T[flag][y]=0
if y<n-1:
flag=y+1
if T[x][flag]!=0:
Q.append((x,flag))
sum+=T[x][flag]
T[x][flag]=0
if x>0:
flag=x-1
if T[flag][y]!=0:
Q.append((flag,y))
sum+=T[flag][y]
T[flag][y]=0
if y>0:
flag=y=1
if T[x][flag]!=0:
Q.append((x,flag))
sum+=T[x][flag]
T[x][flag]=0
Plamy[i]=sum
Places.append(i)
return Plamy,Places
ZnJvbSBxdWV1ZSBpbXBvcnQgUHJpb3JpdHlRdWV1ZSAKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKCgpkZWYgcGxhbihUKToKICAgIFBsYW15LFBsYWNlcz1zd2FwKFQpCiAgICBwYWxpd289UGxhbXlbMF0KICAKICAKIAogICAgaT0xCiAgICBmbGFnPTEKICAgIHN1bTE9MAogICAgbj1sZW4oVFswXSkKICAgIFE9UHJpb3JpdHlRdWV1ZSgpCiAgICB3aGlsZSBwYWxpd288bi0xOgogICAgICAgCiAgICAgICAgd2hpbGUgaTxsZW4oUGxhY2VzKSBhbmQgUGxhY2VzW2ldPD1wYWxpd286CiAgICAgICAgICAgIFEucHV0KC1QbGFteVtQbGFjZXNbaV1dKQogICAgICAgICAgICBzdW0xKz0oUGxhbXlbUGxhY2VzW2ldXSkKICAgICAgICAgICAgaSs9MQogICAgICAgIHF1YW50aXR5PVEuZ2V0KCkKIAogICAgICAgIHBhbGl3by09cXVhbnRpdHkKICAgICAgICBmbGFnKz0xCiAgICAgICAKICAgICAgICAKCgoKICAgIHJldHVybiBmbGFnCgpkZWYgc3dhcChUKToKICAgIG09bGVuKFQpCiAgICBuPWxlbihUWzBdKQogICAgUGxhbXk9WzAgZm9yIF8gaW4gcmFuZ2UobildCiAgICBQbGFjZXM9W10KICAgICAgIAogICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgIAogICAgICAgIGlmIFRbMF1baV0hPTAgOgogICAgICAgICAgICBzdW09VFswXVtpXQogICAgICAgICAgICBUWzBdW2ldPTAKICAgICAgICAgICAgUT1kZXF1ZSgpCiAgICAgICAgICAgIFEuYXBwZW5kKCgwLGkpKQogICAgICAgICAgICB3aGlsZSBsZW4oUSkhPTA6CiAgICAgICAgICAgICAgICB4LHk9US5wb3BsZWZ0KCkKICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIHg8bS0xOgogICAgICAgICAgICAgICAgICAgIGZsYWc9eCsxCiAgICAgICAgICAgICAgICAgICAgaWYgVFtmbGFnXVt5XSE9MDoKICAgICAgICAgICAgICAgICAgICAgICAgUS5hcHBlbmQoKGZsYWcseSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHN1bSs9VFtmbGFnXVt5XQogICAgICAgICAgICAgICAgICAgICAgICBUW2ZsYWddW3ldPTAKICAgICAgICAgICAgICAgIGlmIHk8bi0xOgogICAgICAgICAgICAgICAgICAgIGZsYWc9eSsxCiAgICAgICAgICAgICAgICAgICAgaWYgVFt4XVtmbGFnXSE9MDoKICAgICAgICAgICAgICAgICAgICAgICAgUS5hcHBlbmQoKHgsZmxhZykpCiAgICAgICAgICAgICAgICAgICAgICAgIHN1bSs9VFt4XVtmbGFnXQogICAgICAgICAgICAgICAgICAgICAgICBUW3hdW2ZsYWddPTAKICAgICAgICAgICAgICAgIGlmIHg+MDoKICAgICAgICAgICAgICAgICAgICBmbGFnPXgtMQogICAgICAgICAgICAgICAgICAgIGlmIFRbZmxhZ11beV0hPTA6CiAgICAgICAgICAgICAgICAgICAgICAgIFEuYXBwZW5kKChmbGFnLHkpKQogICAgICAgICAgICAgICAgICAgICAgICBzdW0rPVRbZmxhZ11beV0KICAgICAgICAgICAgICAgICAgICAgICAgVFtmbGFnXVt5XT0wCiAgICAgICAgICAgICAgICBpZiB5PjA6CiAgICAgICAgICAgICAgICAgICAgZmxhZz15PTEKICAgICAgICAgICAgICAgICAgICBpZiBUW3hdW2ZsYWddIT0wOgogICAgICAgICAgICAgICAgICAgICAgICBRLmFwcGVuZCgoeCxmbGFnKSkKICAgICAgICAgICAgICAgICAgICAgICAgc3VtKz1UW3hdW2ZsYWddCiAgICAgICAgICAgICAgICAgICAgICAgIFRbeF1bZmxhZ109MAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAKICAgIAogICAgICAgICAKICAgICAgICAgICAgUGxhbXlbaV09c3VtCiAgICAgICAgICAgIFBsYWNlcy5hcHBlbmQoaSkKICAgIAogICAgcmV0dXJuIFBsYW15LFBsYWNlcw==