using System.Collections.Generic;
private static void Main(string[] args)
List<List<int>> arrays = new List<List<int>>();
string filePath = "D:\\projects\\pi_works\\PiWorks\\input.in";
foreach(var line in System.IO.File.ReadLines(filePath))
if (line == "" || line.Length == 0) break;
int result = FindMaxNum(arrays);
Console.WriteLine($"Maximum Path Sum: {result}");
private static int FindMaxNum(List<List<int>> arrayinput)
List<List<int>> arrayCopy = arrayinput.Select(innerList => new List<int>(innerList)).ToList();
for (int i = N - 2; i >= 0; i--)
for (int k = 0; k < arrayCopy[i].Count; k++)
if (IsPrime(arrayCopy[i][k]))
int leftDiag = (k - 1 >= 0) ? arrayCopy[i + 1][k - 1] : 0;
int under = arrayCopy[i + 1][k];
int rightDiag = (k + 1 < arrayCopy[i + 1].Count) ? arrayCopy[i + 1][k + 1] : 0;
arrayCopy[i][k] += Math.Max(leftDiag, Math.Max(under, rightDiag));
private static bool IsPrime(int num)
if (num < 2) return false;
for (int i = 2; i * i <= num; i++)
if (num % i == 0) return false;