#include using namespace std; using ll = long long;//int型は使わない using pll = pair; using vl = vector ; //1D using vvl = vector ;//2D using vvvl = vector ;//3D using vvvvl = vector;//4D using vvvvvl = vector;//5D using vvvvvvl = vector;//6D using vvvvvvvl = vector;//7D using vp = vector ; //1D using vvp = vector ;//2D using vvvp = vector ;//3D using vvvvp = vector;//4D using vvvvvp = vector;//5D using vvvvvvp = vector;//6D using vvvvvvvp = vector;//7D using vi = vector ; //1D using vvi = vector ;//2D using vvvi = vector ;//3D using vvvvi = vector;//4D using vvvvvi = vector;//5D using vvvvvvi = vector;//6D using vvvvvvvi = vector;//7D using vb = vector ; //1D using vvb = vector ;//2D using vvvb = vector ;//3D using vvvvb = vector;//4D using vvvvvb = vector;//5D using vvvvvvb = vector;//6D using vvvvvvvb = vector;//7D using vs = vector ; //1D using vvs = vector ;//2D using vvvs = vector ;//3D using vvvvs = vector;//4D using vvvvvs = vector;//5D using vvvvvvs = vector;//6D using vvvvvvvs = vector;//7D [[maybe_unused]] const ll INF = 2e18 ; [[maybe_unused]] const ll MOD = 998244353; #define rep(i,a,b) for(ll i=(ll)a; i<(ll)b; i++) #define rrep(i,a,b) for(ll i=(ll)b-1; i>=(ll)a; i--) #define all(vec1) (vec1).begin(), (vec1).end() #define yn(b,ex) if(1){if(b)cout << "Yes" << endl;else cout << "No" << endl ;if(ex)return 0;} #define debug(var) cerr << #var << " : " << var << endl; //fastio struct FastIO { FastIO() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); } } fastio; //あまり(負の数対応) template T ovr(T a,T b){ T ret=a%b; if(ret<0)ret+=b; return ret; } const string MOD_bi = "111111111111111111111110110111"; //MOD下での逆元 ll minv(ll ina){ ll a = ina % MOD; ll ret = 1; ll V = a; rep(i,0,MOD_bi.size()){ if(MOD_bi[i]=='1')ret=(ret*V)%MOD; V=(V*V)%MOD; } return ret; } //指数をある値で割った余り ll mpow(ll a , ll b , ll M){ ll ret = 1; ll V = a; rep(i,0,64){ if((b >> i) & 1)ret=(ret*V)%M; V=(V*V)%M; } return ret; } /////////main///////// int main() { int N; cin >> N; vl D(N + 1, 0); rep(i,0,N) cin >> D[i + 1]; rep(i,0,N) D[i + 1] += D[i]; auto date_to_num = [&](ll y, ll m, ll d) -> __int128 { return y * D[N] + D[m] + d; }; auto num_to_date = [&](__int128 x) -> tuple { ll ret_y = x / D[N]; x %= D[N]; auto it = upper_bound(all(D), x); it -- ; ll ret_m = it - D.begin(); ll ret_d = (x - *it); return {ret_y, ret_m, ret_d}; }; int Q; cin >> Q; while (Q--) { ll y,m,d,k; cin >> y >> m >> d >> k; y--, m--, d--; auto [ay,am,ad] = num_to_date(date_to_num(y,m,d) + k); cout << ay + 1 << ' ' << am + 1 << ' ' << ad + 1 << endl; } }