using System.Collections.Generic;
public static void Main ()
var emptyRole = Tuple.Create(0, String.Empty);
var rules = new List<Func<Int32, Tuple<Int32, String>>>
s => s % 3 == 0 && s % 5 == 0 ? Tuple.Create(1, @"FizzBuzz") : emptyRole,
s => s % 3 == 0 ? Tuple.Create(2, @"Fizz") : emptyRole,
s => s % 5 == 0 ? Tuple.Create(3, @"Buzz") : emptyRole
.Select(sr => Tuple.Create(s, sr.Invoke(s)))
.Where(p => p.Item2.Item1 >= 1)
.Where(p => p.Count >= 1)
.Select(s => s.Aggregate((seed, rs) => seed.Item2.Item1 < rs.Item2.Item1 ? seed : rs))
.Select(s => $"{s.Item1.ToString().PadLeft(2, '0')} - {s.Item2.Item2}")
.ForEach(Console.WriteLine);