#include #include using namespace std; class BigInt { public: string num; BigInt() { num = ""; } BigInt(string n) { num = n; } BigInt operator+(const BigInt & b1) const { return BigInt(num + b1.num); } bool operator<(const BigInt & b1) const{ if(num.size() != b1.num.size()) { return num.size() < b1.num.size(); } return num < b1.num; } }; int main() { int h, w; while(cin >> w >> h && w && h) { BigInt table[h+1][w+1]; for(int i = 0; i < h; i++) { string line; cin >> line; for(int j = 0; j < w; j++) { if('0' <= line[j] && line[j] <= '9') { table[i][j].num = line[j]; } } } for(int i = h-1; i >= 0; i--) { for(int j = w-1; j >= 0; j--) { if(table[i][j].num != "") { table[i][j] = max(table[i][j] + table[i+1][j], table[i][j] + table[i][j+1]); } } } BigInt ans = BigInt(""); for(int i = 0; i < h; i++) { for(int j = 0; j < w; j++) { if(table[i][j].num != "" && !(table[i][j].num.size() >= 2 && table[i][j].num[0] == '0')) { ans = max(ans, table[i][j]); } } } cout << ans.num << endl; } }