#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
#define _for(i, a, b) for(int i = a; i < b; i++)
const int maxn = 105;
const int mod = 100000000;
//1 1 2 3 5 8 13 21 34
template<int row, int col>
struct Matrix{
Matrix();
ll ele[row][col];
Matrix(int a, int b): r(a), c(b) {
memset(ele, 0, sizeof(ele));
}
ll &operator()(int a, int b){
return ele[a][b];
}
Matrix &operator*=(Matrix oth) {
return *this = *this * oth;
}
int r, c;
};
template<int m, int n, int p>
Matrix<m, p> mulmod(Matrix<m, n> m1, Matrix<n, p> m2, int mod)//普通乘法
{
Matrix<m, p> ret(m1.r, m2.c);
_for(i, 0, m1.r){
_for(k, 0, m1.c){
_for(j, 0, m2.c){
ret(i, j) = (ret(i, j) + m1(i, k) * m2(k, j) % mod) % mod;
}
}
}
return ret;
}
template<int m, int n>
Matrix<m, n> qpowmod(Matrix<m, n>mat, ll k, int mod){
Matrix<m, n> ans = mat;
for(k--; k; mat = mulmod(mat, mat, mod), k >>= 1){
if(k & 1){
ans = mulmod(ans, mat, mod);
}
}
return ans;
}
template<int m, int n>
istream &operator>>(istream &is, Matrix<m, n> &mat){
_for(i, 0, mat.r){
_for(j, 0, mat.c){
is >> mat(i, j);
}
}
return is;
}
template<int m, int n>
ostream &operator<<(ostream &os, Matrix<m, n> &mat){
_for(i, 0, mat.r){
_for(j, 0, mat.c){
os << mat(i, j) << ' ';
}
os << endl;
}
return os;
}
int main(){
int n;
while(cin >> n && n != -1){
if(n == 0) {
cout << 0 << endl;
continue;
}
Matrix<maxn, maxn> mat(2, 2);
mat(0, 0) = 1, mat(0, 1) = 1, mat(1, 0) = 1, mat(1, 1) = 0;
auto tmp = qpowmod(mat, n, mod);
cout << tmp(0, 1) << endl;
}
return 0;
}