using System.Collections.Generic;
static void Main(string[] args)
List<List<int?>> input = new List<List<int?>>()
new List<int?>() {5,3,n,n,7,n,n,n,n},
new List<int?>() {6,n,n,1,9,5,n,n,n},
new List<int?>() {n,9,8,n,n,n,n,6,n},
new List<int?>() {8,n,n,n,6,n,n,n,3},
new List<int?>() {4,n,n,8,n,3,n,n,1},
new List<int?>() {7,n,n,n,2,n,n,n,6},
new List<int?>() {n,6,n,n,n,n,2,8,n},
new List<int?>() {n,n,n,4,1,9,n,n,5},
new List<int?>() {n,n,n,n,8,n,n,7,9}
if (IsValidSudoku(input))
Console.WriteLine("Valid");
Console.WriteLine("Invalid");
public static bool IsValidSudoku(List<List<int?>> input)
foreach(var eachRow in input)
var rowAsArray = eachRow.Where(lst => lst != null).ToList();
if(rowAsArray.Distinct().Count() != rowAsArray.Count())
List<List<int?>> columnBasedList = input.ToList();
foreach(var eachRow in input)
foreach(var eachColumn in input)
columnBasedList[rowCount][ColumCount] = input[ColumCount][rowCount];
foreach(var eachRow in columnBasedList)
var rowAsArray = eachRow.Where(lst => lst != null).ToList();
if(rowAsArray.Distinct().Count() != rowAsArray.Count())