using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
var list = new[] { 80,81,90,90,90,90,90,90,100,85,86,86,79,95,95,95,95 };
var dupes = FindDupes(list);
Console.WriteLine(string.Join(", ", dupes.Select(n => n.ToString()).ToArray()));
}
public static IEnumerable<int> FindDupes(IEnumerable<int> list) {
int? back2 = null, back1 = null, prev = null;
foreach(int current in list) {
if(back2.HasValue) {
if(back2.Value == back1.Value && back1.Value == current) {
if(!prev.HasValue || prev.Value != current) {
yield return current;
prev = current;
}
}
}
back2 = back1;
back1 = current;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkgICAgdmFyIGxpc3QgPSBuZXdbXSB7IDgwLDgxLDkwLDkwLDkwLDkwLDkwLDkwLDEwMCw4NSw4Niw4Niw3OSw5NSw5NSw5NSw5NSB9OwoJICAgIHZhciBkdXBlcyA9IEZpbmREdXBlcyhsaXN0KTsKCQlDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiLCAiLCBkdXBlcy5TZWxlY3QobiA9PiBuLlRvU3RyaW5nKCkpLlRvQXJyYXkoKSkpOwoJfQoJCglwdWJsaWMgc3RhdGljIElFbnVtZXJhYmxlPGludD4gRmluZER1cGVzKElFbnVtZXJhYmxlPGludD4gbGlzdCkgewoJCWludD8gYmFjazIgPSBudWxsLCBiYWNrMSA9IG51bGwsIHByZXYgPSBudWxsOwoJCWZvcmVhY2goaW50IGN1cnJlbnQgaW4gbGlzdCkgewoJCQlpZihiYWNrMi5IYXNWYWx1ZSkgewoJCQkJaWYoYmFjazIuVmFsdWUgPT0gYmFjazEuVmFsdWUgJiYgYmFjazEuVmFsdWUgPT0gY3VycmVudCkgewoJCQkJCWlmKCFwcmV2Lkhhc1ZhbHVlIHx8IHByZXYuVmFsdWUgIT0gY3VycmVudCkgewoJCQkJCQl5aWVsZCByZXR1cm4gY3VycmVudDsKCQkJCQkJcHJldiA9IGN1cnJlbnQ7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCQoJCQliYWNrMiA9IGJhY2sxOwoJCQliYWNrMSA9IGN1cnJlbnQ7CgkJfQoJfQp9