Python Руны — это древние магические знаки, которые наши предки использовали как буквы. Говорят, что рунные знаки обладают магическими свойствами, а при сложении рун в слова их магическая сила многократно возрастает. Если кузнец изготовит доспехи и начертит там определенные руны в определенном порядке, то доспехи будут наделены необычайными магическими силами.
Для того, чтобы стать обладателем таких доспехов достаточно просто принести кузнецу начертания этих рунных знаков. А вот, чтобы стать обладателем рунного знака приходилось немало потрудиться. Воины добывали начертания рун других языков и наречий в боях или получали их в качестве наград в благодарность за оказанные услуги.
Но так или иначе и в этом деле развелись жулики. По подозрениям ученых кузнец Игнатус Мошеникус изготавливал благородным воинам фальшивые рунные слова. Из древних преданий ученым стало достоверно известно, что каждая руна записывается из двух, трех или четырех английских букв. Причем первая буква рунного слова всегда записывается как заглавная, а все остальные являются маленькими. Ученые перевели несколько, выкованных этим кузнецом, рунных слов на английский язык и теперь нуждаются в Вашей . Проверьте, является ли приведенное слово рунным.
Входные данные
В единственной строке содержится слово. Оно представляет собой непустую строку, длиной не более 100000 символов, содержащую только большие и маленькие буквы английского алфавита.
Выходные данные
Выведите «Yes», если слово является рунным и «No» в противном случае.
Пример
№ INPUT.TXT OUTPUT.TXT
1 IoIsTheBest Yes
2 IoItIsWaste No
//Pascal ABC.NET v3.0 сборка 1111
//1
Var
a,p,s:real;
begin
readln(a);
p:=a*4;
s:=a*a;
writeln('P=',p);
writeln('S=',s);
end.
//2
Var
a,b:integer;
begin
read(a,b);
if a>b then writeln(b);
if a=b then writeln('=');
if a<b then writeln(a);
end.
{На этом и закончу всем, кто когда либо и чем либо поддерживал данный проект. Думаю, он ещё многим послужит в критический момент. И я говорю не только про "списать домашку". Счастливо оставаться, господин Alviko. Может, ещё увидимся.
Ваш, Глеб 'I3artle' Косырев}
Приведём все степени к основанию 2
2^3702-2^468+2^1620-108
-108 можно представить как -128 + 16 + 4
2^3702-2^468+2^1620-2^7 + 2^4 + 2^2
Теперь выстраиваем степени в порядке убывания:
2^3702+2^1620-2^468-2^7 + 2^4 + 2^2
В выражении два вычитания подряд, избавимся от этого, заменив -2^468 на -2^469 + 2^468
2^3702+2^1620 -2^469+2^468-2^7 + 2^4 + 2^2
2^3702 - 1 единица
2^4 - 1 единица
2^2 - 1 единица
Количество единиц в вычитаниях будет равно разнице степеней. Например 1000000-100=1111
2^1620 -2^469 - количеств единиц 1620-469 = 1151
2^468-2^7 - количество единиц 468-7 = 461
Общее количество единиц равно 3+1151+461 = 1615