#nullable enable #region var _input = Array.Empty(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return _input[_iter++]; } T I() where T : IParsable => T.Parse(String(), null); #endregion const int n = 8; const int mask = n - 1; var az = new int[n][]; for (var i = 0; i < n; i++) { var a = new int[n]; var str = String(); for (var j = 0; j < n; j++) a[j] = str[j] - '0'; az[i] = a; } var ans = false; var s = az[0].AsSpan().ToArray(); void Add(int i, int shift) { var a = az[i]; for (var j = 0; j < n; j++) { var k = (j + shift) & mask; s[k] += a[j]; } } void Sub(int i, int shift) { var a = az[i]; for (var j = 0; j < n; j++) { var k = (j + shift) & mask; s[k] -= a[j]; } } void S(int i) { if (i == n) { ans |= s.Max() == 0; return; } for (var shift = 0; shift < n; shift++) { Sub(i, shift); if (s.Min() >= 0) S(i + 1); Add(i, shift); } } S(1); Console.WriteLine(ans ? "Yes" : "No");