#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int MOD = 1e9 + 7;
int main() {
int n;
cin >> n;
vector<int> A(n);
for (int i = 0; i < n; i++) {
cin >> A[i];
}
vector<long long> prefix_min(n, 0), prefix_max(n, 0);
prefix_min[0] = A[0];
prefix_max[0] = A[0];
for (int i = 1; i < n; i++) {
prefix_min[i] = min(prefix_min[i - 1], (long long)A[i]);
prefix_max[i] = max(prefix_max[i - 1], (long long)A[i]);
}
long long result = 0;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
long long f_lr = prefix_min[j] * prefix_max[j];
result = (result + f_lr) % MOD;
}
}
cout << result << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CgogICAgdmVjdG9yPGludD4gQShuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IEFbaV07CiAgICB9CgogICAgdmVjdG9yPGxvbmcgbG9uZz4gcHJlZml4X21pbihuLCAwKSwgcHJlZml4X21heChuLCAwKTsKCiAgICBwcmVmaXhfbWluWzBdID0gQVswXTsKICAgIHByZWZpeF9tYXhbMF0gPSBBWzBdOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmVmaXhfbWluW2ldID0gbWluKHByZWZpeF9taW5baSAtIDFdLCAobG9uZyBsb25nKUFbaV0pOwogICAgICAgIHByZWZpeF9tYXhbaV0gPSBtYXgocHJlZml4X21heFtpIC0gMV0sIChsb25nIGxvbmcpQVtpXSk7CiAgICB9CgogICAgbG9uZyBsb25nIHJlc3VsdCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGxvbmcgbG9uZyBmX2xyID0gcHJlZml4X21pbltqXSAqIHByZWZpeF9tYXhbal07CiAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKyBmX2xyKSAlIE1PRDsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCByZXN1bHQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==