#include <bits/stdc++.h>
#include <boost/range/adaptors.hpp>
#include <boost/multiprecision/cpp_int.hpp>

using namespace std;
using ll = long long;
using ld = long double;
using ml = boost::multiprecision::cpp_int;

namespace NyaGadget
{
	/*** DFSライブラリ***/

#define fori(i, ...) if(ll i = -1) for(__VA_ARGS__) if(i++, true)
#define each(i, e, v) fori(i, auto& e: v)

	struct DFSnode
	{	// DFS NODE
		ll r = 0;  // root node
		ll s = 0;  // self node
	};

	struct DepthFirstSearchSample
	{	// これはテスト構造体なので、新しく定義すること。
		vector<ll> ans;
	};

	void DepthFirstSearchTest(DFSnode n, DepthFirstSearchSample& v)
	{	// これはDFS::Runの第三引数Updateの一例なので、新しく定義すること。
		v.ans[n.s] = v.ans[n.r] + 1;
	}

	struct DFS
	{
		using Edge = vector<ll>;
		vector<Edge> graph;

		DFS(ll size) { graph.resize(size); }
		vector<ll>& operator [](int n) { return graph[n]; }

		/**
		@brief 辺を追加する関数
		@note
		 頂点v1とv2を結ぶ辺を追加する。
		**/
		void CreateEdge(ll v1, ll v2)
		{	// 後戻りも出来るようにv1->v2とv2->v1の両方の辺を追加する
			graph[v1].push_back(v2);
			graph[v2].push_back(v1);
		}

		/**
		@brief 実行関数
		@param snode 開始ノード
		@param v 各ノード処理に必要な変数
		@param Update ノード毎の処理を定義した関数
		@note
		 大抵の場合、開始ノードは{0, 0}で良い。
		 Updateの処理に根と自身の頂点index情報が必要なので第一引数はDFSnodeにする。
		 頂点index情報以外で必要な変数はvで渡し、Updateの第二引数と変数vは同じ型にする。
		**/
		template <class T> void
		Run(DFSnode snode, T& v, function<void(DFSnode, T&)> Update)
		{
			Update(snode, v);

			each(i, e, graph[snode.s])
			{	// 後戻りしないようにする
				if (e == snode.r)
					continue;

				Run<T>({snode.s, e}, v, Update);
			}
		}
	};

#undef fori
#undef each

}

#define all(collection) (collection).begin(), (collection).end()              // begin to end
#define divc(a, b) ceil((ld) a / (ld) b);                                     // div ceiling
#define rep(i, begin, end) for (ll i = begin; i < end; i++)                   // repeat
#define repr(i, begin, end) for (ll i = begin; end < i; i--)                  // repeat reverse
#define size(collection) ((ll) (collection).size())                           // collection size
#define sum(begin, end) accumulate(all(begin, end), 0LL)                      // accumulate 
/********** const value **********/
#define llong_max 9223372036854775807                                         // 9 * 10^18
#define mod 1000000007                                                        // 1e9 + 7
#define pi 3.14159265                                                         // 3.14 ...
/********** for each macro **********/
#define fori(i, ...) if(ll i = -1) for(__VA_ARGS__) if(i++, true)
#define each(i, e, v) fori(i, auto& e: v)
#define forir(i, ...) if(ll i = size(v)) for(__VA_ARGS__) if(i--, true)
#define eachr(i, e, v) forir(i, auto& e: boost::adaptors::reverse(v))

using namespace NyaGadget;

struct DFSV
{
	vector<ll> ans;
	vector<ll> memo;
};

void DFSF(DFSnode n, DFSV& v)
{
	v.ans[n.s] = v.ans[n.r] + v.memo[n.s];
}

int main(void)
{ 
	ll x; cin >> x;

	ll max_fix = x / 100;
	ll rest = x - max_fix * 100;


	if (x < 100)
	{
		cout << 0;
		return 0;
	}

	if (x % 100 == 0)
	{
		cout << 1;
		return 0;
	}

	bool ok = false;
	rep(i5, 0, max_fix + 1)
	{
		ll fix5 = max_fix - i5;
		rep(i4, 0, fix5 + 1)
		{
			ll fix4 = fix5 - i4;
			rep(i3, 0, fix4 + 1)
			{
				ll fix3 = fix4 - i3;
				ll ans = rest - (5 * i5 + 4 * i4 + 3 * i3);
				if (ans / 2 + ans % 2 <= fix3)
					ok = true;
			}
		}
	}

	if (!ok)
		cout << 0;
	else
		cout << 1;


	return 0;
}


Measured memory_bytes: 256