# 累積和をHP分、敵カウント分 # k以下の探索はbisect # これで間に合うか? N = int(input()) S = input() A = list(map(int, input().split())) HP_cumu = [0] hp_temp = 0 enemy_cumu = [0] enemy_temp = 0 for i in range(N): hp_temp += A[i] HP_cumu.append(hp_temp) if S[i] == 'E': enemy_temp += 1 enemy_cumu.append(enemy_temp) Q = int(input()) K = list(map(int, input().split())) from bisect import * for q in range(Q): k = K[q] ans = 0 for i in range(N): start = HP_cumu[i] target = start+k idx = bisect_left(HP_cumu, target+1)-1 calc = enemy_cumu[idx]-enemy_cumu[i] ans = max(ans, calc) print(ans)