#include #include #include #include #define rep(i, n) for (i = 0; i < n; i++) #define rrep(i, n) for (i = n; i >= 0; i--) #define max(a, b) (a > b ? a : b) #define min(a, b) (a < b ? a : b) void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; } int main() { int n; long long k; scanf("%d %lld", &n, &k); int d[200000], idx[200000], i; rep(i, n) { scanf("%d", &d[i]); idx[d[i] - 1] = i; } int cnt = 0; rep(i, n) { if (d[i] != i + 1) { swap(&d[i], &d[idx[i]]); swap(&idx[d[i] - 1], &idx[d[idx[i]] - 1]); cnt++; } } if (cnt <= k && (k - cnt) % 2 == 0) puts("YES"); else puts("NO"); return 0; }