题目链接:http://poj.org/problem?id=3210
//C++代码
//若n为偶数
//1:若初始状态为偶数正面+偶数反面,要想变成全正或全反,翻转次数必为偶数
//2:若初始状态为奇数正面+奇数反面,要想变成全正或全反,翻转次数必为奇数
//因此,无法得到一个确定的翻转次数x,使得对任意初始状态均可通过x次翻转变成全正或全反,故应输出"No Solution!"
//若n为奇数
//初始状态可能为偶数正面+奇数反面或偶数反面+奇数正面
//由于上述两种初始状态可以看成是等价的,故以下只考虑偶数正面+奇数反面的情况
//1:若初始状态为全反,翻转次数为0,2,4,...或n,n+2,n+4,...
//2:若初始状态为(n-1)正+1反,翻转次数为n-1,n+1,n+3,...或1,3,5,...
//由1和2可知,若翻转次数为偶数,则至少为n-1,若翻转次数为奇数,则至少为n
//3:对于初始状态2正+(n-2)反,4正+(n-4)反,...,(n-3)正+3反,通过n-1次翻转均可变为全反
//因此,当n为奇数时,最少翻转次数为n-1
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n,n){
if(n&1) cout<<n-1<<endl;
else cout<<"No Solution!"<<endl;
}
return 0;
}