// #includes {{{ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // }}} // pre-written code {{{ #define REP(i,n) for(int i=0;i<(int)(n);++i) #define RREP(i,a,b) for(int i=(int)(a);i<(int)(b);++i) #define FOR(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();++i) #define LET(x,a) __typeof(a) x(a) //#define IFOR(i,it,c) for(__typeof((c).begin())it=(c).begin();it!=(c).end();++it,++i) #define ALL(c) (c).begin(), (c).end() #define MP make_pair #define EXIST(e,s) ((s).find(e)!=(s).end()) #define RESET(a) memset((a),0,sizeof(a)) #define SET(a) memset((a),-1,sizeof(a)) #define PB push_back #define DEC(it,command) __typeof(command) it=command const int INF=0x3f3f3f3f; typedef long long Int; typedef unsigned long long uInt; #ifdef __MINGW32__ typedef double rn; #else typedef long double rn; #endif typedef pair pii; /* #ifdef MYDEBUG #include"debug.h" #include"print.h" #endif */ // }}} //range i..j (inclusive) //larger range which contains k inline int up(const int &k){return k|(k+1);} //previous range adjacent to k inline int left(const int &k){return (k&(k+1))-1;} //{{{ Fenwick Tree template struct fenwick_tree { vector x; fenwick_tree(int n) : x(n, 0) { } T sum(int p, int q) { if (p == 0) { T S = 0; for (int j=q ; j >= 0; j = left(j)) S += x[j]; return S; } else return sum(0, q) - sum(0, p-1); } void add(int p, T a) { for (int k=p ; k < x.size(); k=up(k)) x[k] += a; } }; //}}} int main(){ fenwick_tree ft(1000001); int N,K; cin>>N>>K; REP(i,N){ int W; cin>>W; if(W<0){ W = -W; if(ft.sum(W,W+1)>0)ft.add(W,-1); }else{ if(ft.sum(W,(int)ft.x.size())