시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 512 MB124457.143%

문제

새로운 언어를 만들었다. 이 언어에서 '단어'는 아래 조건을 모두 만족하는 비어있지 않은 문자열이다.

  1. 영어 소문자 ('a'-'z'), 마침표 ('.'), 붙임표 ('-'), 그리고 별표 ('*') 로만 구성되어 있는 비어있지 않은 문자열
  2. 문자열에 포함된 연속한 세 글자가 모두 특수문자인 경우가 없는 문자열 (특수문자는 '.', '-', '*')
  3. 문자열에 포함된 연속한 세 글자가 모두 모음인 경우가 없는 문자열 (모음은 'a', 'e', 'i', 'o', 'u')
  4. 문자열에 포함된 연속한 세 글자가 자음/모음/특수문자 관계없이 모두 동일한 경우가 없는 문자열
  5. 첫 글자가 특수문자가 아니고 마지막 글자도 특수문자가 아닌 문자열

예를 들어, 길이가 1인 단어는 총 26가지가 있다. 영어 소문자 한 글자는 각각이 단어이다. 추가로, "boj", "i.am.coder", and "hello*world" 모두 단어이다. 하지만, "zzz", ".boj", "mioum", and "hello-.-world" 네 문자열은 단어가 아니다. 

양수 a, b가 주어졌을 때, 길이가 a이상 b이하인 단어의 개수를 구하는 프로그램을 작성하시오. 단, 수가 매우 클 수 있으므로 이 수를 (109 + 7)로 나눈 나머지를 출력한다.

입력

첫 줄에 두 정수 a와 b (1 ≤ a ≤ b ≤ 1018)가 주어진다.

출력

첫 줄에 길이가 a이상 b이하인 단어의 개수를 (109 + 7)로 나눈 나머지를 출력한다.

서브태스크

번호배점제한
15

1 ≤ a ≤ b ≤ 5

26

1 ≤ a ≤ b ≤ 1,000

39

1 ≤ a ≤ b ≤ 1,000,000

420

1 ≤ a ≤ b ≤ 1018

예제 입력 1

1 1

예제 출력 1

26

예제 입력 2

1 2

예제 출력 2

702

예제 입력 3

4 5

예제 출력 3

16745010

예제 입력 4

28 28

예제 출력 4

9496760

예제 입력 5

999999999999999999 999999999999999999

예제 출력 5

