import sys sys.setrecursionlimit(10000) def rec(i, j, k): if memo[i][j][k]!=-1: return memo[i][j][k] if i==0: memo[i][j][k] = A[j][k] return A[j][k] res = 0 for l in range(m): if res=0: #print(scores) ini = flag[cur_i][cur_j] loop = cnt+1-flag[cur_i][cur_j] #print(ini, loop) s1 = sum(scores[:ini]) s2 = sum(scores[ini:]) ans = max(ans, s1+(n-ini)//loop*s2+sum(scores[ini:ini+(n-ini)%loop])) break cnt += 1 flag[cur_i][cur_j] = cnt scores.append(A[cur_i][cur_j]) print(ans)