func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   int s[100005], num[100005];   bool cmp(int a, int b) { return a < b; }   int main() {     while (scanf( %d , &n) != EOF) {       int i;       for (i = 0; i < n; i++) scanf( %d , &s[i]);       sort(s, s + n, cmp);       bool flag = true;       for (i = 1; i < n - 1; i++) {         if (s[i] == s[i - 1]) continue;         if (s[i] != s[i - 1] + 1) flag = false;         if (s[i] == s[i - 1] + 1 && s[i] == s[i + 1] - 1) flag = false;       }       if (s[n - 1] != s[n - 2] && s[n - 1] != s[n - 2] + 1) flag = false;       if (!flag) {         printf( NO n );         continue;       }       int ma = 0;       memset(num, 0, sizeof(num));       for (i = 0; i < n; i++) {         num[s[i] - s[0] + 1]++;         ma = max(s[i] - s[0] + 1, ma);       }       num[1]--;       num[ma]--;       for (i = 2; i < ma; i++) num[i] -= 2;       for (i = 1; flag && i < ma; i++) {         if (num[i] > 0 && num[i + 1] < num[i]) flag = false;         num[i + 1] -= num[i];         num[i] = 0;       }       if (num[ma] > 0) flag = false;       if (!flag)         printf( NO n );       else         printf( YES n );     }     return 0;   }   