#include <bits/stdc++.h>
using namespace std;
map<string, int> mp;
int SUS[200];
int sSUS[200][200];
string tokenStr;
int ans(int l, int r, vector<int> v) {
  if (l == r) return sSUS[l][r] = v[l];
  if (~sSUS[l][r]) {
    return sSUS[l][r];
  }
  int index = l + 1;
  for (int i = l + 1; i < r; i += 2) {
    if (!(v[index] <= 6 && v[i] >= 7)) index = i;
  }
  if (ans(l, index - 1, v) == 2 || ans(index + 1, r, v) == 2)
    return sSUS[l][r] = 2;
  if (v[index] == 5) return sSUS[l][r] = 3;
  if (v[index] == 6) {
    if (ans(index + 1, r, v) == 3)
      return sSUS[l][r] = 2;
    else
      return sSUS[l][r] = 3;
  }
  if (v[index] == 7) {
    if (ans(l, index - 1, v) == 3 || ans(index + 1, r, v) == 3)
      return sSUS[l][r] = 2;
    else
      return sSUS[l][r] = 4;
  }
  if (v[index] == 8) {
    if (ans(l, index - 1, v) == 3 || ans(index + 1, r, v) == 3 ||
        ans(index + 1, r, v) == 4)
      return sSUS[l][r] = 2;
    else
      return sSUS[l][r] = 4;
  }
}
int solve(int l, int r) {
  vector<int> v;
  v.clear();
  int last = -1, sus = 0, braFlag = 0;
  string curStr = "";
  for (int i = l; i <= r; i++) {
    if (i < r && (isalpha(tokenStr[i]) || isdigit(tokenStr[i])))
      curStr += tokenStr[i];
    else if (curStr != "") {
      if (!braFlag) {
        int index = -1, curSus = 1;
        if (mp.find(curStr) != mp.end()) {
          index = mp[curStr];
          curSus = SUS[index];
        }
        v.push_back(curSus);
      }
      curStr.clear();
    }
    if (i == r) break;
    if (tokenStr[i] == '(') {
      if (!braFlag) {
        last = i + 1;
      }
      braFlag++;
    } else if (tokenStr[i] == ')') {
      braFlag--;
      if (!braFlag) {
        int curSus = solve(last, i);
        if (curSus != 2) curSus = 1;
        v.push_back(curSus);
      }
    }
    if (!braFlag) {
      if (tokenStr[i] == '+')
        v.push_back(5);
      else if (tokenStr[i] == '-')
        v.push_back(6);
      else if (tokenStr[i] == '*')
        v.push_back(7);
      else if (tokenStr[i] == '/')
        v.push_back(8);
    }
  }
  memset(sSUS, -1, sizeof(sSUS));
  return ans(0, v.size() - 1, v);
}
int main() {
  int t;
  char oString[200];
  string temp;
  cin >> t;
  getchar();
  for (int i = 0; i < t; i++) {
    string str;
    gets(oString);
    istringstream oStream(oString);
    oStream >> str;
    if (str.size() == 1) oStream >> str;
    oStream >> str;
    tokenStr.clear();
    while (oStream >> temp) tokenStr += temp;
    SUS[i] = solve(0, tokenStr.size());
    mp[str] = i;
  }
  gets(oString);
  istringstream oStream(oString);
  tokenStr.clear();
  while (oStream >> temp) tokenStr += temp;
  if (solve(0, tokenStr.size()) == 2)
    puts("Suspicious");
  else
    puts("OK");
  return 0;
}
