#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define pii pair<ll,ll>
#define vi vector<ll>
#define vb vector<bool>
#define vvi vector<vi>
#define vpii vector<pii>
#define vvpii vector<vpii>
#define F first
#define S second
#define pb push_back
#define all(v) v.begin(),v.end()
#define fr(i, begin, end) for (__typeof(begin) i = (begin); i != (end) + ((begin) > (end) ? -1 : 1); (begin) > (end) ? i-- : i++)
#define rep(i,n) for(ll i=0; i<n; i++)
#define ret(msg) {cout << msg << endl; return;}
#define prt(a) cout << a << endl;
#define prt1(a) cout << a << " ";
#define prt2(a,b) cout << a << " " << b << endl;
#define popcnt(x) __builtin_popcountll(x)
#define uniq(s) s.erase(unique(s.begin(),s.end()),s.end())
#define mod 1000000007
#define MOD 998244353
#define double long double

void solve(){
    ll n, m;
    cin >> n >> m;
    vector<string> v(n);
    rep(i, n)cin >> v[i];
    bool rot = false;
    if(n > m){
        vector<string> v1(m);
        rep(j, m){
            string tmp = "";
            rep(i, n){
                tmp.pb(v[i][j]);
            }
            v1[j] = tmp;
        }
        v = v1;
        rot = true;
        swap(n, m);
    }
    vvi ans(n, vi(m, 1e9));
    for(int i = 0; i < n; i++)
    {
        vvi tmp(n, vi(m, 1e9));

        for(ll j = n - 1; j > i; j--)
        {
            ll col = -1;
            for(ll k = 0; k < m; k++)
            {
                if(v[i][k] == '1' && v[j][k] == '1')
                {
                    if(col == -1)
                    {
                        col = k;
                    }
                    else
                    {
                        ll area = (j - i + 1)*(k - col + 1);
                        for(ll k1 = col; k1 <= k; k1++)
                        {
                            tmp[j][k1] = min(tmp[j][k1], area);
                            // cols[k1].pb({i, j, area});
                        }
                        col = k;
                    }
                }
            }

        }

        for(ll j = n - 1; j >= i; j--)
        {
            for(ll k = 0; k < m; k++)
            {
                if(j + 1 < n) tmp[j][k] = min(tmp[j][k], tmp[j + 1][k]);
                ans[j][k] = min(ans[j][k], tmp[j][k]);
            }
        }

    }
    // vvi dp(n, vi(n, 1e9));
    // rep(i, m){
    //     for(auto a : cols[i]){
    //         dp[a[0]][a[1]] = min(dp[a[0]][a[1]], a[2]);
    //     }
    //     // rep(j, n){
    //     //     rep(k, n)prt1(dp[j][k]);
    //     //     cout << endl;
    //     // }
    //     for(ll len = n; len >= 1; len--){
    //         for(ll j = 0; j + len - 1 < n;j++){
    //             if(j > 0)dp[j][j + len - 1] = min(dp[j][j + len - 1], dp[j - 1][j + len - 1]);
    //             if(j + len - 1 < n - 1)dp[j][j + len - 1] = min(dp[j][j + len - 1], dp[j][j + len]);
    //         }
    //     }
    //     rep(j, n)ans[j][i] = dp[j][j];
    //     rep(j, n)rep(k, n)dp[j][k] = 1e9;
    // }
    if(rot){
        rep(j, m){
            rep(i, n)cout << (ans[i][j] == 1e9 ? 0 : ans[i][j]) << " ";
            cout << endl;
        }
        return;
    }
    rep(i, n){
        rep(j, m)cout << (ans[i][j] == 1e9 ? 0 : ans[i][j]) << " ";
        cout << endl;
    }
}

int32_t main() {
    //doo();
    // SOE(N);
    // SOE1(N);
    // pre();
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int t=1;
    cin >> t;
    // if(t == 2955){
    //     while(t--){
    //         ll n, m, k;
    //         cin >> n >> m >> k;
    //         if(t == 2955 - 37)cout << n << " " << m << " " << k << endl;
    //     }
    // }else{
    while(t--) {
        solve();
    }
    // }
}