public static void calculateP1(double[] lambda, int[] MAXBUFFER, double mu, int lambdaNum,int bufferNum){
		double currentTime = 0;
		double nextArrivTime;
		int queueSize = 0;	//This is the 'length' in the instructions
		GEL eventList = new GEL();
		Queue<Node> packetQueue = new LinkedList<Node>(); //Queue represents the packets, every time we have a new packet, we insert into Queue
		Statistics stats = new Statistics();
		
		//currentTime = currentTime + negative_exponentially_distributed_time(lambda[lambdaNum]);
		currentTime = currentTime + ParetoDistr(lambda[lambdaNum]);
		
		Events FirstEvent = new Events("arrival",currentTime);
		eventList.insert(FirstEvent);
		for (int i = 0; i < 100000; i++){ 
			Events currentEvent = eventList.removeFirstEvent();
			//Processing Events
			//Arrival Event
			/*-----------------------------------------------------------------------------------------*/
			if(currentEvent.getType() == "arrival"){
				stats.calcQueueLength(queueSize, currentEvent.getTime());
				//Creating next arrival event
				currentTime = currentEvent.getTime();
				//nextArrivTime = currentTime + negative_exponentially_distributed_time(lambda[lambdaNum]);
				nextArrivTime = currentTime + ParetoDistr(lambda[lambdaNum]);
				
				//Create new packet (insert in queue)
				Node packet = new Node(negative_exponentially_distributed_time(mu));
				
				Events arrEvent = new Events("arrival",nextArrivTime);
				eventList.insert(arrEvent);
				
				//Processing Arrival Event
				//Server is free
				/*---------------------------------------------------------------------------------------*/
				if(queueSize == 0){
					Events depEvent = new Events("departure",currentEvent.getTime() + packet.getPacketSize());
					eventList.insert(depEvent);
					queueSize++;
					stats.calcBusyTime(currentEvent.getTime(), depEvent.getTime());
					stats.setServerTotalTime(depEvent.getTime());
				}
				//Server is busy
				else if(queueSize > 0){
					if(MAXBUFFER[bufferNum] == -1){
						packetQueue.add(packet);
						queueSize++;
					}
					else if(queueSize - 1 < MAXBUFFER[bufferNum]){ //MAXBUFFER INDEX SHOULD BE SET DEPENDING ON FOR LOOP
						packetQueue.add(packet);
						queueSize++;
					}
					else{
						stats.setNumDroppedPackets(stats.getNumDroppedPackets() + 1);
						//DROP PACKET HERE
					}
				}
			}
			//Departure Events
			/*---------------------------------------------------------------------------------------*/
			else if(currentEvent.getType() == "departure"){
				stats.calcQueueLength(queueSize, currentEvent.getTime());
				currentTime = currentEvent.getTime();
				queueSize--;
				if(queueSize > 0){
					Node temp = packetQueue.remove();
					Events depEvent = new Events("departure",currentTime + temp.getPacketSize());
					eventList.insert(depEvent);
					stats.calcBusyTime(currentEvent.getTime(), depEvent.getTime());
					stats.setServerTotalTime(depEvent.getTime());
				}
			}
		} 
		stats.outputStats(lambda[lambdaNum],mu,MAXBUFFER[bufferNum]);
		//System.out.print("\n" + ParetoDistr(lambda[lambdaNum]) + "\n");
	}