#include <bits/stdc++.h>
using namespace std;
template <class C>
void mini(C &a4, C b4) {
  a4 = min(a4, b4);
}
template <class C>
void maxi(C &a4, C b4) {
  a4 = max(a4, b4);
}
template <typename T1, typename T2>
ostream &operator<<(ostream &out, pair<T1, T2> pair) {
  out << "(" << pair.first << ", " << pair.second << ")";
  return out;
}
const int unsafe = 0;
const int sum = 1;
const int mul = 2;
const int con = 3;
unordered_map<string, int> macros;
void trim(const string &exp, int &pos) {
  while ((pos < (int)exp.length()) && (exp[pos] == ' ')) ++pos;
}
bool isAlpha(char c) {
  if ((c >= 'a') && (c <= 'z')) return true;
  if ((c >= 'A') && (c <= 'Z')) return true;
  return false;
}
int parseAlpha(const string &exp, int &pos) {
  int qos = pos;
  while ((qos < (int)exp.length()) && isAlpha(exp[qos])) ++qos;
  string name = exp.substr(pos, qos - pos);
  pos = qos;
  auto it = macros.find(name);
  if (it == macros.end()) {
    return con;
  }
  return it->second;
}
int parseExp(const string &exp, int &pos);
int parseConst(const string &exp, int &pos) {
  trim(exp, pos);
  if (exp[pos] == '(') {
    ++pos;
    trim(exp, pos);
    int op = parseExp(exp, pos);
    trim(exp, pos);
    ++pos;
    if (op == unsafe) return unsafe;
    return con;
  }
  if ((exp[pos] >= '0') && (exp[pos] <= '9')) {
    while ((pos < (int)exp.length()) && (exp[pos] >= '0') && (exp[pos] <= '9'))
      ++pos;
    return con;
  }
  return parseAlpha(exp, pos);
}
int parseExp(const string &exp, int &pos) {
  char left, right = '.';
  int result = con;
  while (true) {
    left = right;
    trim(exp, pos);
    int op = parseConst(exp, pos);
    mini(result, op);
    trim(exp, pos);
    if (pos < (int)exp.length()) {
      right = exp[pos];
    } else {
      right = '.';
    }
    switch (left) {
      case '/':
        if (op == mul) result = unsafe;
      case '*':
      case '-':
        if (op == sum) result = unsafe;
    }
    switch (right) {
      case '/':
      case '*':
        if (op == sum) result = unsafe;
    }
    if (right == '.' || right == ')') break;
    switch (right) {
      case '*':
      case '/':
        mini(result, mul);
        break;
      case '+':
      case '-':
        mini(result, sum);
        break;
    }
    ++pos;
  }
  return result;
}
int parseExp(const string &exp) {
  int pos = 0;
  return parseExp(exp, pos);
}
int main() {
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(10);
  int n;
  cin >> n;
  for (int i = 0; i < (n); ++i) {
    string define, name, exp;
    cin >> define;
    if (define == "#") cin >> define;
    cin >> name;
    getline(cin, exp);
    macros[name] = parseExp(exp);
  }
  string exp;
  getline(cin, exp);
  if (parseExp(exp) == unsafe) {
    cout << "Suspicious" << endl;
  } else {
    cout << "OK" << endl;
  }
  return 0;
}
