#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class BIT{ /*binary indexed tree*/ private: int data[1000001]; int size; public: BIT(int n): size(n){ memset(data,0,sizeof(data)); return; } int sum(int l, int r ){ // return sum in [l+1,r] or (l,r] return sum_(r)-sum_(l); } int sum_(int i){ // return sum (0, i] int ans = 0; while( 0 < i ){ ans += data[i]; i -= i&-i; // 11010110 -> 1010100 } return ans; } void add(int i, int x){ // add x to i while( i <= size ){ data[i] += x; i+= i&-i; } return; } }; int A[1000000]; int V[1000000]; int ind[1000000]; vector sameArray[1000001]; map unZip; int main(){ int N; scanf("%d",&N); for( int i = 0; i