BEGIN{SIZE=19}
function add(A,x,B)
{
	for(i=0;i<SIZE;i++)
	{
		B[i]=A[i]+x;
		x=int(B[i]/10);
		B[i]%=10;
	}
}
function mul(A,x,B)
{
	c=0;
	for(i=0;i<SIZE;i++)
	{
		B[i]=A[i]*x+c;
		c=int(B[i]/10);
		B[i]%=10;
	}
}
function div(A,x,B)
{
	c=0;
	for(i=SIZE-1;i>=0;i--)
	{
		c=c*10+A[i];
		B[i]=int(c/x);
		c%=x;
	}
}
function cmp(A,B)#A<B?-1:A>B?1:0
{
	for(i=SIZE-1;i>=0;i--)
	{
		if(A[i]!=B[i])
		{
			return A[i]<B[i]?-1:1
		}
	}
	return 0
}
function move(A,B)
{
	for(i=0;i<SIZE;i++)B[i]=A[i];
}
function input(x,A)
{
	n=split(x,tmp,"");
	for(i=0;i<n;i++)A[i]=tmp[n-i];
}
function disp(A)
{
	t="";
	for(i=SIZE-1;i>=0;i--)
	{
		if(t||A[i])t=t int(A[i]);
	}
	if(!t)t=0;
	print t
}
BEGIN{A[0]=1;s[0]=0}
c++{add(s,A[u+=$1]++,v);move(v,s)}{RS=FS}
END{disp(s)}