1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;
int n,i,j,d,cur;
char s[1000100],r[100100],o[7];
bool check(int n, int d) {
  return (d>=3*n && d<=6*n);
}
int main() {
  for (i=122; i>96; i--) {
    d=0;
    for (cur=i; cur>0; cur/=2) d+=(cur&1);
    o[d]=i;
  }
  scanf("%d",&n);
  scanf("%s",s);
  for (d=i=0; i<8*n; i++) d+=s[i]-'0';
  if (!check(n,d)) { puts("NIE"); return 0; }
  for (i=1; i<=n; i++) for (j=3; j<7; j++) if (check(n-i,d-j)) {
    r[i-1]=o[j];
    d-=j;
    break;
  }
  puts(r);
  return 0;
}