415475129
W3sicHJvYmxlbV9pZCI6IjE1OTM1IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjMGM4XHViODVjXHVjNmI0IFx1YzViOFx1YzViNCIsImRlc2NyaXB0aW9uIjoiPHA+XHVjMGM4XHViODVjXHVjNmI0IFx1YzViOFx1YzViNFx1Yjk3YyBcdWI5Y2NcdWI0ZTRcdWM1YzhcdWIyZTQuIFx1Yzc3NCBcdWM1YjhcdWM1YjRcdWM1ZDBcdWMxMWMmbmJzcDsmIzM5O1x1YjJlOFx1YzViNCYjMzk7XHViMjk0IFx1YzU0NFx1Yjc5OCBcdWM4NzBcdWFjNzRcdWM3NDQgXHViYWE4XHViNDUwIFx1YjljY1x1Yzg3MVx1ZDU1OFx1YjI5NCBcdWJlNDRcdWM1YjRcdWM3ODhcdWM5YzAgXHVjNTRhXHVjNzQwIFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT5cdWM2MDFcdWM1YjQgXHVjMThjXHViYjM4XHVjNzkwICgmIzM5O2EmIzM5Oy0mIzM5O3omIzM5OyksIFx1YjljOFx1Y2U2OFx1ZDQ1YyAoJiMzOTsuJiMzOTspLCBcdWJkOTlcdWM3ODRcdWQ0NWMgKCYjMzk7LSYjMzk7KSwgXHVhZGY4XHViOWFjXHVhY2UwIFx1YmNjNFx1ZDQ1YyAoJiMzOTsqJiMzOTspIFx1Yjg1Y1x1YjljYyBcdWFkNmNcdWMxMzFcdWI0MThcdWM1YjQgXHVjNzg4XHViMjk0IFx1YmU0NFx1YzViNFx1Yzc4OFx1YzljMCBcdWM1NGFcdWM3NDAgXHViYjM4XHVjNzkwXHVjNWY0PFwvbGk+XHJcblx0PGxpPlx1YmIzOFx1Yzc5MFx1YzVmNFx1YzVkMCBcdWQzZWNcdWQ1NjhcdWI0MWMgXHVjNWYwXHVjMThkXHVkNTVjIFx1YzEzOCBcdWFlMDBcdWM3OTBcdWFjMDAgXHViYWE4XHViNDUwIFx1ZDJiOVx1YzIxOFx1YmIzOFx1Yzc5MFx1Yzc3OCBcdWFjYmRcdWM2YjBcdWFjMDAgXHVjNWM2XHViMjk0IFx1YmIzOFx1Yzc5MFx1YzVmNCAoXHVkMmI5XHVjMjE4XHViYjM4XHVjNzkwXHViMjk0ICYjMzk7LiYjMzk7LCAmIzM5Oy0mIzM5OywgJiMzOTsqJiMzOTspPFwvbGk+XHJcblx0PGxpPlx1YmIzOFx1Yzc5MFx1YzVmNFx1YzVkMCBcdWQzZWNcdWQ1NjhcdWI0MWMgXHVjNWYwXHVjMThkXHVkNTVjIFx1YzEzOCBcdWFlMDBcdWM3OTBcdWFjMDAgXHViYWE4XHViNDUwIFx1YmFhOFx1Yzc0Y1x1Yzc3OCBcdWFjYmRcdWM2YjBcdWFjMDAgXHVjNWM2XHViMjk0IFx1YmIzOFx1Yzc5MFx1YzVmNCAoXHViYWE4XHVjNzRjXHVjNzQwICYjMzk7YSYjMzk7LCAmIzM5O2UmIzM5OywgJiMzOTtpJiMzOTssICYjMzk7byYjMzk7LCAmIzM5O3UmIzM5Oyk8XC9saT5cclxuXHQ8bGk+XHViYjM4XHVjNzkwXHVjNWY0XHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxYyBcdWM1ZjBcdWMxOGRcdWQ1NWMgXHVjMTM4IFx1YWUwMFx1Yzc5MFx1YWMwMCBcdWM3OTBcdWM3NGNcL1x1YmFhOFx1Yzc0Y1wvXHVkMmI5XHVjMjE4XHViYjM4XHVjNzkwIFx1YWQwMFx1YWNjNFx1YzVjNlx1Yzc3NCBcdWJhYThcdWI0NTAgXHViM2Q5XHVjNzdjXHVkNTVjIFx1YWNiZFx1YzZiMFx1YWMwMCBcdWM1YzZcdWIyOTQgXHViYjM4XHVjNzkwXHVjNWY0PFwvbGk+XHJcblx0PGxpPlx1Y2NhYiBcdWFlMDBcdWM3OTBcdWFjMDAmbmJzcDtcdWQyYjlcdWMyMThcdWJiMzhcdWM3OTBcdWFjMDAgXHVjNTQ0XHViMmM4XHVhY2UwIFx1YjljOFx1YzljMFx1YjljOSBcdWFlMDBcdWM3OTBcdWIzYzQgXHVkMmI5XHVjMjE4XHViYjM4XHVjNzkwXHVhYzAwIFx1YzU0NFx1YjJjYyBcdWJiMzhcdWM3OTBcdWM1ZjQ8XC9saT5cclxuPFwvb2w+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWFlMzhcdWM3NzRcdWFjMDAgMVx1Yzc3OCBcdWIyZThcdWM1YjRcdWIyOTQgXHVjZDFkIDI2XHVhYzAwXHVjOWMwXHVhYzAwIFx1Yzc4OFx1YjJlNC4gXHVjNjAxXHVjNWI0IFx1YzE4Y1x1YmIzOFx1Yzc5MCBcdWQ1NWMgXHVhZTAwXHVjNzkwXHViMjk0IFx1YWMwMVx1YWMwMVx1Yzc3NCBcdWIyZThcdWM1YjRcdWM3NzRcdWIyZTQuIFx1Y2Q5NFx1YWMwMFx1Yjg1YywgJnF1b3Q7Ym9qJnF1b3Q7LCAmcXVvdDtpLmFtLmNvZGVyJnF1b3Q7LCBhbmQgJnF1b3Q7aGVsbG8qd29ybGQmcXVvdDsgXHViYWE4XHViNDUwIFx1YjJlOFx1YzViNFx1Yzc3NFx1YjJlNC4gXHVkNTU4XHVjOWMwXHViOWNjLCAmcXVvdDt6enomcXVvdDssICZxdW90Oy5ib2omcXVvdDssICZxdW90O21pb3VtJnF1b3Q7LCBhbmQgJnF1b3Q7aGVsbG8tLi13b3JsZCZxdW90OyBcdWIxMjQgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzQwIFx1YjJlOFx1YzViNFx1YWMwMCBcdWM1NDRcdWIyYzhcdWIyZTQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlx1YzU5MVx1YzIxOCBhLCBiXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1YWUzOFx1Yzc3NFx1YWMwMCBhXHVjNzc0XHVjMGMxIGJcdWM3NzRcdWQ1NThcdWM3NzggXHViMmU4XHVjNWI0XHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC4mbmJzcDtcdWIyZTgsIFx1YzIxOFx1YWMwMCBcdWI5ZTRcdWM2YjAgXHVkMDc0IFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJiYzBcdWI4NWMgXHVjNzc0IFx1YzIxOFx1Yjk3YyAoMTA8c3VwPjk8XC9zdXA+ICsgNylcdWI4NWMgXHViMDk4XHViMjA4IFx1YjA5OFx1YmEzOFx1YzljMFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWIgXHVjOTA0XHVjNWQwIFx1YjQ1MCBcdWM4MTVcdWMyMTggYVx1YzY0MCBiICgxICZsZTsgYSAmbGU7IGIgJmxlOyAxMDxzdXA+MTg8XC9zdXA+KVx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVjY2FiIFx1YzkwNFx1YzVkMCBcdWFlMzhcdWM3NzRcdWFjMDAgYVx1Yzc3NFx1YzBjMSBiXHVjNzc0XHVkNTU4XHVjNzc4IFx1YjJlOFx1YzViNFx1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgKDEwPHN1cD45PFwvc3VwPiArIDcpXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiIsInN1YnRhc2sxIjoiPHA+MSAmbGU7IGEgJmxlOyBiICZsZTsgNTxcL3A+XHJcbiIsInN1YnRhc2syIjoiPHA+MSAmbGU7IGEgJmxlOyBiICZsZTsmbmJzcDsxLDAwMDxcL3A+XHJcbiIsInN1YnRhc2szIjoiPHA+MSAmbGU7IGEgJmxlOyBiICZsZTsmbmJzcDsxLDAwMCwwMDA8XC9wPlxyXG4iLCJzdWJ0YXNrNCI6IjxwPjEgJmxlOyBhICZsZTsgYiAmbGU7Jm5ic3A7MTA8c3VwPjE4PFwvc3VwPjxcL3A+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjE1OTM1IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiTmV3IExhbmd1YWdlIiwiZGVzY3JpcHRpb24iOiI8cD5Zb3UgaGF2ZSBkZXNpZ25lZCBhIG5ldyBsYW5ndWFnZS4gSW4gdGhpcyBsYW5ndWFnZSwgYSB3b3JkIGlzIGRlZmluZWQgYXMgYSBub24tZW1wdHkgc3RyaW5nIHRoYXQgbWVldHMgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zLjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPkl0IGlzIGEgbm9uLWVtcHR5IHN0cmluZyB0aGF0IG9ubHkgY29udGFpbnMgbG93ZXItY2FzZSBFbmdsaXNoIGFscGhhYmV0cyAoJmxzcXVvO2EmcnNxdW87LSZsc3F1bzt6JnJzcXVvOykgYW5kIHNvbWUgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIC0tIHBlcmlvZHMgKCZsc3F1bzsuJnJzcXVvOyksIGh5cGhlbnMgKCZsc3F1bzstJmxzcXVvOyksIGFuZCBhc3Rlcmlza3MgKCZsc3F1bzsqJmxzcXVvOykuPFwvbGk+XHJcblx0PGxpPk5vIHRocmVlIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgYXJlIGFsbCBzcGVjaWFsIGNoYXJhY3RlcnMgKHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgJmxzcXVvOy4mcnNxdW87LCAmbHNxdW87LSZsc3F1bzssIGFuZCAmbHNxdW87KiZsc3F1bzspLjxcL2xpPlxyXG5cdDxsaT5ObyB0aHJlZSBjb25zZWN1dGl2ZSB2b3dlbHMgYXJlIGZvdW5kICh0aGVyZSBhcmUgZml2ZSB2b3dlbHM6ICZsc3F1bzthJnJzcXVvOywmcnNxdW87ZSZyc3F1bzssICZsc3F1bztpJnJzcXVvOywgJmxzcXVvO28mcnNxdW87LCAmbHNxdW87dSZyc3F1bzspLjxcL2xpPlxyXG5cdDxsaT5ObyB0aHJlZSBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIGFyZSBvZiB0aGUgc2FtZSBjaGFyYWN0ZXIgKHJlZ2FyZGxlc3Mgb2YgdGhlbSBiZWluZyBjb25zb25hbnRzLCB2b3dlbHMsIGFuZCBzcGVjaWFscykuPFwvbGk+XHJcblx0PGxpPk5laXRoZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBub3IgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGEgc3BlY2lhbCBjaGFyYWN0ZXIuPFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+Rm9yIGluc3RhbmNlLCB0aGVyZSBhcmUgMjYgdmFsaWQgd29yZHMgb2YgbGVuZ3RoIDEgaW4gdGhpcyBsYW5ndWFnZSAtLSBlYWNoIGxvd2VyLWNhZXMgRW5nbGlzaCBhbHBoYWJldCBpdHNlbGYgaXMgYSB2YWxpZCB3b3JkLiBJbiBhZGRpdGlvbiwgJnF1b3Q7Ym9qJnF1b3Q7LCAmcXVvdDtpLmFtLmNvZGVyJnF1b3Q7LCBhbmQgJnF1b3Q7aGVsbG8qd29ybGQmcXVvdDsgKHF1b3RlcyBmb3IgY2xhcml0eSkgYXJlIHZhbGlkIHdvcmRzLCB3aGVyZWFzICZxdW90O3p6eiZxdW90OywgJnF1b3Q7LmJvaiZxdW90OywgJnF1b3Q7bWlvdW0mcXVvdDssIGFuZCAmcXVvdDtoZWxsby0uLXdvcmxkJnF1b3Q7IGFyZSBub3QgdmFsaWQgd29yZHMuPFwvcD5cclxuXHJcbjxwPkdpdmVuIHR3byBwb3NpdGl2ZSBpbnRlZ2VycyBhLCBhbmQgYiwgY29tcHV0ZSB0aGUgbnVtYmVyIG9mIHZhbGlkIHdvcmRzIG9mIGxlbmd0aHMgYmV0d2VlbiBhIGFuZCBiIChpbmNsdXNpdmUpLiBTaW5jZSB0aGlzIG51bWJlciBjYW4gYmUgcXVpdGUgbGFyZ2UsIHlvdSBzaG91bGQgb3V0cHV0IHRoaXMgbnVtYmVyIG1vZHVsbyAoMTA8c3VwPjk8XC9zdXA+ICsgNykuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSB3aWxsIGNvbnRhaW4gdHdvIGludGVnZXJzIGEgYW5kIGIgKDEgJmxlOyBhICZsZTsgYiAmbGU7IDEwPHN1cD4xODxcL3N1cD4pLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIG11c3QgY29udGFpbiB0aGUgbnVtYmVyIG9mIHZhbGlkIHdvcmRzIG9mIGxlbmd0aHMgYmV0d2VlbiBhIGFuZCBiIChpbmNsdXNpdmUpIG1vZHVsbyAoMTA8c3VwPjk8XC9zdXA+ICsgNykuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCIsInN1YnRhc2sxIjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgYSAmbGU7IGIgJmxlOyZuYnNwOzU8XC9saT5cclxuPFwvdWw+XHJcbiIsInN1YnRhc2syIjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgYSAmbGU7IGIgJmxlOyZuYnNwOzEsMDAwPFwvbGk+XHJcbjxcL3VsPlxyXG4iLCJzdWJ0YXNrMyI6Ijx1bD5cclxuXHQ8bGk+MSAmbGU7IGEgJmxlOyBiICZsZTsmbmJzcDsxLDAwMCwwMDA8XC9saT5cclxuPFwvdWw+XHJcbiIsInN1YnRhc2s0IjoiPHVsPlxyXG5cdDxsaT4xICZsZTsgYSAmbGU7IGIgJmxlOyZuYnNwOzEwPHN1cD4xODxcL3N1cD48XC9saT5cclxuPFwvdWw+XHJcbiJ9XQ==

출처

  • 문제를 만든 사람: haden

채점 및 기타 정보

  • 예제는 채점하지 않는다.