#include <stdio.h>
#include <stdlib.h>
#define INITSIZE 100
#define INCREAMENT 10
typedef struct SqStack{
int * data;
int * top;
int stacksize;
}SqStack;
void InitStack(SqStack * L){
L -> data = (int *)malloc(INITSIZE * sizeof(int));
if (!(L -> data)) exit(0);
L -> top = L -> data;
L -> stacksize = INITSIZE;
}
void Push(SqStack * L, int e){
if (L -> top - L -> data >= L -> stacksize){
L -> data = (int *)realloc(L -> data, (L -> stacksize + INCREAMENT) * sizeof(int));
if (!(L -> data)) exit(0);
L -> top = L -> data + L -> stacksize;
L -> stacksize = L -> stacksize + INCREAMENT;
}
* L -> top ++ = e;
}
void Pop(SqStack * L, int * e){
if (L -> top == L -> data) exit(0);
* e = * -- L -> top;
}
void GetTop(SqStack L, int * e){
if (L.top == L.data) exit(0);
* e = * (L.top - 1);
}
void Conversion(int n){ //应用一:进制转换
SqStack L;
InitStack(&L);
int e;
while (n != 0){
Push (&L, n % 8);
n = n / 8;
}
while (L.top != L.data){
Pop (&L, &e);
printf("%d", e);
}
}
int main(){
int n;
scanf("%d", &n);
Conversion(n);
return 0;
}