#include <stdio.h>
int g(int n) {
int t;
return (n == 0) ? 0 : (t = n % 10, g(n / 10) + t * t);
}
int f(int n, int a[], int limit) {
int s, t;
return (n < 10) ? n
: (n <= limit && a[n] != 0 && a[n] < 10) ? a[n]
: (t = g(n),
s = f(t, a, limit),
(t <= limit) ? a[t] = s : 0,
s);
}
int h(int n, int max, int a[], int arraysize) {
int t;
return (n <= max) ? (t = f(n, a, arraysize),
printf("%d:%d->%s\n", n, t, (t == 1) ? "LUCKY" : "unlucky"),
h(n + 1, max, a, arraysize))
: 0;
}
#define N 100
int main() {
static int a[N + 1] = {0};
a[0] = 0; a[1] = 1;
return h(1, 100, a, N);
}
/* end */