#include using namespace std; const int maxn=210; int n,m,num; int a[maxn]; bool loop,ok[maxn],vis[maxn]; string s[maxn]; struct node { int id,sign; node(int id=0,int sign=0):id(id),sign(sign){} }; vector ex[maxn]; int dfs(int cur) { if(!ok[cur]) { loop=true; return 0; } if(ex[cur].empty()) return a[cur]; if(vis[cur]) { ok[cur]=false; loop=true; return 0; } vis[cur]=true; for(int i=0;i>n>>m&&n&&m) { loop=false; memset(a,0,sizeof(a)); memset(ok,1,sizeof(ok)); memset(vis,0,sizeof(vis)); int num=n*m; for(int i=0;i>s[i]; string k=s[i]; vector sign; if(k[0]=='-') sign.push_back(-1); else sign.push_back(1); for(int j=0;j>k) { if(isdigit(k[0])) { istringstream tmp(k); int cur; tmp>>cur; a[i]+=cur*sign[pos++]; } else ex[i].push_back(node((k[0]-'A')*m+(k[1]-'0'),sign[pos++])); } } for(int i=0;i