import java.util.*;
import java.io.*;
public class Main{
	
	//make it false if Multiple test case is not in the question
	static boolean multipleTC = false;
	
	//for pre processing if needed
	void pre() throws Exception
	{}
		public static void main(String[] args) throws Exception{
			
		new Main().run();
	  }
	  



	// input output handled here
	private String in_out(int tc) throws Exception{
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	}
	

	

	
	
	void run() throws Exception{
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	}
	
	PrintWriter out;
		FastReader in;
		
			void p(Object o)
				{out.print(o);}
			void pln(Object o)
				{out.println(o);}
			void pnf(Object o)
				{out.println(o);
				out.flush();}
		
			String n()throws Exception
				{return in.readLine();}
		
			String nln()throws Exception
				{return in.readLine();}
		
			int ni()throws Exception
				{return (in.nextInt());}
		
			long nl()throws Exception
				{return in.nextLong();}
		
			double nd()throws Exception
				{return in.nextDouble();}
	
				static class FastReader 
				{ 
					final private int BUFFER_SIZE = 1 << 16; 
					private DataInputStream din; 
					private byte[] buffer; 
					private int bufferPointer, bytesRead; 
			  
					public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} 
			  
					public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} 
			  
					private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} 
			  
					public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} 
				} 
} import java.util.*; util.* java import java.io.*; io.* java public class Main{
	
	//make it false if Multiple test case is not in the question
	static boolean multipleTC = false;
	
	//for pre processing if needed
	void pre() throws Exception
	{}
		public static void main(String[] args) throws Exception{
			
		new Main().run();
	  }
	  



	// input output handled here
	private String in_out(int tc) throws Exception{
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	}
	

	

	
	
	void run() throws Exception{
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	}
	
	PrintWriter out;
		FastReader in;
		
			void p(Object o)
				{out.print(o);}
			void pln(Object o)
				{out.println(o);}
			void pnf(Object o)
				{out.println(o);
				out.flush();}
		
			String n()throws Exception
				{return in.readLine();}
		
			String nln()throws Exception
				{return in.readLine();}
		
			int ni()throws Exception
				{return (in.nextInt());}
		
			long nl()throws Exception
				{return in.nextLong();}
		
			double nd()throws Exception
				{return in.nextDouble();}
	
				static class FastReader 
				{ 
					final private int BUFFER_SIZE = 1 << 16; 
					private DataInputStream din; 
					private byte[] buffer; 
					private int bufferPointer, bytesRead; 
			  
					public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} 
			  
					public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} 
			  
					private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} 
			  
					public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} 
				} 
} Main //make it false if Multiple test case is not in the question
	static boolean multipleTC = false; multipleTC false PrintWriter out; out FastReader in; in //for pre processing if needed
	void pre() throws Exception
	{} pre {} public static void main(String[] args) throws Exception{
			
		new Main().run();
	  } main {
			
		new Main().run();
	  } new Main().run() new Main().run new Main() String[] args args // input output handled here
	private String in_out(int tc) throws Exception{
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	} in_out {
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	} int n=ni(); n ni() ni return ""+(n+(n*n)+(n*n*n)); ""+(n+(n*n)+(n*n*n)) "" (n+(n*n)+(n*n*n)) n+(n*n)+(n*n*n) n (n*n) n n (n*n*n) n*n*n n n n int tc tc void run() throws Exception{
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	} run {
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	} in = new FastReader() in new FastReader() out = new PrintWriter(System.out) out new PrintWriter(System.out) StringBuilder print=new StringBuilder(""); print new StringBuilder("") pre() pre int T = (multipleTC)?ni():1; T (multipleTC)?ni():1 (multipleTC) ni() ni 1 for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		} int t = 1; int t = 1; t 1 t<= T t T t++ t++ t {
		print.append(in_out(t)).append("\n");
		} {
		print.append(in_out(t)).append("\n");
		} print.append(in_out(t)).append("\n") print.append(in_out(t)).append print.append(in_out(t)) print.append print in_out(t) in_out t "\n" p(print) p print out.flush() out.flush out out.close() out.close out void p(Object o)
				{out.print(o);} p {out.print(o);} out.print(o) out.print out o Object o o void pln(Object o)
				{out.println(o);} pln {out.println(o);} out.println(o) out.println out o Object o o void pnf(Object o)
				{out.println(o);
				out.flush();} pnf {out.println(o);
				out.flush();} out.println(o) out.println out o out.flush() out.flush out Object o o String n()throws Exception
				{return in.readLine();} n {return in.readLine();} return in.readLine(); in.readLine() in.readLine in String nln()throws Exception
				{return in.readLine();} nln {return in.readLine();} return in.readLine(); in.readLine() in.readLine in int ni()throws Exception
				{return (in.nextInt());} ni {return (in.nextInt());} return (in.nextInt()); (in.nextInt()) in.nextInt in long nl()throws Exception
				{return in.nextLong();} nl {return in.nextLong();} return in.nextLong(); in.nextLong() in.nextLong in double nd()throws Exception
				{return in.nextDouble();} nd {return in.nextDouble();} return in.nextDouble(); in.nextDouble() in.nextDouble in static class FastReader 
				{ 
					final private int BUFFER_SIZE = 1 << 16; 
					private DataInputStream din; 
					private byte[] buffer; 
					private int bufferPointer, bytesRead; 
			  
					public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} 
			  
					public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} 
			  
					private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} 
			  
					public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} 
				} FastReader final private int BUFFER_SIZE = 1 << 16; BUFFER_SIZE 1 << 16 1 16 private DataInputStream din; din private byte[] buffer; buffer private int bufferPointer bufferPointer bytesRead; bytesRead public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} FastReader { 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} din = new DataInputStream(System.in) din new DataInputStream(System.in) buffer = new byte[BUFFER_SIZE] buffer new byte[BUFFER_SIZE] BUFFER_SIZE bufferPointer = bytesRead = 0 bufferPointer bytesRead = 0 bytesRead 0 public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} FastReader { 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} din = new DataInputStream(new FileInputStream(file_name)) din new DataInputStream(new FileInputStream(file_name)) buffer = new byte[BUFFER_SIZE] buffer new byte[BUFFER_SIZE] BUFFER_SIZE bufferPointer = bytesRead = 0 bufferPointer bytesRead = 0 bytesRead 0 String file_name file_name public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} readLine { 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} byte[] buf = new byte[64]; buf new byte[64] 64 int cnt = 0 cnt 0 c; c while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} (c = read()) != -1 (c = read()) c read() read -1 1 { 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} if (c == '\n') 
								break; c == '\n' c '\n' break; buf[cnt++] = (byte) c buf[cnt++] buf cnt++ cnt (byte) c return new String(buf, 0, cnt); new String(buf, 0, cnt) public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} nextInt { 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} int ret = 0; ret 0 byte c = read(); c read() read while (c <= ' ') 
							c = read(); c <= ' ' c ' ' c = read() c read() read boolean neg = (c == '-'); neg (c == '-') c '-' if (neg) 
							c = read(); neg c = read() c read() read do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); (c = read()) >= '0' && c <= '9' (c = read()) >= '0' (c = read()) c read() read '0' c <= '9' c '9' { 
							ret = ret * 10 + c - '0'; 
						} ret = ret * 10 + c - '0' ret ret * 10 + c - '0' ret * 10 + c ret * 10 ret 10 c '0' if (neg) 
							return -ret; neg return -ret; -ret ret return ret; ret public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} nextLong { 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} long ret = 0; ret 0 byte c = read(); c read() read while (c <= ' ') 
							c = read(); c <= ' ' c ' ' c = read() c read() read boolean neg = (c == '-'); neg (c == '-') c '-' if (neg) 
							c = read(); neg c = read() c read() read do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); (c = read()) >= '0' && c <= '9' (c = read()) >= '0' (c = read()) c read() read '0' c <= '9' c '9' { 
							ret = ret * 10 + c - '0'; 
						} ret = ret * 10 + c - '0' ret ret * 10 + c - '0' ret * 10 + c ret * 10 ret 10 c '0' if (neg) 
							return -ret; neg return -ret; -ret ret return ret; ret public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} nextDouble { 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} double ret = 0 ret 0 div = 1; div 1 byte c = read(); c read() read while (c <= ' ') 
							c = read(); c <= ' ' c ' ' c = read() c read() read boolean neg = (c == '-'); neg (c == '-') c '-' if (neg) 
							c = read(); neg c = read() c read() read do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); (c = read()) >= '0' && c <= '9' (c = read()) >= '0' (c = read()) c read() read '0' c <= '9' c '9' { 
							ret = ret * 10 + c - '0'; 
						} ret = ret * 10 + c - '0' ret ret * 10 + c - '0' ret * 10 + c ret * 10 ret 10 c '0' if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} c == '.' c '.' { 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} (c = read()) >= '0' && c <= '9' (c = read()) >= '0' (c = read()) c read() read '0' c <= '9' c '9' { 
								ret += (c - '0') / (div *= 10); 
							} ret += (c - '0') / (div *= 10) ret (c - '0') / (div *= 10) (c - '0') c '0' (div *= 10) div 10 if (neg) 
							return -ret; neg return -ret; -ret ret return ret; ret private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} fillBuffer { 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE) bytesRead din.read(buffer, bufferPointer = 0, BUFFER_SIZE) din.read din buffer bufferPointer = 0 bufferPointer 0 BUFFER_SIZE if (bytesRead == -1) 
							buffer[0] = -1; bytesRead == -1 bytesRead -1 1 buffer[0] = -1 buffer[0] buffer 0 -1 1 private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} read { 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} if (bufferPointer == bytesRead) 
							fillBuffer(); bufferPointer == bytesRead bufferPointer bytesRead fillBuffer() fillBuffer return buffer[bufferPointer++]; buffer[bufferPointer++] buffer bufferPointer++ bufferPointer public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} close { 
						if (din == null) 
							return; 
						din.close(); 
					} if (din == null) 
							return; din == null din null return; din.close() din.close din public class Main{
	
	//make it false if Multiple test case is not in the question
	static boolean multipleTC = false;
	
	//for pre processing if needed
	void pre() throws Exception
	{}
		public static void main(String[] args) throws Exception{
			
		new Main().run();
	  }
	  



	// input output handled here
	private String in_out(int tc) throws Exception{
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	}
	

	

	
	
	void run() throws Exception{
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	}
	
	PrintWriter out;
		FastReader in;
		
			void p(Object o)
				{out.print(o);}
			void pln(Object o)
				{out.println(o);}
			void pnf(Object o)
				{out.println(o);
				out.flush();}
		
			String n()throws Exception
				{return in.readLine();}
		
			String nln()throws Exception
				{return in.readLine();}
		
			int ni()throws Exception
				{return (in.nextInt());}
		
			long nl()throws Exception
				{return in.nextLong();}
		
			double nd()throws Exception
				{return in.nextDouble();}
	
				static class FastReader 
				{ 
					final private int BUFFER_SIZE = 1 << 16; 
					private DataInputStream din; 
					private byte[] buffer; 
					private int bufferPointer, bytesRead; 
			  
					public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} 
			  
					public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} 
			  
					private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} 
			  
					public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} 
				} 
} public class Main{
	
	//make it false if Multiple test case is not in the question
	static boolean multipleTC = false;
	
	//for pre processing if needed
	void pre() throws Exception
	{}
		public static void main(String[] args) throws Exception{
			
		new Main().run();
	  }
	  



	// input output handled here
	private String in_out(int tc) throws Exception{
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	}
	

	

	
	
	void run() throws Exception{
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	}
	
	PrintWriter out;
		FastReader in;
		
			void p(Object o)
				{out.print(o);}
			void pln(Object o)
				{out.println(o);}
			void pnf(Object o)
				{out.println(o);
				out.flush();}
		
			String n()throws Exception
				{return in.readLine();}
		
			String nln()throws Exception
				{return in.readLine();}
		
			int ni()throws Exception
				{return (in.nextInt());}
		
			long nl()throws Exception
				{return in.nextLong();}
		
			double nd()throws Exception
				{return in.nextDouble();}
	
				static class FastReader 
				{ 
					final private int BUFFER_SIZE = 1 << 16; 
					private DataInputStream din; 
					private byte[] buffer; 
					private int bufferPointer, bytesRead; 
			  
					public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} 
			  
					public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} 
			  
					private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} 
			  
					public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} 
				} 
} Main
import java.util.*;
import java.io.*;
public class Main{
	
