#include <iostream>

using namespace std;

typedef unsigned Number;


int main(void)
{
  constexpr Number x = 1024;
  for(Number value=x; value<=x; ++value)
  {

  unsigned long count = 0;
  // a*1024 + b*1024 + ... + k*1024 = 1024,
  for(Number b=0; b<=2; ++b)
  {
    const auto pb = b*512;
    if( pb > value )
      break;
    for(Number c=0; c<=4; ++c)
    {
      const auto pc = pb + c*256;
      if( pc > value )
        break;
      for(Number d=0; d<=8; ++d)
      {
        const auto pd = pc + d*128;
        if( pd > value )
          break;
        for(Number e=0; e<=16; ++e)
        {
          const auto pe = pd + e*64;
          if( pe > value )
            break;
          for(Number f=0; f<=32; ++f)
          {
            const auto pf = pe + f*32;
            if( pf > value )
              break;
            for(Number g=0; g<=64; ++g)
            {
              const auto pg = pf + g*16;
              if( pg > value )
                break;
              for(Number h=0; h<=128; ++h)
              {
                const auto ph = pg + h*8;
                if( ph > value )
                  break;
                for(Number i=0; i<=256; ++i)
                {
                  const auto pi = ph + i*4;
                  if( pi > value )
                    break;
                  for(Number j=0; j<=512; ++j)
                  {
                    const auto pj = pi + j*2;
                    if( pj > value )
                      break;
                    for(Number k=0; k<=1024; ++k)
                    {
                      const auto pk = pj + k*1;
                      if( pk == value )
                      {
                        ++count;
                        if(false)
                          cout << b << "*512  + "
                               << c << "*256  + "
                               << d << "*128  + "
                               << e << "*64   + "
                               << f << "*32   + "
                               << g << "*16   + "
                               << h << "*8    + "
                               << i << "*4    + "
                               << j << "*2    + "
                               << k << "*1      "
                               << endl;
                        break;
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }

  cout << value << " -> " << count << endl;
  }
}
