#include <bits/stdc++.h>
using namespace std;
long long issame(long long n);
stack<long long> stk;
long long b[1000], id = 0;
long long prime(long long n) {
  long long i, j = sqrt(n);
  for (i = 2; i <= j; i++) {
    if (n % i == 0) return 0;
  }
  return 1;
}
long long div(long long n) {
  long long i, j = sqrt(n);
  for (i = 1; i <= j; i++) {
    if (n % i == 0) {
      if (i == (n / i)) {
        stk.push(i);
        break;
      } else {
        stk.push(i);
        stk.push(n / i);
      }
    }
  }
  long long ans = 0;
  while (!stk.empty()) {
    long long s = stk.top();
    ans += issame(s);
    stk.pop();
  }
  return ans;
}
long long issame(long long n) {
  long long i = 0;
  while (n) {
    if (b[n % 10]) return 1;
    n /= 10;
  }
  return 0;
}
int main() {
  long long n, k;
  vector<long long> a, b;
  scanf("%lld", &n);
  for (long long i = 0; i < n; i++) {
    scanf("%lld", &k);
    a.push_back(k);
    b.push_back(k);
  }
  sort(a.begin(), a.end());
  long long c = 0;
  for (long long i = 0; i < n; i++) {
    if (a[i] != b[i]) c++;
  }
  if (c > 2)
    printf("NO\n");
  else
    puts("YES");
  return 0;
}
