import java.util.*; public class First { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); int[] weight = new int[n]; int[] time = new int[n]; for (int i = 0; i < n; i++) { weight[i] = cin.nextInt(); } for (int i = 0; i < n; i++) { time[i] = cin.nextInt(); } int[] a = {100, 80, 60}; int index = 0; Map<Integer, List<Integer[]>> map = new HashMap<>(); for (int j = 0; j <= 60; j++) { if (index < time.length && j != time[index]) continue; if (map.containsKey(j)) { List<Integer[]> tmpM = map.get(j); for (Integer[] is: tmpM) a[is[1]] += weight[is[0]]; map.remove(j); } while (index < time.length && j >= time[index]) { if (a[0] >= weight[index]) { a[0] -= weight[index]; List<Integer[]> tmpM = map.get(30 + time[index]); if (tmpM == null) { List<Integer[]> list = new ArrayList<>(); list.add(new Integer[]{index, 0}); map.put(30 + time[index], list); }else{ tmpM.add(new Integer[]{index, 0}); } index++; } else if (a[1] >= weight[index]) { a[1] -= weight[index]; List<Integer[]> tmpM = map.get(30 + time[index]); if (tmpM == null) { List<Integer[]> list = new ArrayList<>(); list.add(new Integer[]{index, 1}); map.put(30 + time[index], list); }else{ tmpM.add(new Integer[]{index, 1}); } index++; } else if (a[2] >= weight[index]) { a[2] -= weight[index]; List<Integer[]> tmpM = map.get(30 + time[index]); if (tmpM == null) { List<Integer[]> list = new ArrayList<>(); list.add(new Integer[]{index, 2}); map.put(30 + time[index], list); }else{ tmpM.add(new Integer[]{index, 2}); } index++; } else { time[index]++; int tmp = index + 1; while (tmp < time.length && time[tmp] <= time[index]) { time[tmp] = time[index]; tmp++; } } } } int[] b = {100 - a[0], 80 - a[1], 60 - a[2]}; System.out.println(b[0] + " " + b[1] + " " + b[2]); } }