#include<map>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<list>
#include<queue>
#include<deque>
#include<stack>
#include<iostream>
#include<set>
using namespace std;
class BinaryIndexTree {
public:
int get_sum(int i) {
i += 1;
vector<int>& data = this->sum_array;
int ret = 0;
while (i) {
ret += data[i];
i -= lower_bit(i);
}
return ret;
}
void update(int i, int value) {
i += 1;
vector<int>& data = this->sum_array;
while (i < data.size()) {
data[i] += value;
i += lower_bit(i);
}
}
void init(const vector<int>& data) {
this->sum_array = vector<int>(data.size() + 1, 0);
for (int i = 0; i < data.size(); ++i) {
this->update(i, data[i]);
}
}
private:
int lower_bit(int i) {
return i & (-i);
}
vector<int> sum_array;
};
int main() {
BinaryIndexTree bit;
int n;
cin>>n;
int tmp;
vector<int> data;
int max_val = numeric_limits<int>::min();
int min_val = numeric_limits<int>::max();
for (int i = 0; i < n; ++i) {
cin>>tmp;
data.push_back(tmp);
max_val = max(max_val, data[i]);
min_val = min(min_val, data[i]);
}
for (int i = 0; i < data.size(); ++i) {
data[i] -= min_val;
}
vector<int> data_tmp(max_val - min_val + 1, 0);
bit.init(data_tmp);
int ret = 0;
for (int i = 0; i < data.size(); ++i) {
bit.update(data[i], 1);
ret += bit.get_sum((int)data.size()) - bit.get_sum(i);
}
cout<<"result:\t"<<ret<<endl;
return 0;
}