#include <bits/stdc++.h>
using namespace std;

long long a;
long long u, x, y, z;

long long int delta(long long a, long long b)
  { if ((a<4)&&(b>0)) { a++; } ; return(a); }

long long int accept(long long a)
  { if (a==3) { return 1; } else { return 0; } }

int main() { long long int x, y, z, a, b;
             printf("This program checks whether a number in decimal "); 
             printf("digits\n");
             printf("has exactly three nonzero digits.\n");

      line1: printf("Provide the input x greater equal 0: ");
             scanf("%lld", &x); if (x<0) { goto line1; }
             printf("Input x provided is %lld and digits read are ",x);
             y = 1; a = 0; z = x+x; x = z+z; x = x+x; x = x+z; x = x+1;

      line2: if (y > x) { goto line3; } 
             else { z=y+y; y=z+z; y=y+y; y=y+z;
                    goto line2; }

      line3: z = x+x; x = z+z; x = x+x; x=x+z;
             if (x != y) { b=0;
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                if (x >= y) { x=x-y; b++; }
                putchar(b+48);
                a = delta(a,b); goto line3; }

        line4: printf(".\nState is %lld and acc/rej is %lld.\n",a,accept(a)); }

 
