#include using namespace std; int di[] = {1, 0}; int dj[] = {0, 1}; inline void min_self(string &a, string &b) { if (b < a) { a = b; } } int main() { iostream::sync_with_stdio(0), cin.tie(0), cout.tie(0); int h, w; cin >> h >> w; vector grid(h); for (int i = 0; i < h; i++) { cin >> grid[i]; } vector dp(h, vector(w, "{")); dp[0][0] = ""; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { string nst = dp[i][j] + grid[i][j]; for (int k = 0; k < 2; k++) { int ni = i + di[k], nj = j + dj[k]; if (ni < h && nj < w) { min_self(dp[ni][nj], nst); } } } } string ans = dp[h - 1][w - 1]; ans += grid[h - 1][w - 1]; cout << ans << '\n'; return 0; }