#include <bits/stdc++.h>
using namespace std;
const int MAX = 205;
int N, ptr, type[MAX];
stringstream ss;
map<string, int> MP;
char second[MAX];
stack<int> S;
string Exp;
inline int getid(string& t) {
  if (MP.find(t) == MP.end()) return -1;
  return MP[t];
}
int fnd(char c) {
  if (c == '*' || c == '/') return 2;
  if (c == '+' || c == '-') return 1;
  return 0;
}
int dfs(int l, int r) {
  int tag = 0, pos = -1;
  for (int i = r; i >= l; i--) {
    if (Exp[i] == ')')
      tag--;
    else if (Exp[i] == '(')
      tag++;
    if (!tag && pos == -1 && (Exp[i] == '*' || Exp[i] == '/')) pos = i;
    if (!tag && (Exp[i] == '+' || Exp[i] == '-')) {
      int t1 = dfs(l, i - 1);
      int t2 = dfs(i + 1, r);
      if (!t1 || !t2) return 0;
      if (Exp[i] == '+') return 1;
      if (t2 == 1 || t2 == 2) return 0;
      return 2;
    }
  }
  if (pos == -1) {
    if (Exp[l] == '(' && Exp[r] == ')') {
      int t = dfs(l + 1, r - 1);
      if (!t) return 0;
      return 5;
    }
    string ins = Exp.substr(l, r - l + 1);
    int id = getid(ins);
    if (id == -1) return 5;
    return type[id];
  } else {
    int t1 = dfs(l, pos - 1), t2 = dfs(pos + 1, r);
    if (!t1 || !t2) return 0;
    if (Exp[pos] == '*' && (t2 == 1 || t2 == 2 || t1 == 1 || t1 == 2)) return 0;
    if (Exp[pos] == '/' &&
        (t2 == 1 || t2 == 2 || t2 == 3 || t2 == 4 || t1 == 1 || t1 == 2))
      return 0;
    if (Exp[pos] == '*') return 3;
    return 4;
  }
}
void read(int id) {
  Exp = "";
  gets(second);
  ss.clear();
  ss << second;
  string tmp = "", nme, t;
  while (tmp != "#define") ss >> t, tmp += t;
  ss >> nme;
  while (ss >> tmp) Exp += tmp;
  MP[nme] = id;
  type[id] = dfs(0, Exp.size() - 1);
}
int main() {
  scanf("%d", &N);
  gets(second);
  for (int i = 0; i < (N); i++) read(i);
  gets(second);
  ss.clear();
  ss << second;
  string tmp;
  Exp = "";
  while (ss >> tmp) Exp += tmp;
  int t = dfs(0, Exp.size() - 1);
  if (!t)
    puts("Suspicious");
  else
    puts("OK");
  return 0;
}
