#include <iostream>
#include <vector>
const int P = 1145141;
using namespace std;
struct element {
int l;
int r;
};
template<typename T>
T sum(T firstNum, T* restNum, int numRestNum) {
T result = firstNum;
for (int i = 0; i < numRestNum; i++) {
result ^= restNum[i];
}
return result;
}
int main() {
using namespace std;
long long n, q;
cin >> n >> q;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
vector<element> conditions(q);
for (int j = 0; j < q; j++) {
cin >> conditions[j].l >> conditions[j].r;
}
vector<int> result(q, 1);
for (int k = 0; k < q; k++) {
int l = conditions[k].l - 1;
int r = conditions[k].r - 1;
long long product = 1;
for (int i = l; i <= r; i++) {
product = (product * arr[i]) % P;
}
result[k] = product;
}
int finalResult = sum(result[0], result.data() + 1, result.size() - 1);
cout << finalResult << endl;
return 0;
}