#include <iostream>
#include <math.h>
#include <queue>
using namespace std;
#define Du 2147483647
int n;
char arr[1003][1003];
void read ()
{
cin>>n;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
cin>>arr[i][j];
}
}
}
long long F[1003][1003];
int check[1003][1003];
void init()
{
for (int i=0; i<=n; i++)
{
for (int j=0; j<=n; j++)
{
F[i][j] = 0;
check[i][j]=0;
}
}
}
long long count ()
{
F[1][0]=1;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
if (arr[i][j]=='.')
F[i][j]=(F[i-1][j]+F[i][j-1])%Du;
}
}
return F[n][n];
}
struct data
{
int i;
int j;
};
int x_xq[]={-1, +0, +1, +0};
int y_xq[]={+0, +1, +0, -1};
void BFS (int y, int x)
{
data tmp;
tmp.i = y;
tmp.j = x;
queue <data> q;
q.push(tmp);
check[y][x]=1;
while (!q.empty())
{
data u = q.front();
q.pop();
for (int i=0; i<4; i++)
{
int x_m = u.j+x_xq[i];
int y_m = u.i+y_xq[i];
if (x_m>=1 && x_m<=n && y_m>=1 && y_m<=n && check[y_m][x_m]==0 && arr[y_m][x_m]=='.')
{
tmp.i = y_m;
tmp.j = x_m;
q.push(tmp);
check[y_m][x_m] = 1;
}
}
}
}
int main ()
{
read();
init();
long long x = count();
if (x!=0)
cout<<x;
else
{
BFS(1, 1);
if (check[n][n]==1)
cout<<"THE GAME IS A LIE";
else
cout<<"INCONCEIVABLE";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIER1IDIxNDc0ODM2NDcKCmludCBuOwpjaGFyIGFyclsxMDAzXVsxMDAzXTsKdm9pZCByZWFkICgpCnsKICAgIGNpbj4+bjsKICAgIGZvciAoaW50IGk9MTsgaTw9bjsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGo9MTsgajw9bjsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgY2luPj5hcnJbaV1bal07CiAgICAgICAgfQogICAgfQp9Cgpsb25nIGxvbmcgRlsxMDAzXVsxMDAzXTsKaW50IGNoZWNrWzEwMDNdWzEwMDNdOwp2b2lkIGluaXQoKQp7CiAgICBmb3IgKGludCBpPTA7IGk8PW47IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBqPTA7IGo8PW47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIEZbaV1bal0gPSAwOwogICAgICAgICAgICBjaGVja1tpXVtqXT0wOwogICAgICAgIH0KICAgIH0KfQpsb25nIGxvbmcgY291bnQgKCkKewogICAgRlsxXVswXT0xOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaj0xOyBqPD1uOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoYXJyW2ldW2pdPT0nLicpCiAgICAgICAgICAgICAgICBGW2ldW2pdPShGW2ktMV1bal0rRltpXVtqLTFdKSVEdTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gRltuXVtuXTsKfQoKc3RydWN0IGRhdGEKewogICAgaW50IGk7CiAgICBpbnQgajsKfTsKCmludCB4X3hxW109ey0xLCArMCwgKzEsICswfTsKaW50IHlfeHFbXT17KzAsICsxLCArMCwgLTF9OwoKCnZvaWQgQkZTIChpbnQgeSwgaW50IHgpCnsKICAgIGRhdGEgdG1wOwogICAgdG1wLmkgPSB5OwogICAgdG1wLmogPSB4OwogICAgcXVldWUgPGRhdGE+IHE7CiAgICBxLnB1c2godG1wKTsKICAgIGNoZWNrW3ldW3hdPTE7CiAgICB3aGlsZSAoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBkYXRhIHUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IgKGludCBpPTA7IGk8NDsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHhfbSA9IHUuait4X3hxW2ldOwogICAgICAgICAgICBpbnQgeV9tID0gdS5pK3lfeHFbaV07CiAgICAgICAgICAgIGlmICh4X20+PTEgJiYgeF9tPD1uICYmIHlfbT49MSAmJiB5X208PW4gJiYgY2hlY2tbeV9tXVt4X21dPT0wICYmIGFyclt5X21dW3hfbV09PScuJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdG1wLmkgPSB5X207CiAgICAgICAgICAgICAgICB0bXAuaiA9IHhfbTsKICAgICAgICAgICAgICAgIHEucHVzaCh0bXApOwogICAgICAgICAgICAgICAgY2hlY2tbeV9tXVt4X21dID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4gKCkKewogICAgcmVhZCgpOwogICAgaW5pdCgpOwogICAgbG9uZyBsb25nIHggPSBjb3VudCgpOwogICAgaWYgKHghPTApCiAgICAgICAgY291dDw8eDsKICAgIGVsc2UKICAgIHsKICAgICAgICBCRlMoMSwgMSk7CiAgICAgICAgaWYgKGNoZWNrW25dW25dPT0xKQogICAgICAgICAgICBjb3V0PDwiVEhFIEdBTUUgSVMgQSBMSUUiOwogICAgICAgIGVsc2UKICAgICAgICAgICAgY291dDw8IklOQ09OQ0VJVkFCTEUiOwogICAgfQogICAgcmV0dXJuIDA7Cn0=