For this Question: You have a box of paint. The paint can be used to cover area of 1 square unit. You have N magic spells with magic value from 1 to N. You can use each spell at max once. 
When you use a spell on the box of paint, the quantity of paint in the box gets multiplied by the magic value of that spell. For example, if currently the paint in the box can cover A square units and a spell of B magic value is cast on the box, then after the spell the paint in the box can be used to cover A*B square units of area. 
You want to paint a square (completely filled) of maximum area with integer side length with the paint such that after painting the square, the paint in the box gets empty. You can apply any magic spells you want in any order before the painting starts and not during or after the painting. 

Find the area of maximum side square you can paint. As the answer can be huge find the area modulo 1000000007.The first and the only line of input contains a single integer N.

Constraints:
1 <= N <= 1000000Print the area of maximum side square you can paint modulo 1000000007.Sample Input 1
3

Sample Output 1
1

Explanation: We apply no magic spell. 

Sample Input 2
4

Sample Output 2
4

Explanation: We apply magic spell number 4., I have written this Solution Code: #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define VV vector
#define pb push_back
#define bitc  __builtin_popcountll
#define m_p make_pair
#define infi 1e18+1
#define eps 0.000000000001
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);
string char_to_str(char c){string tem(1,c);return tem;}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
template<class T>//usage rand<long long>()
T rand() {
    return uniform_int_distribution<T>()(rng);
}
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
 
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> oset;
// string to integer stoi()
// string to long long stoll()
// string.substr(position,length);
// integer to string to_string();
 
//////////////
auto clk=clock();
#define all(x) x.begin(),x.end()
#define S second
#define F first
#define sz(x) ((long long)x.size())
#define int long long  
#define f80 __float128
#define pii pair<int,int>
/////////////
int si[1000001];
signed main()
{
	fastio;
	#ifdef ANIKET_GOYAL
		freopen("inputf.in","r",stdin);
		freopen("outputf.in","w",stdout);
	#endif
	int n;
	cin>>n;
	int ans=1;
	int mo=1000000007;
	for(int i=2;i<=n;++i){
		if(si[i]==0){
			int x=i;
			int c=0;
			while(x<=n){
				c+=n/x;
				x*=i;
			}
			if(c%2==0){
				ans=(ans*i)%mo;
			}
			int j=i;
			while(j<=n){
				si[j]=1;
				j+=i;
			}
		}
		else{
			ans=(ans*i)%mo;
		}
	}
	cout<<ans;
	#ifdef ANIKET_GOYAL
		// cout<<endl<<endl<<endl<<endl<<"Time elapsed: "<<(double)(clock()-clk)/CLOCKS_PER_SEC<<endl;
	#endif
}, In this Programming Language: C++, Now tell me if this Code is compilable or not?