#include <bits/stdc++.h>
using namespace std;
bool T(vector<long long>);
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline long long int rand(long long int x, long long int y) {
  ++y;
  return (rng() % (y - x)) + x;
}
string to_string(char c) {
  string second(1, c);
  return second;
}
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += "}";
  return res;
}
void degug_out() { cerr << endl; }
template <typename Head, typename... Tail>
void degug_out(Head H, Tail... T) {
  cerr << " " << to_string(H);
  degug_out(T...);
}
inline long long int gcd(long long int a, long long int b) {
  if (a > b) swap(a, b);
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long int n;
vector<long long int> A;
long long int check_lose(vector<long long int> A, bool first) {
  if (*max_element((A).begin(), (A).end()) == 0 ||
      *min_element((A).begin(), (A).end()) < 0)
    return 1;
  if (first) return 0;
  long long int hi = A.size();
  sort((A).begin(), (A).end());
  A.resize(unique((A).begin(), (A).end()) - A.begin());
  if (A.size() != hi) return 1;
  return 0;
}
bool first = 1;
bool C(vector<long long int> A) {
  if (check_lose(A, first)) {
    return 0;
  }
  first = 0;
  bool win = 0;
  for (long long int i = 0; i < A.size(); ++i) {
    A[i] -= 1;
    if (check_lose(A, first)) {
      A[i] += 1;
      continue;
    }
    win |= (!T(A));
    A[i] += 1;
  }
  return win;
}
bool T(vector<long long int> A) {
  if (check_lose(A, first)) {
    return 0;
  }
  first = 0;
  bool win = 0;
  for (long long int i = 0; i < A.size(); ++i) {
    A[i] -= 1;
    if (check_lose(A, first)) {
      A[i] += 1;
      continue;
    }
    win |= (!C(A));
    A[i] += 1;
  }
  return win;
}
bool solve() {
  sort((A).begin(), (A).end());
  if (count((A).begin(), (A).end(), 0) > 1) {
    cout << "cslnb\n";
    return 1;
  }
  map<long long int, long long int> mp;
  for (auto i : A) mp[i]++;
  for (auto i : A)
    if (mp[i] > 2) {
      cout << "cslnb\n";
      return 1;
    }
  long long int times = 0;
  for (auto i : mp)
    if (i.second == 2) times++;
  if (times > 1) {
    cout << "cslnb\n";
    return 1;
  }
  bool got = A[0] != 0;
  for (long long int i = 1; i < A.size(); ++i) {
    if (A[i - 1] == A[i]) {
      if (i == 1) continue;
      if (A[i - 2] == A[i - 1] - 1) {
        cout << "cslnb\n";
        return 1;
      }
    } else
      got = 1;
  }
  if (!got) {
    cout << "cslnb\n";
    return 1;
  }
  long long int exp = 0;
  long long int sum = accumulate((A).begin(), (A).end(), 0ll);
  for (auto i : A) {
    if (i >= exp)
      sum -= exp;
    else {
      cout << "cslnb\n";
      return 1;
    }
    ++exp;
  }
  if (sum & 1) {
    cout << "sjfnb\n";
    return 0;
  } else {
    cout << "cslnb\n";
    return 1;
  }
}
void gen() {
  for (long long int i = 0; i < 10000; ++i) {
    n = 4;
    first = 1;
    A.clear();
    A.resize(n);
    for (long long int i = 0; i < (long long int)n; ++i) A[i] = rand(0, 5);
    if (T(A) == solve()) {
      cerr << "GG\n";
      first = 1;
      cerr << T(A) << ' ' << solve() << '\n';
      cout << n << '\n';
      for (long long int i = 0; i < (long long int)n; ++i) {
        cout << A[i] << ' ';
      }
      cout << '\n';
      exit(0);
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  A.resize(n);
  for (long long int i = 0; i < (long long int)n; ++i) cin >> A[i];
  solve();
  return 0;
  cout << (T(A) ? "T won\n" : "C won\n");
}
