#include<bits/stdc++.h>
using namespace std;

vector<vector<char> > t;
vector<bool> kot;
int n, m;

void flip(int x, int y){
    if(x < 0 || y < 0 || x >= n || y >= m)
        return;
    t[x][y] = 'X';
}

void solve(){

    cin >> n >> m;
    t.assign(n, vector<char>(m, '.'));
    kot.assign(n, 0);

    int add = (n % 3 != 1);

    for(int i = add; i < n; i += 3)
        fill(t[i].begin(), t[i].end(), 'X');

    for(int i = 0; i < n; i++){
        string s;
        cin >> s;
        if((3 + i - add) % 3 == 0)
            continue;

        for(int j = 0; j < m; j++){
            if(s[j] == 'X')
                t[i][j] = s[j];
            if(i >= add && s[j] == 'X' && !kot[(i - add) / 3]){
                kot[(i - add) / 3] = 1;
                //cout << "most: " << (i - add) / 3 << ' ' << i << ' ' << j << '\n';
                flip(i, j);
                flip(i+1, j);
                flip(i-1, j);
            }
        }
    }

    for(int i = 0; i < n; i++){
        if(!kot[i]){
            flip(i*3 + add + 1, 0);
            flip(i*3 + add + 2, 0);
        }
    }

    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++)
            cout << t[i][j];
        cout << '\n';
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int w;
    cin >> w;
    while(w--) solve();
}
