#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int dx[]={0,-1,1,0};
int dy[]={-1,0,0,1};

int W,H,M;
double tgx,tg;
char f[500][500];
int v[500][500];
bool g[500][500];
bool h[500][500];
bool b[500];
int lx[500],rx[500];
double gx[500];
int n[500];

void paint(int x, int y, char c, int t)
{
	if(h[x][y]) return;
	if(f[x][y]!=c) return;

	v[x][y]=t;
	h[x][y]=1;

	for(int i=0; i<4; i++)
	{
		int tx=x+dx[i], ty=y+dy[i];
		if(ty==H) b[t]=1;
		if(tx<0||ty<0||tx>=W||ty>=H) continue;		
		paint(tx,ty,c,t);
	}
}

void connect(int x, int y, int c)
{
	if(h[x][y]) return;
	if(v[x][y]!=c) return;

	h[x][y]=1;

	for(int i=0; i<4; i++)
	{
		int tx=x+dx[i], ty=y+dy[i];
		if(ty==H)
		{
			lx[c]=min(lx[c], tx);
			rx[c]=max(rx[c], tx);
		}
		if(tx<0||ty<0||tx>=W||ty>=H) continue;
		if(i==0&&v[tx][ty]!=c&&v[tx][ty]!=-1) g[c][v[tx][ty]]=1;
		if(i==3&&v[tx][ty]!=c&&v[tx][ty]!=-1)
		{
			lx[c]=min(lx[c], tx);
			rx[c]=max(rx[c], tx);
		}
		connect(tx,ty,c);
	}
}

int center(int x, int y, int c)
{
	if(h[x][y]) return 0;
	if(v[x][y]!=c) return 0;

	h[x][y]=1;
	gx[c]+=x+0.5;
	int ret=1;

	for(int i=0; i<4; i++)
	{
		int tx=x+dx[i], ty=y+dy[i];
		if(tx<0||ty<0||tx>=W||ty>=H) continue;
		ret+=center(tx,ty,c);
	}

	return ret;
}

void calc(int c)
{
	tgx +=gx[c];
	tg  +=n[c];
	for(int i=0; i<M; i++)
		if(g[c][i]) calc(i);	

}

bool ok(int c)
{
	tgx=tg=0;
	calc(c);
	double t = 1.0*tgx/tg;

	return (lx[c] < t && t < rx[c]+1);
}

int main()
{
	while(cin >> W >> H, (W||H))
	{
		M=0;
		memset(h,0,sizeof(h));
		memset(b,0,sizeof(b));
		memset(g,0,sizeof(g));
		memset(gx,0,sizeof(gx));

		for(int i=0; i<H; i++)
		for(int j=0; j<W; j++)
		{
			cin >> f[j][i];
			v[j][i]=-1;
		}

		for(int i=0; i<H; i++)
		for(int j=0; j<W; j++)
		if(f[j][i]!='.'&&h[j][i]!=1)
		{
			paint(j,i,f[j][i],M);
			++M;
		}

		for(int i=0; i<M; i++)
		{
			lx[i]=(1<<25);
			rx[i]=-1;
		}

		memset(h,0,sizeof(h));
		for(int i=0; i<H; i++)
		for(int j=0; j<W; j++)
			if(f[j][i]!='.') connect(j,i,v[j][i]);

		memset(h,0,sizeof(h));
		for(int i=0; i<H; i++)
		for(int j=0; j<W; j++)
			if(f[j][i]!='.'&&h[j][i]!=1) n[v[j][i]]=center(j,i,v[j][i]);

		
		bool gd=true;
		for(int i=0; i<M; i++)
			gd&=ok(i);

		cout << (gd?"":"UN") << "STABLE" << endl;					 	
	}
}