#include #define fi first #define se second #define p_b push_back #define pll pair #define pii pair #define m_p make_pair #define all(x) x.begin(),x.end() #define sset ordered_set #define sqr(x) (x)*(x) #define pw(x) (1ll << x) #define sz(x) (int)x.size() #define fout(x) {cout << x << "\n"; return; } using namespace std; typedef long long ll; typedef long double ld; const int MAXN = 1123456; const int M = 1e7; const ll inf = 1e18; const long long mod = 1e9 + 7; const long long N = 3e5; template void vout(T s){cout << s << endl;exit(0);} vector v[20]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector a(n + 1), pref(n + 1); for(int i = 1; i <= n; i++){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; pref[i] %= 10; v[pref[i]].p_b(i); } for(int i = 0; i < 10; i++){ v[i].p_b(n + 1); } for(int i = 1; i <= n; i++){ int c = pref[i - 1]; int x = *lower_bound(all(v[c]), i); if(x == n + 1)cout << "-1 "; else cout << x - i + 1 << " "; } cout << "\n"; return 0; }