	//make it false if Multiple test case is not in the question
	static boolean multipleTC = false;
	
	//for pre processing if needed
	void pre() throws Exception
	{}
		public static void main(String[] args) throws Exception{
			
		new Main().run();
	  }
	  



	// input output handled here
	private String in_out(int tc) throws Exception{
		  //take input here
		  int n=ni();


		return ""+(n+(n*n)+(n*n*n));

	}
	

	

	
	
	void run() throws Exception{
	//	long start_time=System.nanoTime();

		//in = new FastReader("input.txt");  out = new PrintWriter("output.txt");
		in = new FastReader(); out = new PrintWriter(System.out);
		


		StringBuilder print=new StringBuilder("");
		pre();
		int T = (multipleTC)?ni():1;
		for(int t = 1; t<= T; t++){
		print.append(in_out(t)).append("\n");
		}

		p(print);
		//long end_time=System.nanoTime();
		//System.out.println("Running Time in nano sec : "+(end_time-start_time));
		
		out.flush();
		out.close();
	}
	
	PrintWriter out;
		FastReader in;
		
			void p(Object o)
				{out.print(o);}
			void pln(Object o)
				{out.println(o);}
			void pnf(Object o)
				{out.println(o);
				out.flush();}
		
			String n()throws Exception
				{return in.readLine();}
		
