using System.Collections.Generic;
FindAndPrintDiagonals(arr);
static void FindAndPrintDiagonals(int[][] input)
var diagonalsFromLeft = FindDiagonalsWhichStartsFromLeft(input);
var diagonalsFromTop = FindDiagonalsWhichStartsFromTop(input);
foreach (var diagonal in diagonalsFromLeft.Union(diagonalsFromTop))
Console.WriteLine(string.Join(" ", diagonal));
static List<List<int>> FindDiagonalsWhichStartsFromLeft(int[][] input)
var diagonals = new List<List<int>>();
for (int row = input.Length - 1; row > 0; row--)
int rowIndex = row, columnIndex = 0;
var diagonal = new List<int>()
input[rowIndex][columnIndex]
GetDiagonal(input, diagonal, rowIndex, columnIndex);
static List<List<int>> FindDiagonalsWhichStartsFromTop(int[][] input)
var diagonals = new List<List<int>>();
for (int column = 0; column < input[0].Length; column++)
int rowIndex = 0, columnIndex = column;
var diagonal = new List<int>()
input[rowIndex][columnIndex]
GetDiagonal(input, diagonal, rowIndex, columnIndex);
static void GetDiagonal(int[][] input, List<int> diagonal, int rowIndex, int columnIndex)
rowIndex++; columnIndex++;
if (rowIndex >= input.Length || columnIndex >= input[rowIndex].Length)
diagonal.Add(input[rowIndex][columnIndex]);