#include <bits/stdc++.h> using namespace std; vector<string> split_string(string); /* * Complete the canModify function below. */ string canModify(vector<int> a) { string result; int counter = 0, prieviousNum = 0; for (const auto& num : a) { if (num < prieviousNum) { counter++; } prieviousNum = num; if (counter > 1) { result = "NO"; break; } } result = "YES"; return result; } int main() { ofstream fout(getenv("OUTPUT_PATH")); int n; cin >> n; cin.ignore(numeric_limits<streamsize>::max(), '\n'); string a_temp_temp; getline(cin, a_temp_temp); vector<string> a_temp = split_string(a_temp_temp); vector<int> a(n); for (int a_itr = 0; a_itr < n; a_itr++) { int a_item = stoi(a_temp[a_itr]); a[a_itr] = a_item; } string result = canModify(a); fout << result << "\n"; fout.close(); return 0; } vector<string> split_string(string input_string) { string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) { return x == y and x == ' '; }); input_string.erase(new_end, input_string.end()); while (input_string[input_string.length() - 1] == ' ') { input_string.pop_back(); } vector<string> splits; char delimiter = ' '; size_t i = 0; size_t pos = input_string.find(delimiter); while (pos != string::npos) { splits.push_back(input_string.substr(i, pos - i)); i = pos + 1; pos = input_string.find(delimiter, i); } splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1)); return splits; }