#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int p1[200200]; int p2[200200]; int p3[200200]; int o1[200200]; int o2[200200]; int o3[200200]; int interval[1000100]; int tree_get(int node, int begin, int end, int N){ int middle = (begin + end) / 2; if(N<=begin) return 0; if(begin + 1 == end) return interval[node]; if(N<=middle){ return tree_get(node*2, begin, middle, N); } else{ return interval[node*2] + tree_get(node*2 + 1, middle,end, N); } } void tree_add(int node, int begin, int end, int i){ int middle = (begin + end) / 2; if(i<=begin) return; interval[node]++; if(begin + 1 == end) return; if(i<=middle){ tree_add(node*2, begin, middle, i); } else{ tree_add(node*2+1, middle, end, i); } } int main() { int N; while(1){ scanf("%d",&N); if(!N) break; for(int i=0;i