func_code_string: #include<bits/stdc++.h>   using namespace std;   typedef long long ll;   const int MAXN=1e9+1;   const ll mod=1e9+7;      int main(){       ios_base::sync_with_stdio(false);       cin.tie(NULL);       cout.tie(NULL);        int n,m,k;       cin>>n>>m>>k;       int hori[n][m-1];       for(int i=0;i<n;i++){           for(int j=0;j<m-1;j++){               cin>>hori[i][j];           }       }       int verti[n-1][m];       for(int i=0;i<n-1;i++){           for(int j=0;j<m;j++){               cin>>verti[i][j];           }       }       if(k%2!=0){           for(int i=0;i<n;i++){               for(int j=0;j<m;j++)cout<< -1  ;               cout<<endl;           }           return 0;       }       k/=2;       int dp[n][m][k+1];       for(int i=0;i<n;i++){           for(int j=0;j<m;j++){               for(int step=0;step<=k;step++)dp[i][j][step]=MAXN;           }       }       for(int i=0;i<n;i++){           for(int j=0;j<m;j++)dp[i][j][0]=0;       }       for (int step = 0; step < k; step++) {               for (int i = 0; i < n; i++) {                   for (int j = 0; j < m; j++) {                       if (i > 0) dp[i - 1][j][step + 1] = min(dp[i - 1][j][step + 1], dp[i][j][step] + verti[i-1][j]);                       if (i < n - 1) dp[i + 1][j][step + 1] = min(dp[i + 1][j][step + 1], dp[i][j][step] + verti[i][j]);                       if (j > 0) dp[i][j - 1][step + 1] = min(dp[i][j - 1][step + 1], dp[i][j][step] + hori[i][j-1]);                       if (j < m - 1) dp[i][j + 1][step + 1] = min(dp[i][j + 1][step + 1], dp[i][j][step] + hori[i][j]);                   }               }           }       for(int i=0;i<n;i++){           for(int j=0;j<m;j++){               cout<<(2*dp[i][j][k])<<   ;           }           cout<<endl;       }              return 0;   }