#include<bits/stdc++.h>
using namespace std;
struct node {
int num;
int q;
};
const int N=1e6+5;
node a[N];int n;
void f(int x){
int l=x-1,r=x+1;
int sum=a[x].num;
while(sum<0 && l>0 && r<=n){
if(a[l].num>a[r].num){
sum+=a[l].num;
a[l].q=-1;
l--;
}
else {
sum+=a[r].num;
a[r].q=-1;
r++;
}
}
return;
}
int main(){
int sum;
cin>>n;
for(int i=1;i<=n;++i){
cin>>a[i].num;
sum+=a[i].num;
a[i].q=1;
}
if(sum<=0){
cout<<"Impossible"<<endl;
return 0;
}
int g=0;
for(int i=1;i<=n;++i){
if(a[i].q==1){
a[i].q=0;
f(i);
}
}
for(int i=1;i<=n;++i){
if(a[i].q==0){
//cout<<a[i].num<<endl;
g++;
}
}
cout<<g<<endl;
return 0;
}