//該題受到a034. 二進位制轉換啟發
#include<iostream>
using namespace std;
int main(void){
int n,m;
while(cin>>n>>m){ //先導入範圍
bool can=false; //設定一個布林值can,作為該範圍中有無阿姆斯壯數的標籤(用來判斷是否輸出none)
for(int i=n;i<=m;i++){
int t; // t作為一個代替i去計算的變數,目的為保留i
int r; // r記錄下t除以10之後的餘數
int num = 0; //num紀錄t為幾位數,主要以while迴圈執行次數累加來記錄
int sum = 0; // sum紀錄每回餘數r 開 i值位數num 次方後的值的總和
t=i; // i將被計算的重責大任交付給t
while(t>0){ //計算t的位數,while迴圈會在t不足以除以10的時候=0而停止
num += 1;
t /= 10;
}
t=i;
while(t>0){ //計算sum
r = t%10;
t /= 10;
int ss=1; //ss作為r開 num 次方後所得的數,記得預設為1
for(int j=0;j<num;j++){
ss *= r;
}
sum += ss;
}
if(sum==i){ //判斷sum值是否等於i值
can = true; //如果是,將can設為true
cout<<sum<<" "; //兩個符合阿姆斯壯數的i值之間有空格
}
}
if(!can){ //可能會被認為是多此一舉,但我覺得這樣比較值觀些,如果can是true(該範圍有阿姆斯壯數)
cout<<"none"; //則加上!整個!can就會變成false,即不成立,即不輸出none
}
cout<<endl; //換行,以執行下一個範圍
}
return 0; //資訊老師叮嚀return 0友善電腦:)
}