#include<bits/stdc++.h>
using namespace std;
typedef  long long ll;
typedef ll TP;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+7;
const int MAXN =4e5+15;
const double PI=acos(-1);
void test() { cerr << "\n"; }
template <typename T,typename...Args>void test(T x,Args...args){cerr<<x<<" ";test(args...); }
inline ll qpow(ll a, ll b) {return b?((b&1)?a*qpow(a*a%MOD,b>>1)%MOD : qpow(a*a%MOD,b>>1))%MOD :1; }
inline ll qpow(ll a, ll b, ll c) {return b?((b&1)?a*qpow(a*a%c,b>>1)%c : qpow(a*a%c,b>>1)) % c: 1; }
inline ll gcd(ll a, ll b){return b?gcd(b,a% b): a; }
namespace Fast_IO
{ //orz laofu
    const int MAXL((1 << 18) + 1);
    char _io_ibuf[MAXL], *_io_iS, *_io_iT, _io_obuf[MAXL];
    char *_io_oS = _io_obuf, *_io_oT = _io_obuf + MAXL - 1, _io_c, _io_st[55];
    int _io_f, _io_tp;
    char Getchar(){
        if (_io_iS == _io_iT){
            _io_iS = _io_ibuf;_io_iT=_io_iS+fread(_io_ibuf,1,MAXL,stdin);
            return (_io_iS == _io_iT ? EOF : *_io_iS++);
        }else return (*_io_iS++);
    }
    void Write(){fwrite(_io_obuf,1,_io_oS-_io_obuf,stdout);_io_oS=_io_obuf;}
    void Putchar(char x){*_io_oS++ = x;if (_io_oS == _io_oT)Write();}
    inline int read(){
        int x=0;
        for(_io_f=1,_io_c=Getchar();_io_c<'0'||_io_c>'9';)_io_f=_io_c=='-'?-1:1,_io_c=Getchar();
        for(x=0;_io_c<='9'&&_io_c>='0';_io_c=Getchar())x=(x<<3)+(x<<1)+(_io_c^48);
        return x*_io_f;
    }
    inline long long read_ll(){
        long long x = 0;
        for(_io_f=1,_io_c=Getchar();_io_c<'0'||_io_c> '9';)_io_f=_io_c=='-'?-1:1,_io_c=Getchar();
        for(x=0;_io_c<='9'&&_io_c>='0';_io_c=Getchar())x=(x<<3)+(x<<1)+(_io_c^48);
        return x * _io_f;
    }
    template <class Int>
    void Print(Int x, char ch = '\0'){
        if (!x)Putchar('0');if (x < 0)Putchar('-'),x=-x;
        while(x)_io_st[++_io_tp]=x % 10 + '0', x /= 10;
        while(_io_tp)Putchar(_io_st[_io_tp--]);
        if (ch)Putchar(ch);
    }
    void Getstr(char *s, int &l){
        for(_io_c=Getchar();_io_c <'a'||_io_c>'z';)_io_c=Getchar();
        for(l=0;_io_c<='z'&&_io_c>='a';_io_c=Getchar())s[l++]=_io_c;
        s[l] = 0;
    }
    void Putstr(const char *s){for(int i=0,n=strlen(s);i<n;++i)Putchar(s[i]);}
} // namespace Fast_IO
using namespace Fast_IO;
const int DF=200004;
int num[MAXN],pps[MAXN],pos[MAXN];
char str[MAXN];
char ss[MAXN];
bool vis[MAXN];
void work()
{
    scanf("%s",str+1);

    ll ans=0;int nows=0;int cur=0;
    for(int i=1;str[i];i++)
    {
        if(str[i]=='(')
        {
            ss[++cur]=str[i];
            nows++;num[cur]=0;
            pos[nows]=cur;vis[cur]=1;
        }
        else if(str[i]==')')
        {
            ss[++cur]=str[i];
            if(nows==0)vis[cur]=0;
            else {
            if(nows>0)
            {
            if(ss[pos[nows]-1]==')')
                num[cur]=num[pos[nows]-1]+1;
            else num[cur]=1;
            pps[cur]=pos[nows];
            pos[nows--]=0;
            }else num[cur]=0;
                vis[cur]=1;
                ans+=num[cur];
            }
        }
        else
        {
            ans-=num[cur];num[cur]=0;
            if(ss[cur]=='(')
            {
                nows--;
            }
            else if(ss[cur]==')'&&vis[cur])
            {
                nows++;pos[nows]=pps[cur];
            }cur--;
        }
        printf("%lld\n",ans);
    }
}
int main()
{
   //std::ios::sync_with_stdio(false);
    //int T=read();for(int cas=1;cas<=T;cas++)
 // int T;scanf("%d",&T);for(int cas=1;cas<=T;cas++)
    work();
   // Write();
}
/**
9
2 1
3 1
1 2
4 2
1 3
4 3
2 4
3 4
2 2
*/



Measured memory_bytes: 5564