#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); var n = I(); var pz = Range(n, () => I() - 1); var ans = new List(); while (true) { var sorted = true; for (var i = 0; i < n - 1; i++) { if (pz[i] == i) continue; (pz[i], pz[i + 1]) = (pz[i + 1], pz[i]); ans.Add(i + 1); sorted = false; } if (sorted) break; } Console.WriteLine("Yes"); Console.WriteLine(ans.Count); if (ans.Count > 0) Console.WriteLine(string.Join(Environment.NewLine, ans));