using System;
using System.Linq;
using System.Collections.Generic;
public static class Test
{
public static IEnumerable<T> Last<T>(this IEnumerable<T> source, int n)
{
using(var it = source.GetEnumerator())
{
var buffer = new T[n];
var i = 0;
while (it.MoveNext())
buffer[(i++) % n] = it.Current;
var len = Math.Min(n, i);
for (int j = i - len; j < i; j++)
yield return buffer[ (j + n) % n];
}
}
public static void Main()
{
var seq = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (var n in seq.Last(5))
Console.Write(string.Format("{0} ", n));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgc3RhdGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0YXRpYyBJRW51bWVyYWJsZTxUPiBMYXN0PFQ+KHRoaXMgSUVudW1lcmFibGU8VD4gc291cmNlLCBpbnQgbikKICAgIHsKICAgICAgICB1c2luZyh2YXIgaXQgPSBzb3VyY2UuR2V0RW51bWVyYXRvcigpKQogICAgICAgIHsKICAgIAkgICAgdmFyIGJ1ZmZlciA9IG5ldyBUW25dOwogICAgCSAgICB2YXIgaSA9IDA7CgogICAgICAgICAgICB3aGlsZSAoaXQuTW92ZU5leHQoKSkKICAgICAgICAJICAgIGJ1ZmZlclsoaSsrKSAlIG5dID0gaXQuQ3VycmVudDsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBsZW4gPSBNYXRoLk1pbihuLCBpKTsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGkgLSBsZW47IGogPCBpOyBqKyspCiAgICAgICAgICAgCQl5aWVsZCByZXR1cm4gYnVmZmVyWyAoaiArIG4pICUgbl07IAoKICAgICAgICB9CiAgICB9CgoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzZXEgPSBuZXdbXSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKCQlmb3JlYWNoICh2YXIgbiBpbiBzZXEuTGFzdCg1KSkKCQkgICAgQ29uc29sZS5Xcml0ZShzdHJpbmcuRm9ybWF0KCJ7MH0gIiwgbikpOwoJfQp9