Rat in a maze output issue

The ide is not working
My output is slighlty different form the required. The rat is not going to the end cell as required and I only want one solution for this case. How to stop the program after one printing
#include
#include
using namespace std;
bool ratInMaze(char a[][1000],int sol[][1000],int i,int j,int m,int n){
//base case
if(i==m && j==n)
{
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++)
cout<<sol[i][j]<<" “;
cout<<endl;
}
cout<<endl;
return true;
}
//rec
if(i>m ||j>n)
return false;
if(a[i][j]==‘X’)
return false;
sol[i][j]=1;
bool right=ratInMaze(a,sol,i,j+1,m,n);
bool left=ratInMaze(a,sol,i+1,j,m,n);
//backtracking
sol[i][j]=0;
if(right||left)
return true;
return false;
}
int main() {
int m,n;
cin>>m>>n;
char a[1000][1000];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
int sol[1000][1000]={0};
bool ans= ratInMaze(a,sol,0,0,m-1,n-1);
if(ans==false)
cout<<”-1"<<endl;
return 0;
}

if(i==m && j==n)
{
sol[i][j]=1;
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++)
cout<<sol[i][j]<<" ";
cout<<endl;
}
cout<<endl;
return true;
}

just write sol[i][j]=1; inside loop

only 1 test case passed. 4 wron ganswers and 1 TLE

sol[i][j]=1;
bool right=ratInMaze(a,sol,i,j+1,m,n);
if(right)return true;
bool left=ratInMaze(a,sol,i+1,j,m,n);
//backtracking
sol[i][j]=0;
return left;
do these changes
because in your code all possible combination will gentrate but you have to print only one so
if right part gives us true means that it reach at end and print one combination so no need to move on left

done with changes still printing all outputs
#include
#include
using namespace std;
bool ratInMaze(char a[][1000],int sol[][1000],int i,int j,int m,int n){
//base case
if(i==m && j==n)
{ sol[i][j]=1;
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++)
cout<<sol[i][j]<<" ";
cout<<endl;
}
cout<<endl;

    }
//rec
if(i>m ||j>n)
    return false;
if(a[i][j]=='X')
    return false;
sol[i][j]=1;
bool right=ratInMaze(a,sol,i,j+1,m,n);
if(right)
    return true;

    bool left=ratInMaze(a,sol,i+1,j,m,n);

//backtracking
sol[i][j]=0;

    return left;

}
int main() {
int m,n;
cin>>m>>n;
char a[1000][1000];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
int sol[1000][1000]={0};
bool ans= ratInMaze(a,sol,0,0,m-1,n-1);
if(ans==false)
cout<<"-1"<<endl;
return 0;
}

#include
//#include
using namespace std;
bool ratInMaze(char a[][1000],int sol[][1000],int i,int j,int m,int n){
//base case
if(i==m && j==n)
{ sol[i][j]=1;
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++)
cout<<sol[i][j]<<" ";
cout<<endl;
}
cout<<endl;
return true;
}
//rec
if(i>m ||j>n)
return false;
if(a[i][j]==‘X’)
return false;
sol[i][j]=1;
bool right=ratInMaze(a,sol,i,j+1,m,n);
if(right)
return true;
bool left=ratInMaze(a,sol,i+1,j,m,n);
//backtracking
sol[i][j]=0;
return left;

}
int main() {
int m,n;
cin>>m>>n;
char a[1000][1000];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
int sol[1000][1000]={0};
bool ans= ratInMaze(a,sol,0,0,m-1,n-1);
if(ans==false)
cout<<"-1"<<endl;

return 0;
}

bold one is your mistake