#include <bits/stdc++.h>
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
using namespace std;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, m;
    cin >> n >> m;
    vector<int> a(n, -1);
    vector<int> b(m);
    for(int i = 0; i < m; i++){
        cin >> b[i];
    }
    bool is = 0;
    set<int> st;
    for(int i = 0; i < m - 1; i++){
        if(abs(b[i] - b[i + 1]) > 1){
            is = 1;
        }
        else{
            if(b[i] - b[i + 1] == 1){
                a[i] = 1;
                a[i + m] = 0;
                st.insert((i + 1) % m);
            }
            else if(b[i + 1] - b[i] == 1){
                a[i] = 0;
                a[i + m] = 1;
                st.insert((i + 1) % m);
            }
        
        }
    }
    int ans = 0;
    for(int i = 0; i < m; i++){
        if(a[i] > 0){
           ans++;
        }
    }
    int x = b[0] - ans;
    int y = m - st.size();
    int s = 1;
    int s1 = 1;
    int s2 = 1;
    for(int i = 1; i <= y; i++){
        s *= i;
    }
    for(int i = 1; i <= x; i++){
        s1 *= i;
    }
    for(int i = 1; i <= y - x; i++){
        s2 *= i;
    }
    cout << s / (s1 * s2);
    
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |