• Source
    1. #include<bits/stdc++.h>
    2. #define sz 50000
    3.  
    4. using namespace std;
    5.  
    6. bool store[sz];
    7.  
    8. void init()
    9. {
    10. int i;
    11.  
    12. for(i=0; i*i<=sz; i++)
    13. store[i*i] = true;
    14. }
    15.  
    16. int main()
    17. {
    18. init();
    19.  
    20. int test,n,i,j,k,rem;
    21.  
    22. scanf("%d",&test);
    23.  
    24. while(test--)
    25. {
    26. scanf("%d",&n);
    27.  
    28. bool tag = true;
    29.  
    30. for(i=0; i*i<=n && tag; i++)
    31. {
    32. for(j=0; i*i+j*j<=n && tag; j++)
    33. {
    34. rem = n-((i*i)+(j*j));
    35.  
    36. if(store[rem])
    37. {
    38. tag = false;
    39.  
    40. k = sqrt(rem);
    41.  
    42. printf("%d %d %d\n",i,j,k);
    43.  
    44. break;
    45. }
    46. }
    47. }
    48.  
    49. if(tag)
    50. {
    51. puts("-1");
    52. }
    53. }
    54.  
    55. return 0;
    56. }