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 void Main() { var t = NN; var res = new char[t]; for (var u = 0; u < t; ++u) { var x = ReadLine(); var y = ReadLine(); res[u] = Compare(x, y); } WriteLine(string.Join("\n", res)); } static char Compare(string x, string y) { if (x[0] > y[0]) return 'X'; if (x[0] < y[0]) return 'Y'; if (IsRepeat(x, y)) { if (x.Length > y.Length) return 'X'; else return 'Y'; } var pos = 1; while (true) { var xi = pos % x.Length; var yi = pos % y.Length; if (xi == 0 && yi == 0) break; if (x[xi] > y[yi]) return 'X'; if (x[xi] < y[yi]) return 'Y'; ++pos; } return ' '; } static bool IsRepeat(string x, string y) { var gcd = GCD(x.Length, y.Length); var glist = x.Take(gcd).ToArray(); for (var i = gcd; i < x.Length; ++i) { if (x[i] != glist[i % gcd]) return false; } for (var i = 0; i < y.Length; ++i) { if (y[i] != glist[i % gcd]) return false; } return true; } static int GCD(int a, int b) { if (a < b) return GCD(b, a); if (a % b == 0) return b; return GCD(b, a % b); } }