import java.util.Scanner;

/**
 * @author supermejane
 * @date 2025/10/11 12:21
 * @description BGN78 小红的排列构造②
 */
public class Main {
  	//题目只要是把问题想清楚,实际上代码就是一个o(n)双指针就行了
  	//首先第一点如果存在一个排列,那么s最后一位肯定是'1',这个是一个充分条件
  	//同时我们可以想的是对于任意一个'1'结尾的s,每一小段s(i) - s(j)'0001'的字串都可以是对应i - j的值的“打乱”(都不在自己位置上),那么也就是说 存在一个排列是s最后一位肯定是'1'的充要条件
  	//知道上面的情况只要判断结尾是否为'1',对于为'1',使用上面的结论双指针对于每一小段s(i) - s(j)'0001'输出一个“打乱”就行了
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String s = in.nextLine();

        int len;
        if ((len = s.length()) != n || s.charAt(len - 1) != '1') System.out.println(-1);
        else {
            int p1 = 0, p2;
            boolean flag = false;
            for (p2 = 0; p2 < len; p2++) {
                if (s.charAt(p2) == '1') {
                    for (int i = p1 + 2; i <= p2 + 1; i++) {
                        System.out.print((flag ? " " : "") + i);
                        flag = true;
                    }
                    System.out.print((flag ? " " : "") + (p1 + 1));
                    flag = true;
                    p1 = p2 + 1;
                }
            }
        }
    }
}