void dfs(int r, int c, int rows, int cols,vector<vector<char>> &board, vector<vector<int>> &vis){
// board[r][c]='Y';
vis[r][c]=1;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
for(int i=0;i<4;i++){
int nrow=r+dx[i];
int ncol=c+dy[i];
if(nrow>=0 && ncol>=0 && nrow<rows && ncol<cols && board[nrow][ncol]=='O' && vis[nrow][ncol]==0){
dfs(nrow,ncol,rows,cols,board,vis);
}
}
}
public:
void solve(vector<vector<char>>& board) {
int rows = board.size();
int cols = board[0].size();
vector<vector<int>> vis(rows,vector<int> (cols,0));
for(int i=0;i<rows;i++){
if(board[i][0]=='O'){
if(!vis[i][0]){
dfs(i,0,rows,cols,board,vis);
}
}
if(board[i][cols-1]=='O'){
// vis[i][0]=1;
if(!vis[i][cols-1]){
dfs(i,cols-1,rows,cols,board,vis);
}
}
}
for(int j=0;j<cols;j++){
if(board[0][j]=='O'){
// vis[i][0]=1;
if(!vis[0][j]){
dfs(0,j,rows,cols,board,vis);
}
}
if(board[rows-1][j]=='O'){
// vis[i][0]=1;
if(!vis[rows-1][j]){
dfs(rows-1,j,rows,cols,board,vis);
}
}
}
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
if(vis[i][j]==0 && board[i][j]=='O'){
board[i][j]='X';
}
}
}
}