#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

#define REP(i,k,n) for(int i=k;i<n;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define MAX 1000000
#define pb push_back

using namespace std;

int prime[MAX];

int main()
{
	prime[0] = prime[1] = 0;

	REP(i,2,MAX)
	{
		prime[i] = 1;
	}

	REP(i,2,MAX)
	{
		if(prime[i])
		{
			for(int j = i*2;j < MAX;j += i)
			{
				prime[j] = 0;
			}
		}
	}

	int n;
	while(cin >> n && n)
	{
		int count = 0;
		vector<int> a;
		rep(i,n)
		{
			rep(j,n)
			{
				if(prime[i] == 1 && prime[j] == 1 && i + j == n)
				{
					if(a.empty())
					{
						a.pb(i);
						a.pb(j);
						count++;
					}
					else
					{
						vector<int>::iterator ite = find(a.begin(),a.end(),i);
						vector<int>::iterator ite2 = find(a.begin(),a.end(),j);

						if(ite == a.end() && ite == a.end())
						{
							a.pb(i);
							a.pb(j);
							count++;
						}
					}
				}
			}
		}
		cout << count << endl;
	}
	return 0;
}