#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 111;
const int maxnode = 111;
const double pi = acos(-1);
const double eps = 1e-8;
struct Point {
  double x, y;
  Point() {}
  Point(int x, int y) : x(x), y(y) {}
  void load() { scanf("%lf%lf", &x, &y); }
  void out() { printf("%.6f %.6f\n", x, y); }
  Point operator+(const Point &t) const { return Point(x + t.x, y + t.y); }
  Point operator-(const Point &t) const { return Point(x - t.x, y - t.y); }
  Point operator*(double t) const { return Point(x * t, y * t); }
  Point operator/(double t) const { return Point(x / t, y / t); }
  double dis(const Point &t) const {
    return sqrt(((x - t.x) * (x - t.x)) + ((y - t.y) * (y - t.y)));
  }
  double dis2(const Point &t) const {
    return ((x - t.x) * (x - t.x)) + ((y - t.y) * (y - t.y));
  }
  double len() const { return dis(Point(0, 0)); }
  double ang() const { return atan2(y, x); }
  double dot(const Point &t) const { return x * t.x + y * t.y; }
  double det(const Point &t) const { return x * t.y - y * t.x; }
  Point turnLeft() const { return Point(-y, x); }
  Point turnRight() const { return Point(y, -x); }
  bool operator==(const Point &t) const {
    return (fabs((x) - (t.x)) < eps ? 0 : ((x) > (t.x) ? 1 : -1)) == 0 &&
           (fabs((y) - (t.y)) < eps ? 0 : ((y) > (t.y) ? 1 : -1)) == 0;
  }
  bool operator<(const Point &t) const {
    return ((fabs((y) - (t.y)) < eps ? 0 : ((y) > (t.y) ? 1 : -1)) == -1 ||
            ((fabs((y) - (t.y)) < eps ? 0 : ((y) > (t.y) ? 1 : -1)) == 0 &&
             (fabs((x) - (t.x)) < eps ? 0 : ((x) > (t.x) ? 1 : -1)) == -1));
  }
};
struct Line {
  Point a, b;
  Line() {}
  Line(Point _a, Point _b) : a(_a), b(_b) {}
  Point intersect(const Line &t) const {
    double t1 = (b - a).det(t.a - a);
    double t2 = -(b - a).det(t.b - a);
    return (t.a * t2 + t.b * t1) / (t1 + t2);
  }
  bool par(const Line &t) const { return fabs((b - a).det(t.b - t.a)) < eps; }
};
double fix(double x) {
  while (x >= 2 * pi) {
    x -= 2 * pi;
  }
  while (x < 0) {
    x += 2 * pi;
  }
  return x;
};
vector<string> stk;
int isoperator(char a) {
  if (a == '+') return 10;
  if (a == '-') return 11;
  if (a == '*') return 12;
  if (a == '/') return 13;
  if (a == '(') return 14;
  if (a == ')') return 15;
  return 0;
}
map<string, int> innocence;
void isnumber(string str) {
  bool flag = 1;
  int ret = 0;
  for (int i = 0; i < (int)str.length(); ++i) {
    if (!isdigit(str[i])) {
      flag = 0;
      break;
    }
    ret = ret * 10 + str[i] - '0';
  }
  if (flag)
    innocence[str] = 1;
  else if (innocence.find(str) == innocence.end())
    innocence[str] = 1;
}
vector<int> cjh;
int WyWh(int l, int r) {
  int a, b;
  for (int i = r; i >= l; i--) {
    if (cjh[i] == 10) {
      a = WyWh(l, i - 1);
      b = WyWh(i + 1, r);
      if (a == 2 || b == 2) return 2;
      return 3;
    }
    if (cjh[i] == 11) {
      a = WyWh(l, i - 1);
      b = WyWh(i + 1, r);
      if (a == 2 || b == 2) return 2;
      if (b == 3) return 2;
      return 3;
    }
  }
  for (int i = r; i >= l; i--) {
    if (cjh[i] == 12) {
      a = WyWh(l, i - 1);
      b = WyWh(i + 1, r);
      if (a == 2 || b == 2) return 2;
      if (a == 3 || b == 3) return 2;
      return 4;
    }
    if (cjh[i] == 13) {
      a = WyWh(l, i - 1);
      b = WyWh(i + 1, r);
      if (a == 2 || b == 2) return 2;
      if (a == 3 || b == 3 || b == 4) return 2;
      return 4;
    }
  }
  return cjh[l];
}
int Complicated(int l, int r) {
  if (l == r) {
    if (isoperator(stk[l][0])) return isoperator(stk[l][0]);
    isnumber(stk[l]);
    return innocence[stk[l]];
  }
  vector<int> zcq;
  zcq.clear();
  for (int i = l, j = l, cnt = 0; i <= r; ++i) {
    if (stk[i][0] == '(') {
      cnt++;
      if (cnt == 1) j = i + 1;
      continue;
    }
    if (stk[i][0] == ')') {
      cnt--;
      if (cnt == 0) zcq.push_back(Complicated(j, i - 1) == 2 ? 2 : 1);
      continue;
    }
    if (cnt == 0) {
      zcq.push_back(Complicated(i, i));
    }
  }
  cjh.clear();
  for (int i = 0; i < ((int)(zcq).size()); ++i) cjh.push_back(zcq[i]);
  return WyWh(0, ((int)(cjh).size()) - 1);
}
int calc() {
  char buf;
  stk.clear();
  string strr;
  strr = "";
  do {
    scanf("%c", &buf);
    if (buf == '\n') {
      if (strr != "") stk.push_back(strr);
      break;
    }
    if (buf == ' ') continue;
    if (isoperator(buf)) {
      if (strr != "") stk.push_back(strr);
      strr = buf;
      stk.push_back(strr);
      strr = "";
    } else {
      strr = strr + buf;
    }
  } while (true);
  return Complicated(0, ((int)(stk).size()) - 1);
}
int main() {
  char str[maxn];
  string strr;
  int n;
  scanf("%d\n", &n);
  while (n--) {
    scanf("%s", str);
    if (strlen(str) == 1) scanf("%s", str);
    scanf("%s", str);
    strr = str;
    innocence[strr] = calc();
  }
  printf(calc() == 2 ? "Suspicious\n" : "OK\n");
}
