#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
#define pf printf
#define sf scanf
#define loop(i, n) for(i=0; i<(n); i++)
#define MAX 105
typedef long long ll;
char a[MAX][MAX];
int d1[] = {0 , 0 , 1, -1};
int d2[] = {1, -1, 0, 0};
int n;
bool valid(int x, int y)
{
return (x>=0 && x<n && y>=0 && y<n);
}
int main()
{
int i, j, k;
int x, y, cnt=0, flag=1;
sf("%d", &n);
loop(i, n)
sf("%s", a[i]);
loop(i, n)
{
loop(j, n)
{
loop(k, 4)
{
x = d1[k] + i;
y = d2[k] + j;
if(!valid(x, y))
continue;
if(a[x][y]== 'o')
cnt++;
}
if(cnt & 1)
{
flag = 0;
i = j = n+n;
}
}
}
if(flag==1)
pf("YES\n");
else
pf("NO\n");
return 0;
}
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
#define pf printf
#define sf scanf
#define loop(i, n) for(i=0; i<(n); i++)
#define MAX 105
typedef long long ll;
char a[MAX][MAX];
int d1[] = {0 , 0 , 1, -1};
int d2[] = {1, -1, 0, 0};
int n;
bool valid(int x, int y)
{
return (x>=0 && x<n && y>=0 && y<n);
}
int main()
{
int i, j, k;
int x, y, cnt=0, flag=1;
sf("%d", &n);
loop(i, n)
sf("%s", a[i]);
loop(i, n)
{
loop(j, n)
{
loop(k, 4)
{
x = d1[k] + i;
y = d2[k] + j;
if(!valid(x, y))
continue;
if(a[x][y]== 'o')
cnt++;
}
if(cnt & 1)
{
flag = 0;
i = j = n+n;
}
}
}
if(flag==1)
pf("YES\n");
else
pf("NO\n");
return 0;
}