#include <bits/stdc++.h>
using namespace std;
const int N = 5e6 + 7;
int n, o, f[N], p[N], d[N];
long long ans;
inline void rd(int& qwq){
int awa = 0,w = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){
if(ch == '-') w = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9'){
awa = awa * 10 + ch - '0';
ch = getchar();
}
qwq = awa * w;
}
inline void TP() {
for (int i = 1; i < n; i++) rd(f[i]), ++d[f[i]];
for (int i = 1, j = 1; i <= n - 2; i++, j++) {
while (d[j]) ++j;
p[i] = f[j];
while (i <= n - 2 && !--d[p[i]] && p[i] < j) p[i+1] = f[p[i]], ++i;
}
for (int i = 1; i <= n - 2; i++) ans ^= 1ll * i * p[i];
}
inline void PT() {
for (int i = 1; i <= n - 2; i++) rd(p[i]), ++d[p[i]];
p[n-1] = n;
for (int i = 1, j = 1; i < n; i++, j++) {
while (d[j]) ++j;
f[j] = p[i];
while (i < n && !--d[p[i]] && p[i] < j) f[p[i]] = p[i+1], ++i;
}
for (int i = 1; i < n; i++) ans ^= 1ll * i * f[i];
}
int main() {
rd(n), rd(o), o == 1 ? TP() : PT();
cout<<ans;
return 0;
}