#include <iostream>
using namespace std;
int n,m,a[110][110],b[110][110];
bool f()
{
int ok=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==1)
{
if(a[i+1][j]==0) a[i+1][j]=-1;
if(a[i][j+1]==0) a[i][j+1]=-1;
}
if(a[i][j]==-1)
{
if(a[i+1][j]==0) a[i+1][j]=1;
if(a[i][j+1]==0) a[i][j+1]=1;
}
if(i<n && j<m && a[i+1][j]!=a[i][j+1])
{
ok=0;
break;
}
if(i==n && j<m && a[i][j]==a[i][j+1])
{
ok=0;
break;
}
if(i<n && j==m && a[i+1][j]==a[i][j])
{
ok=0;
break;
}
}
}
if(ok) return true;
else return false;
}
string s()
{
if(f()) return "Possible";
else return "Impossible";
}
int main()
{
char c;
while(cin>>n>>m)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>c;
if(c=='W') a[i][j]=1; //1是黑
else if(c=='B') a[i][j]=-1;//-1是白
else a[i][j]=0; //0是无
}
}
if(a[1][1]!=0) cout <<s()<<endl;
else
{
a[1][1]=1; //黑
if(!f())
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) b[i][j]=a[i][j];
}
a[1][1]=-1;//白
}
cout <<s()<<endl;
}
}
return 0;
}