#include using namespace std; bool isBridgePossible(long long int index1, long long int index2, vector & ter) { long long int lineNumber = ter[index1]; for (long long int i = index1 + 1; i < index2; i++) { if (ter[i] > lineNumber) return false; } return true; } long long int bridgesAtLine(vector & verticesAtLine, vector & ter) { long long int result = 0; for (long long int i = 1; i < verticesAtLine.size(); i++) { long long int firstIndex = verticesAtLine[i - 1]; long long int secondIndex = verticesAtLine[i]; if (isBridgePossible(firstIndex, secondIndex, ter)) result += (secondIndex - firstIndex - 1); } return result; } int main() { long long int N; cin>>N; vector> lines; vector ter; lines.resize(1000000); for(long long int i =0; i < N; i++){ long long int t; cin>>t; ter.emplace_back(t); lines[t].emplace_back(i); } long long int result = 0; for (auto lineVector: lines) { result += bridgesAtLine(lineVector, ter); } cout << result << endl; return 0; } /* 5 1 2 3 3 1 */