#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds; // needed for tree + PBDS
#define pb push_back
#define all(x) x.begin(), x.end()
typedef long long ll;
const ll INF = (ll)1e18;
const ll MOD = 1000000000+7 ;
const double eps = 1e-9 ;
template <class T>
using ordered_set = tree<
T,
null_type,
less<T>,
rb_tree_tag,
tree_order_statistics_node_update
>;
void solve() {
ll q ; cin >> q ;
// cout << q << endl ;
ll total = 0 , previous = 0 ;
ll last = 0 , sz = 0 ;
bool reversed = false ;
deque < ll > dq ;
while (q -- ) {
// cout << "hh" << endl ;
int s ; cin >> s ;
// cout << s <<"jj" << endl ;
ll neww = 0 ;
if (s == 1 ) {
if (reversed) {
last = dq.front();
}
else last = dq.back() ;
neww =previous +(total-last) - last * (sz-1) ;
previous = neww ;
cout << neww << endl ;
if (reversed ) {
ll x = dq.front() ;dq.pop_front() ;dq.push_back(x) ;
}
else {
ll x = dq.back() ; dq.pop_back() ; dq.push_front(x) ;
}
}
else if (s == 2 ) {
neww = (sz +1 )* (total) - previous ;
cout << neww << endl ;
previous = neww ;
reversed^=1 ;
}
else {
ll k ; cin >> k ;
sz++ ;
neww = previous + k * sz ;
if (reversed ) {
dq.push_front(k) ;
}
else dq.push_back(k) ;
total += k ;
previous = neww ;
cout << neww << endl ;
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int t = 1 ; cin >> t;
int maxi = 200000 + 5;
while (t--) solve();
return 0;
}
ICAgICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsgICAvLyBuZWVkZWQgZm9yIHRyZWUgKyBQQkRTCgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmNvbnN0IGxsIElORiA9IChsbCkxZTE4Owpjb25zdCBsbCBNT0QgPSAxMDAwMDAwMDAwKzcgOwpjb25zdCBkb3VibGUgZXBzID0gMWUtOSA7CnRlbXBsYXRlIDxjbGFzcyBUPgp1c2luZyBvcmRlcmVkX3NldCA9IHRyZWU8CiAgICBULAogICAgbnVsbF90eXBlLAogICAgbGVzczxUPiwKICAgIHJiX3RyZWVfdGFnLAogICAgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlCj47Cgp2b2lkIHNvbHZlKCkgewogICAgbGwgcSA7IGNpbiA+PiBxIDsKICAgLy8gY291dCA8PCAgIHEgPDwgZW5kbCA7CiAgICBsbCAgdG90YWwgPSAwICwgcHJldmlvdXMgPSAwIDsKICAgIGxsIGxhc3QgPSAwICAgLCBzeiA9IDAgOwogICAgYm9vbCByZXZlcnNlZCA9IGZhbHNlIDsKICAgIGRlcXVlIDwgbGwgPiBkcSA7CiAgICB3aGlsZSAocSAtLSApIHsKICAgICAgIC8vIGNvdXQgPDwgImhoIiA8PCBlbmRsIDsKCiAgICAgICAgaW50IHMgOyBjaW4gPj4gcyA7CiAgICAgIC8vICBjb3V0IDw8IHMgPDwiamoiIDw8IGVuZGwgOwogICAgICAgIGxsIG5ld3cgPSAwIDsKICAgICAgICBpZiAocyA9PSAxICkgewogICAgICAgICAgICBpZiAocmV2ZXJzZWQpIHsKICAgICAgICAgICAgICAgIGxhc3QgPSBkcS5mcm9udCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgbGFzdCA9IGRxLmJhY2soKSAgOwogICAgICAgICAgICBuZXd3ICA9cHJldmlvdXMgKyh0b3RhbC1sYXN0KSAgLSAgbGFzdCAqIChzei0xKSA7CiAgICAgICAgICAgIHByZXZpb3VzID0gbmV3dyA7CiAgICAgICAgICAgIGNvdXQgPDwgbmV3dyA8PCBlbmRsIDsKICAgICAgICAgICAgaWYgKHJldmVyc2VkICApIHsKICAgICAgICAgICAgICAgIGxsIHggPSBkcS5mcm9udCgpIDtkcS5wb3BfZnJvbnQoKSA7ZHEucHVzaF9iYWNrKHgpIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGxsIHggPSBkcS5iYWNrKCkgOyAgZHEucG9wX2JhY2soKSA7ICBkcS5wdXNoX2Zyb250KHgpIDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzID09IDIgKSB7CiAgICAgICAgICAgICBuZXd3ID0gKHN6ICsxICkqICh0b3RhbCkgLSBwcmV2aW91cyA7CiAgICAgICAgICAgIGNvdXQgPDwgbmV3dyA8PCBlbmRsIDsKICAgICAgICAgICAgcHJldmlvdXMgPSBuZXd3IDsKICAgICAgICAgICAgcmV2ZXJzZWRePTEgOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbGwgayA7IGNpbiA+PiBrIDsKICAgICAgICAgICAgc3orKyA7CiAgICAgICAgICAgIG5ld3cgPSBwcmV2aW91cyArIGsgKiBzeiA7CiAgICAgICAgICAgIGlmIChyZXZlcnNlZCApIHsKICAgICAgICAgICAgICAgIGRxLnB1c2hfZnJvbnQoaykgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgZHEucHVzaF9iYWNrKGspIDsKICAgICAgICAgICAgdG90YWwgKz0gayA7CiAgICAgICAgICAgIHByZXZpb3VzID0gbmV3dyA7CiAgICAgICAgICAgIGNvdXQgPDwgbmV3dyA8PCBlbmRsIDsKICAgICAgICB9CiAgICB9Cn0KCgoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKICAgIGludCB0ID0gMSA7IGNpbiA+PiB0OwogICAgaW50IG1heGkgPSAyMDAwMDAgKyA1OwoKICAgIHdoaWxlICh0LS0pIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQ==