A k-cyclic shift of an integer x is a function that removes the last k digits of x and inserts them in its beginning. For example, the k-cyclic shifts of 123 are 312 for k = 1 and 231 for k = 2.
Teo, a kid from Canada, learned from his Canadian friends this definition of ugly numbers: a number is ugly if, and only if every one of its k-cyclic shifts returns a number greater than or equal to it.
Given an n-digit decimal number x, can you answer if it is ugly or not?
Input
The first line of the input contains a single integer n (1 ≤ n ≤ 5 × 105), indicating the number of digits of the number.
The next line contains an n-digit decimal number, indicating the value of x.
Output
Output “Yes” if x is an ugly number and “No” otherwise.
Examples
Input
3
123
Output
Yes
Input
4
2214
Output
No
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int n,a[500005],b[500005];
int main()
{
char c;
scanf("%d",&n);
getchar();
int f=1;
a[0]=-1;
int k = 1 ;
for(int i=1; i<=n; i++)
{
scanf("%c",&c);
a[i]=c-'0';
if(f==1&&a[i]>=a[i-1])
{
b[k++] = a[i] ;
}
else
f = 0;
}
f = 1;
for(int i = 2; i<=n; i++)
{
if(a[i]>=a[i-1])
continue;
else
{
int l = 1;
int j = i ;
while(l<k)
{
if(a[j]<b[l])
{
f = 0;
break;
}
else if(a[j]==b[l])
{
j++;
l++;
}
else
{
break;
}
}
}
}
if(f==0)
printf("No\n");
else
printf("Yes\n");
return 0;
}