using System.Collections.Generic;
public static void Main()
var results = FindSmallestSquares(n);
Console.WriteLine(string.Join(" + ", results.Select(s => $"{s}^2")));
Console.WriteLine($"Output: {results.Count()}");
private static IEnumerable<int> FindSmallestSquares(int n)
int maxsq = (int)Math.Floor(Math.Sqrt(n));
List<int> bestResult = null, currentResult = null;
for(int startingPoint = maxsq, nn = n; startingPoint > 0; startingPoint--, nn = n)
currentResult = new List<int>();
for(int x = startingPoint; x > 0; x--)
if(bestResult == null || bestResult.Count > currentResult.Count)
bestResult = currentResult;