Language: C++

c#include "bits/stdc++.h"
using namespace std;
#define int long long
#define double long double
#define low lower_bound
#define upp upper_bound
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define Rep(i, n) for (int i = (int)(n); i >= 0; --i)
#define all(vec) vec.begin(), vec.end()
#define cend printf("\n");
#define prique(T) priority_queue<T, vector<T>, greater<T>>
#define prique2(T) priority_queue<T>

struct edge { int to, cost; };
using P = pair<int, int>;
using D = pair<double, double>;
const long long mod = 998244353;
//const long long mod = 1e9 + 7, inf = 3e18;
const string sp = " ";

template<class T> inline bool chmax(T& a, T b) {
	if (a < b) {
		a = b;
		return true;
	}
	return false;
}
template<class T> inline bool chmin(T& a, T b) {
	if (a > b) {
		a = b;
		return true;
	}
	return false;
}

int modpow(int x, int n) {
	int ans = 1;
	while (n > 0) {
		if (n & 1) {
			ans *= x;
			if (mod <= ans) ans %= mod;
		}
		x *= x;
		if (mod <= x) x %= mod;
		n >>= 1;
	}
	return ans;
}

int fact[1000000];
void f_init(int n) {
	if (1000000 <= n) return;
	fact[0] = fact[1] = 1;
	for (int i = 2; i <= n; ++i) {
		fact[i] = i * fact[i - 1];
		if (mod <= fact[i]) fact[i] %= mod;
	}
	return;
}

int comb(int n, int r) {
	if (n < r) return 0;
	if (n == r) return 1;
	int ans = fact[n] * modpow(fact[n - r], mod - 2) % mod * modpow(fact[r], mod - 2);
	if (ans < 0) return ans + mod;
	return ans;
}

int nck[1010][1010];
void comb(int n) {
	rep(i, n + 1) {
		rep(j, i + 1) {
			if (j == 0 || i == j) nck[i][j] = 1;
			else nck[i][j] = nck[i - 1][j - 1] + nck[i - 1][j];
		}
	}
}

int gcd(int a, int b) {
	if (b == 0) return a;
	return gcd(b, a % b);
}

int lcm(int a, int b) {
	return a / gcd(a, b) * b;
}

bool pri(int p) {
	for (int i = 2; i * i <= p; ++i) if (p % i == 0) return false;
	return p > 1;
}

map<int, int> factring(int n) {
	map<int, int>ans;
	for (int i = 2; i * i <= n; ++i) {
		while (n % i == 0) {
			n /= i;
			++ans[i];
		}
	}
	if (n != 1) ++ans[n];
	return ans;
}

double dis(D a, D b) { return sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second)); }

int n, ma = 0, ans = 1;
int d[100010], a[100010];
signed main() {
	cin >> n;
	rep(i, n) {
		cin >> d[i];
		a[d[i]]++;
		ma = max(ma, d[i]);
	}
	if (d[0] != 0 || a[0] != 1) {
		cout << "0\n";
		return 0;
	}
	rep(i, ma + 1) {
		if (i == 0) continue;
		if (a[i] == 0) {
			cout << "0\n"; return 0;
		}
		ans *= modpow(a[i - 1], a[i]);
		ans %= mod;
	}
	cout << ans << endl;
}

Compiler output:
a.cc:1:2: error: stray '#' in program
    1 | c#include "bits/stdc++.h"
      |  ^
a.cc:1:1: error: 'c' does not name a type
    1 | c#include "bits/stdc++.h"
      | ^
a.cc:15:11: error: 'pair' does not name a type
   15 | using P = pair<int, int>;
      |           ^~~~
a.cc:16:11: error: 'pair' does not name a type
   16 | using D = pair<double, double>;
      |           ^~~~
a.cc:19:7: error: 'string' does not name a type
   19 | const string sp = " ";
      |       ^~~~~~
a.cc:93:1: error: 'map' does not name a type
   93 | map<int, int> factring(int n) {
      | ^~~
a.cc:105:12: error: 'D' was not declared in this scope
  105 | double dis(D a, D b) { return sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second)); }
      |            ^
a.cc:105:17: error: 'D' was not declared in this scope
  105 | double dis(D a, D b) { return sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second)); }
      |                 ^
a.cc:105:20: error: expression list treated as compound expression in initializer [-fpermissive]
  105 | double dis(D a, D b) { return sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second)); }
      |                    ^
a.cc: In function 'int main()':
a.cc:110:9: error: 'cin' was not declared in this scope
  110 |         cin >> n;
      |         ^~~
a.cc:114:22: error: 'max' was not declared in this scope; did you mean 'ma'?
  114 |                 ma = max(ma, d[i]);
      |                      ^~~
      |                      ma
a.cc:117:17: error: 'cout' was not declared in this scope
  117 |                 cout << "0\n";
      |                 ^~~~
a.cc:123:25: error: 'cout' was not declared in this scope
  123 |                         cout << "0\n"; return 0;
      |                         ^~~~
a.cc:128:9: error: 'cout' was not declared in this scope
  128 |         cout << ans << endl;
      |         ^~~~
a.cc:128:24: error: 'endl' was not declared in this scope
  128 |         cout << ans << endl;
      |                        ^~~~