Related Articles
Latin Square
• Difficulty Level : Basic
• Last Updated : 10 Dec, 2018

A Latin Square is a n x n grid filled by n distinct numbers each appearing exactly once in each row and column. Given an input n, we have to print a n x n matrix consisting of numbers from 1 to n each appearing exactly once in each row and each column.

Examples :

```Input: 3
Output:  1 2 3
3 1 2
2 3 1

Input: 5
Output:  1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Did you find any pattern in which the number are stored in a Latin Square?

• In the first row, the numbers are stored from 1 to n serially.
• the second row, the numbers are shifted to the right by one column. i.e, 1 is stored at 2nd column now and so on.
• In the third row, the numbers are shifted to the right by two columns. i.e, 1 is stored at 3rd column now and so on.
• We continue same way for remaining rows.

Note: There may be more than one possible configuration of a n x n latin square.

## C++

 `// C++ program to pritn Latin Square``#include`` ` `// Function to print n x n Latin Square``void` `printLatin(``int` `n)``{``    ``// A variable to control the rotation``    ``// point.``    ``int` `k = n+1;`` ` `    ``// Loop to print rows``    ``for` `(``int` `i=1; i<=n; i++)``    ``{``        ``// This loops runs only after first``        ``// iteration of outer loop. It prints``        ``// numbers from n to k``        ``int` `temp = k;``        ``while` `(temp <= n)``        ``{``            ``printf``(``"%d "``, temp);``            ``temp++;``        ``}`` ` `        ``// This loop prints numbers from 1 to k-1.``        ``for` `(``int` `j=1; j

## Java

 `// Java program to pritn Latin Square``class` `GFG {``     ` `    ``// Function to print n x n Latin Square``    ``static` `void` `printLatin(``int` `n)``    ``{``         ` `        ``// A variable to control the ``        ``// rotation point.``        ``int` `k = n+``1``;``     ` `        ``// Loop to print rows``        ``for` `(``int` `i = ``1``; i <= n; i++)``        ``{`` ` `            ``// This loops runs only after``            ``// first iteration of outer ``            ``// loop. It prints``            ``// numbers from n to k``            ``int` `temp = k;`` ` `            ``while` `(temp <= n)``            ``{``                ``System.out.print(temp + ``" "``);``                ``temp++;``            ``}``     ` `            ``// This loop prints numbers from``            ``// 1 to k-1.``            ``for` `(``int` `j = ``1``; j < k; j++)``                ``System.out.print(j + ``" "``);``     ` `            ``k--;``            ``System.out.println();``        ``}``    ``} ``         ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `n = ``5``;``         ` `        ``// Invoking printLatin function``        ``printLatin(n);``    ``}``}`` ` `// This code is contributed by Anant Agarwal.`

## Python 3

 `# Python 3 program to print Latin Square `` ` `# Function to prn x n Latin Square ``def` `printLatin(n): `` ` `    ``# A variable to control the ``    ``# rotation point. ``    ``k ``=` `n ``+` `1`` ` `    ``# Loop to prrows ``    ``for` `i ``in` `range``(``1``, n ``+` `1``, ``1``): ``     ` `        ``# This loops runs only after first ``        ``# iteration of outer loop. It prints ``        ``# numbers from n to k ``        ``temp ``=` `k ``        ``while` `(temp <``=` `n) :``            ``print``(temp, end ``=` `" "``)``            ``temp ``+``=` `1``         ` `        ``# This loop prints numbers``        ``# from 1 to k-1. ``        ``for` `j ``in` `range``(``1``, k):``            ``print``(j, end ``=` `" "``) `` ` `        ``k ``-``=` `1``        ``print``() `` ` `# Driver Code``n ``=` `5`` ` `# Invoking printLatin function ``printLatin(n) `` ` `# This code is contributed by R_Raj`

## C#

 `// C# program to print Latin Square``using` `System;`` ` `class` `GFG {``     ` `    ``// Function to print n x n``    ``// Latin Square``    ``static` `void` `printLatin(``int` `n)``    ``{``         ` `        ``// A variable to control the ``        ``// rotation point.``        ``int` `k = n + 1;``     ` `        ``// Loop to print rows``        ``for` `(``int` `i = 1; i <= n; i++)``        ``{`` ` `            ``// This loops runs only after``            ``// first iteration of outer ``            ``// loop. It prints numbers``            ``// from n to k``            ``int` `temp = k;`` ` `            ``while` `(temp <= n)``            ``{``                ``Console.Write(temp + ``" "``);``                ``temp++;``            ``}``     ` `            ``// This loop prints numbers from``            ``// 1 to k-1.``            ``for` `(``int` `j = 1; j < k; j++)``                ``Console.Write(j + ``" "``);``     ` `            ``k--;``            ``Console.WriteLine();``        ``}``    ``} ``         ` `    ``// Driver code``    ``public` `static` `void` `Main ()``    ``{``        ``int` `n = 5;``         ` `        ``// Invoking printLatin function``        ``printLatin(n);``    ``}``}`` ` `// This code is contributed by KRV.`

## PHP

 ``

Output :
```1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
```

This article is contributed by Pratik Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.