public void process() {
		int currentIndex;
		int wIndex = 0;
		for(currentIndex = 0; currentIndex < n * m && currentIndex < cs.length; currentIndex ++) {
			C c = cs[currentIndex];
			C lastC = ws[wIndex].last();
			ws[wIndex].moreCustomer(cs[currentIndex]);
			if(lastC != null) {
				c.startTime = lastC.endTime;
				c.endTime = lastC.endTime + c.txTime;
			} else {
				c.startTime = 0;
				c.endTime = c.txTime;
			}
			wIndex = (wIndex + 1) % n;
		}
		
		for(int i = currentIndex; i < cs.length; i++) {
			int firstFinishIndex = 0;
			int firstFinishTime = Integer.MAX_VALUE;
			for(int j = 0; j < n; j++) {
				W w = ws[j];
				int time = w.finishTime();
				if(time < firstFinishTime) {
					firstFinishTime = time;
					firstFinishIndex = j;
				}
			}
			C lastC = ws[firstFinishIndex].last();
			C c = cs[i];
			c.startTime = lastC.endTime;
			c.endTime = lastC.endTime + c.txTime;
			ws[firstFinishIndex].serve();
			ws[firstFinishIndex].moreCustomer(c);
		}
	}