#include <stdio.h>
#include <string.h>
#include <ctype.h>

typedef struct str {
    int len;
    char s[80];
} str;

int comp(str* a, str* b)
{
    if (a->len<b->len) return -1;
    if (a->len>b->len) return 1;
    return strcmp(a->s, b->s);
}
    
void init(str* a) { a->len=0; memset(a->s, 0, sizeof(a->s)); }
void copy(str* a, str* b)
{
    a->len=b->len;
    memcpy(a->s, b->s, sizeof(a->s));
}
void add(int x, str* a)
{
    int i=a->len;
    for(i=a->len;i>0;--i) a->s[i]=a->s[i-1];
    a->s[0]=x;
    (a->len)++;
}

int c[80][80], w, h;
str memo[80][80];

str* func(int i, int j)
{
    str res;
    if (memo[i][j].len>0) return &memo[i][j];

    init(&res);
    if (i+1<h && c[i+1][j]>=0) {
        str t;
        copy(&t, func(i+1, j));
        if (comp(&res, &t)<0) copy(&res, &t);
    }
    if (j+1<w && c[i][j+1]>=0) {
        str t;
        copy(&t, func(i, j+1));
        if (comp(&res, &t)<0) copy(&res, &t);
    }
    add(c[i][j], &res);
    copy(&memo[i][j], &res);
    return &memo[i][j];
}

int main(void)
{
    while (scanf("%d%d", &w, &h), w) {
        int i, j;
        str res;
        memset(c, -1, sizeof(c));
        for(i=0;i<h;++i) {
            char s[80];
            scanf("%s", s);
            for(j=0;j<w;++j) if (isdigit(s[j])) c[i][j]=s[j];
        }

        for(i=0;i<h;++i) for(j=0;j<w;++j) init(&memo[i][j]);
        for(i=0;i<h;++i) for(j=0;j<w;++j)
            if (c[i][j]>'0' && !memo[i][j].len) func(i, j);

        init(&res);
        for(i=0;i<h;++i) for(j=0;j<w;++j)
            if (comp(&res, &memo[i][j])<0) copy(&res, &memo[i][j]);

        puts(res.s);
    }
    return 0;
}