using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(int n) => Enumerable.Repeat(0, n).Select(_ => NList).ToArray(); static void Main() { var s = ReadLine(); var map = NArr(26); var nextd = new int[26][]; for (var i = 0; i < nextd.Length; ++i) nextd[i] = Enumerable.Repeat(int.MaxValue / 2, s.Length).ToArray(); for (var i = s.Length - 2; i >= 0; --i) { for (var c = 0; c < 26; ++c) { if (s[i + 1] - 'a' == c) nextd[c][i] = 1; else nextd[c][i] = nextd[c][i + 1] + 1; } } var len = new int[26][]; for (var i = 0; i < len.Length; ++i) len[i] = Enumerable.Repeat(int.MaxValue / 2, 26).ToArray(); for (var i = 0; i < nextd.Length; ++i) { for (var j = 0; j < nextd[i].Length; ++j) { var c = s[j] - 'a'; len[c][i] = Math.Min(len[c][i], nextd[i][j]); } } var res = new bool[26][]; for (var i = 0; i < res.Length; ++i) { res[i] = new bool[26]; for (var j = 0; j < res[i].Length; ++j) { if (map[i][j] <= len[i][j]) res[i][j] = true; } } WriteLine(string.Join("\n", res.Select(r => string.Join(" ", r.Select(f => f ? "Y" : "N"))))); } }