#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int *primes = NULL;
int max = 30000;

inline int prime(int n)
{
    return primes[n];
}
void euclid(void)
{
    int i,j;
    int sqrt_max;
    int *list;
    list=(int*)malloc(sizeof(int)*max+1);
    primes=(int*)malloc(sizeof(int)*max+1);
    sqrt_max = (int)(sqrt((double)max)+1.0);
    for(i=1;i<=max;i++){
        list[i] = 1;
    }
    for(i=2;i<=sqrt_max;i++){
        if(list[i]){
            primes[i] = 1;
            for(j=1;i*j<=max;j++){
                list[i*j] = 0;
            }
        }
    }
    for(i=2;i<=max;i++){
        if(list[i])
            primes[i] = list[i];
    }
    free(list);
}
int main(void)
{
    int t,num_triangle;
    int i,j,k;

    euclid();
//    for(i=1;i<=max;i++)if(prime(i)) printf("%d\n",i);

    while(1){
        scanf("%d\n",&t);
        if(t==0) break;
        num_triangle = 0;
        i=1; j=1; k=t-(i+j);
        while(i<=j && j<=k){
            if(prime(i)){
                while(j<=k){
                    if(i+j>k){
                        if(prime(j)&&prime(k)){
                            num_triangle++;
                        }
                    }
                    j++; k--;
                }
            }
            i++; j=i; k=t-(i+j);
        }
        printf("%d\n", num_triangle);
    }
    return 0;
}