Minimize $a^5+b^5+c^5+d^5+e^5 = p^4+q^4+r^4+s^4 = x^3+y^3+z^3 = m^2 + n^2$ with distinct positive integers 
Find the minimum value of the following:
  $$a^5+b^5+c^5+d^5+e^5 = p^4+q^4+r^4+s^4 = x^3+y^3+z^3 = m^2 + n^2$$
  where all numbers are different/distinct positive integers.

I know the answer (see below), but want to confirm the same. 
Is there any way to prove following conjecture?

Conjecture. There is always unique way to write down $\sum_{i=1}^{n} a_{i}^n$ for any arbitrary value of $n$ such that it gives same value for all values of $n$.


Answer is given below, spoiler alert:

 $$1^5+2^5+4^5+7^5+9^5 = 3^4+6^4+10^4+16^4 = 17^3+20^3+40^3 = 88^2 + 263^2 = 76913$$


#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <sstream>
#include <list>
#include <set>
#include <math.h>
#include <iomanip>
#include <string>
#include <algorithm>
#include <iterator>
#include <gmp.h>
#include <gmpxx.h>
using namespace std;


const int LARGEINT = 2147483647  ;
const int BILLION  = 1000000000  ;
const double my_pi = 4 * atan(1.0);

//  form.h      



int mp_PrimeQ( mpz_class  i)
{
  if ( i <= 0 ) return 0;
  else if ( i == 1 ) return 1;
  else return  mpz_probab_prime_p( i.get_mpz_t() , 10 );
} // mp_PrimeQ


int  mp_SquareQ( mpz_class  w)
{
  if (w < 0) return 0;
  else if (w < 2) return 1;
  else
  {
    mpz_class squirt;
    mpz_sqrt( squirt.get_mpz_t(), w.get_mpz_t()  );
    return (w ==  squirt * squirt);
  }  // else w >= 2;
}

mpz_class mp_Sqrt( mpz_class  w)
{
  if (w <= 0) return 0;
  else if (w < 2) return 1;
  else
  {
    mpz_class squirt;
    mpz_sqrt( squirt.get_mpz_t(), w.get_mpz_t()  );
    return  squirt ;
  }  // else w >= 2;
}



int  mp_CubeQ( mpz_class  w)
{
  mpz_class temp = w;
  if (temp < 0) temp *= -1;
  if (temp < 2) return 1;
  else
  {
    mpz_class root;
    mpz_root( root.get_mpz_t(), temp.get_mpz_t(), 3  );
  //  cout << " root " << root <<  "  temp " << temp << endl;
    return (temp ==  root * root * root);
  }  // else w >= 2;
}

mpz_class mp_Cube_Root( mpz_class  w)
{
   mpz_class temp = w;
  if (temp < 0) temp *= -1;
  if( temp == 0) return 0;
  else  if (temp < 2) return 1;
  else
  {
    mpz_class root;
    mpz_root( root.get_mpz_t(), temp.get_mpz_t(), 3  );
  //  cout << " root " << root <<  "  temp " << temp << endl;
    return  root;
  }  // else w >= 2; 
}

mpz_class mp_Fourth_Root( mpz_class  w)
{
   mpz_class temp = w;
  if (temp < 0) temp *= -1;
  if( temp == 0) return 0;
  else  if (temp <= 15) return 1;
  else
  {
    mpz_class root;
    mpz_root( root.get_mpz_t(), temp.get_mpz_t(), 4  );
  //  cout << " root " << root <<  "  temp " << temp << endl;
    return  root;
  }  // else w >= 2; 
}


int  mp_Fourth_Power_Q( mpz_class  w)
{
  mpz_class temp = w;
  mpz_class root = mp_Fourth_Root( w);
  return root * root * root * root == w;
}

mpz_class mp_Fifth_Root( mpz_class  w)
{
   mpz_class temp = w;
  if (temp < 0) temp *= -1;
  if( temp == 0) return 0;
  else  if (temp <= 31) return 1;
  else
  {
    mpz_class root;
    mpz_root( root.get_mpz_t(), temp.get_mpz_t(), 5  );
  //  cout << " root " << root <<  "  temp " << temp << endl;
    return  root;
  }  // else w >= 2; 
}


int  mp_Fifth_Power_Q( mpz_class  w)
{
  mpz_class temp = w;
  mpz_class root = mp_Fifth_Root( w);
  return root * root * root * root * root == w;
}


mpz_class to_power_5( mpz_class w)
{
  return w * w * w * w * w;
}


//    6     
mpz_class mp_Sixth_Root( mpz_class  w)
{
   mpz_class temp = w;
  if (temp < 0) temp *= -1;
  if( temp == 0) return 0;
  else  if (temp <= 63) return 1;
  else
  {
    mpz_class root;
    mpz_root( root.get_mpz_t(), temp.get_mpz_t(), 6  );
  //  cout << " root " << root <<  "  temp " << temp << endl;
    return  root;
  }  // else w >= 2; 
}


int  mp_Sixth_Power_Q( mpz_class  w)
{
  mpz_class temp = w;
  mpz_class root = mp_Sixth_Root( w);
  return root * root * root * root * root * root == w;
}


mpz_class to_power_6( mpz_class w)
{
  return w * w * w * w * w * w;
}

