#include <bits/stdc++.h>
using namespace std;
map<string, int> m;
string s1;
char s2[1000], *s3;
bool flag;
int res[1000];
int gz(char a) {
  if (a == '+' || a == '-') return 0;
  return 2 - (a == '*' || a == '/');
}
void cmin(int &a, int b) {
  if (b < a) a = b;
}
void dfs() {
  int now, a, b, lst;
  for (s1 = "", now = -1;;)
    if (isalpha(*s3) || isdigit(*s3))
      s1.push_back(*(s3++));
    else {
      if (!s1.empty()) {
        a = res[m[s1]];
        s1 = "";
        flag &= (a > now || a == now && lst);
      } else
        a = 2;
      if (!*s3) return;
      if ((*s3) == '(') {
        s3++;
        dfs();
      } else if ((*s3) == ')') {
        s3++;
        return;
      } else {
        b = gz(*s3);
        if (b != 2) {
          flag &= (a >= b);
          now = b;
          lst = ((*s3) == '+' || (*s3) == '*');
        }
        s3++;
      }
    }
}
void dfs(int pre) {
  int now, a, b, lst;
  for (s1 = "", now = -1;;)
    if (isalpha(*s3) || isdigit(*s3))
      s1.push_back(*(s3++));
    else {
      if (!s1.empty()) {
        a = res[m[s1]];
        s1 = "";
        if (pre) cmin(res[pre], a);
        flag &= (a > now || a == now && lst);
      } else
        a = 2;
      if (!*s3) return;
      if ((*s3) == '(') {
        s3++;
        dfs(0);
      } else if ((*s3) == ')') {
        s3++;
        return;
      } else {
        b = gz(*s3);
        if (b != 2) {
          if (pre) cmin(res[pre], b);
          flag &= (a >= b);
          now = b;
          lst = ((*s3) == '+' || (*s3) == '*');
        }
        s3++;
      }
    }
}
int main() {
  int n, i;
  scanf("%d", &n), res[0] = 2;
  for (i = 1; i <= n; i++) {
    cin >> s1;
    if (s1 == "#") cin >> s1;
    cin >> s1;
    res[m[s1] = i] = 2;
    gets(s2);
    flag = true;
    s3 = s2;
    dfs(i);
    if (!flag) res[i] = -2;
  }
  gets(s2);
  flag = true;
  s3 = s2;
  dfs();
  puts(flag ? "OK" : "Suspicious");
  return 0;
}
