#include <bits/stdc++.h>
using namespace std;
char buf[1000];
int N;
map<string, int> mask;
string expr;
int operind[256];
inline int addsus(int typ, int ret) {
  if (!(ret & 16)) {
    if (((ret & 2) && (typ & 4)) || ((ret & 2) && typ == 3) ||
        ((ret & 4) && typ == 5))
      ret |= 16;
  }
  return ret;
}
int Dfs(int typ, string s) {
  if (mask.find(s) != mask.end()) return addsus(typ, mask[s]);
  int brk = 0;
  for (int i = s.size() - 1; i >= 0; --i)
    if (s[i] == '(')
      --brk;
    else if (s[i] == ')')
      ++brk;
    else if (!brk && (operind[s[i]] & 2)) {
      int ret = operind[s[i]];
      if ((Dfs(operind[s[i]] | 8, s.substr(0, i)) & 16) ||
          (Dfs(operind[s[i]], s.substr(i + 1, s.size() - i - 1)) & 16))
        ret |= 16;
      return addsus(typ, ret);
    }
  brk = 0;
  for (int i = s.size() - 1; i >= 0; --i)
    if (s[i] == '(')
      --brk;
    else if (s[i] == ')')
      ++brk;
    else if (!brk && (operind[s[i]] & 4)) {
      int ret = operind[s[i]];
      if ((Dfs(operind[s[i]] | 8, s.substr(0, i)) & 16) ||
          (Dfs(operind[s[i]], s.substr(i + 1, s.size() - i - 1)) & 16))
        ret |= 16;
      return addsus(typ, ret);
    }
  if (s[0] == '(' && s[s.size() - 1] == ')') {
    int ret = 1;
    if (Dfs(1, s.substr(1, s.size() - 2)) & 16) ret |= 16;
    return addsus(typ, ret);
  }
  return 1;
}
int main() {
  operind['+'] = 2;
  operind['-'] = 3;
  operind['*'] = 4;
  operind['/'] = 5;
  sscanf(gets(buf), "%d", &N);
  mask.clear();
  for (int i = 0; i < N; ++i) {
    gets(buf);
    istringstream sin(buf);
    string t, v, u;
    while (sin >> t, t != "define" && t != "#define")
      ;
    sin >> t;
    v = "";
    while (sin >> u) v += u;
    mask[t] = Dfs(1, v);
  }
  gets(buf);
  int L = strlen(buf);
  expr.clear();
  for (int i = 0; i < L; ++i)
    if (!isspace(buf[i])) expr.push_back(buf[i]);
  if (Dfs(1, expr) & 16)
    puts("Suspicious");
  else
    puts("OK");
}
