atcoder#ABC141E. [ABC141E] Who Says a Pun?

[ABC141E] Who Says a Pun?

Score : 500500 points

Problem Statement

Given is a string SS of length NN.

Find the maximum length of a non-empty string that occurs twice or more in SS as contiguous substrings without overlapping.

More formally, find the maximum positive integer lenlen such that there exist integers l1l_1 and l2l_2 ( 1l1,l2Nlen+11 \leq l_1, l_2 \leq N - len + 1 ) that satisfy the following:

  • l1+lenl2l_1 + len \leq l_2
  • S[l1+i]=S[l2+i](i=0,1,...,len1)S[l_1+i] = S[l_2+i] (i = 0, 1, ..., len - 1)

If there is no such integer lenlen, print 00.

Constraints

  • 2N5×1032 \leq N \leq 5 \times 10^3
  • S=N|S| = N
  • SS consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

NN

SS

Output

Print the maximum length of a non-empty string that occurs twice or more in SS as contiguous substrings without overlapping. If there is no such non-empty string, print 00 instead.

5
ababa
2

The strings satisfying the conditions are: a, b, ab, and ba. The maximum length among them is 22, which is the answer. Note that aba occurs twice in SS as contiguous substrings, but there is no pair of integers l1l_1 and l2l_2 mentioned in the statement such that l1+lenl2l_1 + len \leq l_2.

2
xy
0

No non-empty string satisfies the conditions.

13
strangeorange
5