- #include <iostream> 
- #include <iomanip> 
-   
- using namespace std; 
-   
- int main() 
- { 
-     int n(0),m(0); 
-     cin >> n >> m; 
-     int matrix[n][m]; 
-     char arr[n][m]; 
-     arr[0][0] = '0'; 
-     for(int i = 0;i<n;++i){ 
-         for(int j = 0;j<m;++j){ 
-             cin >> matrix[i][j]; 
-             if(!i && !j)continue; 
-             if(!i){ 
-                 matrix[i][j] += matrix[i][j-1]; 
-                 arr[i][j] = 'R'; 
-             } 
-             if(!j){ 
-                 matrix[i][j] += matrix[i-1][j]; 
-                 arr[i][j] = 'D'; 
-             } 
-             if(i && j){ 
-                 matrix[i][j] += max(matrix[i-1][j],matrix[i][j-1]); 
-                 if(max(matrix[i-1][j],matrix[i][j-1]) == matrix[i-1][j])arr[i][j] = 'D'; 
-                 else arr[i][j] = 'R'; 
-             } 
-         } 
-     } 
-     cout << matrix[n-1][m-1]; 
-     cout << "\n"; 
-   
-     string s; 
-     for(int i = n-1;;){ 
-         for(int j = m-1;;){ 
-             if(arr[i][j] == '0'){ 
-                 s.reserve(); 
-                 cout << s << endl; 
-                 return 0; 
-             } 
-             s.push_back(arr[i][j]); 
-             s.push_back(' '); 
-             if(arr[i][j] == 'R'){ 
-                 j -= 1; 
-                 continue; 
-             } 
-             if(arr[i][j] == 'D'){ 
-                 i -= 1; 
-                 continue; 
-             } 
-         } 
-     } 
-   
-     cout << endl; 
-     return 0; 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIGludCBuKDApLG0oMCk7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgaW50IG1hdHJpeFtuXVttXTsKICAgIGNoYXIgYXJyW25dW21dOwogICAgYXJyWzBdWzBdID0gJzAnOwogICAgZm9yKGludCBpID0gMDtpPG47KytpKXsKICAgICAgICBmb3IoaW50IGogPSAwO2o8bTsrK2opewogICAgICAgICAgICBjaW4gPj4gbWF0cml4W2ldW2pdOwogICAgICAgICAgICBpZighaSAmJiAhailjb250aW51ZTsKICAgICAgICAgICAgaWYoIWkpewogICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdICs9IG1hdHJpeFtpXVtqLTFdOwogICAgICAgICAgICAgICAgYXJyW2ldW2pdID0gJ1InOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCFqKXsKICAgICAgICAgICAgICAgIG1hdHJpeFtpXVtqXSArPSBtYXRyaXhbaS0xXVtqXTsKICAgICAgICAgICAgICAgIGFycltpXVtqXSA9ICdEJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihpICYmIGopewogICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdICs9IG1heChtYXRyaXhbaS0xXVtqXSxtYXRyaXhbaV1bai0xXSk7CiAgICAgICAgICAgICAgICBpZihtYXgobWF0cml4W2ktMV1bal0sbWF0cml4W2ldW2otMV0pID09IG1hdHJpeFtpLTFdW2pdKWFycltpXVtqXSA9ICdEJzsKICAgICAgICAgICAgICAgIGVsc2UgYXJyW2ldW2pdID0gJ1InOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBtYXRyaXhbbi0xXVttLTFdOwogICAgY291dCA8PCAiXG4iOwoKICAgIHN0cmluZyBzOwogICAgZm9yKGludCBpID0gbi0xOzspewogICAgICAgIGZvcihpbnQgaiA9IG0tMTs7KXsKICAgICAgICAgICAgaWYoYXJyW2ldW2pdID09ICcwJyl7CiAgICAgICAgICAgICAgICBzLnJlc2VydmUoKTsKICAgICAgICAgICAgICAgIGNvdXQgPDwgcyA8PCBlbmRsOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcy5wdXNoX2JhY2soYXJyW2ldW2pdKTsKICAgICAgICAgICAgcy5wdXNoX2JhY2soJyAnKTsKICAgICAgICAgICAgaWYoYXJyW2ldW2pdID09ICdSJyl7CiAgICAgICAgICAgICAgICBqIC09IDE7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihhcnJbaV1bal0gPT0gJ0QnKXsKICAgICAgICAgICAgICAgIGkgLT0gMTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==