			String nln()throws Exception
				{return in.readLine();}
		
			int ni()throws Exception
				{return (in.nextInt());}
		
			long nl()throws Exception
				{return in.nextLong();}
		
			double nd()throws Exception
				{return in.nextDouble();}
	
				static class FastReader 
				{ 
					final private int BUFFER_SIZE = 1 << 16; 
					private DataInputStream din; 
					private byte[] buffer; 
					private int bufferPointer, bytesRead; 
			  
					public FastReader() 
					{ 
						din = new DataInputStream(System.in); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public FastReader(String file_name) throws IOException 
					{ 
						din = new DataInputStream(new FileInputStream(file_name)); 
						buffer = new byte[BUFFER_SIZE]; 
						bufferPointer = bytesRead = 0; 
					} 
			  
					public String readLine() throws IOException 
					{ 
						byte[] buf = new byte[64]; // line length 
						int cnt = 0, c; 
						while ((c = read()) != -1) 
						{ 
							if (c == '\n') 
								break; 
							buf[cnt++] = (byte) c; 
						} 
						return new String(buf, 0, cnt); 
					} 
			  
					public int nextInt() throws IOException 
					{ 
						int ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do
						{ 
							ret = ret * 10 + c - '0'; 
						}  while ((c = read()) >= '0' && c <= '9'); 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public long nextLong() throws IOException 
					{ 
						long ret = 0; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					public double nextDouble() throws IOException 
					{ 
						double ret = 0, div = 1; 
						byte c = read(); 
						while (c <= ' ') 
							c = read(); 
						boolean neg = (c == '-'); 
						if (neg) 
							c = read(); 
			  
						do { 
							ret = ret * 10 + c - '0'; 
						} 
						while ((c = read()) >= '0' && c <= '9'); 
			  
						if (c == '.') 
						{ 
							while ((c = read()) >= '0' && c <= '9') 
							{ 
								ret += (c - '0') / (div *= 10); 
							} 
						} 
			  
						if (neg) 
							return -ret; 
						return ret; 
					} 
			  
					private void fillBuffer() throws IOException 
					{ 
						bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
						if (bytesRead == -1) 
							buffer[0] = -1; 
					} 
			  
					private byte read() throws IOException 
					{ 
						if (bufferPointer == bytesRead) 
							fillBuffer(); 
						return buffer[bufferPointer++]; 
					} 
			  
					public void close() throws IOException 
					{ 
						if (din == null) 
							return; 
						din.close(); 
					} 
				} 
}