public Image DrawSolution() {
		int offset = fSize/2+1;
		BufferedImage im = new BufferedImage(n*fSize, n*fSize, BufferedImage.TYPE_INT_RGB);
		Graphics2D g = im.createGraphics();
		
		//draw chess board
		int yPos = 0;
		for(int i = 0; i < n;i++)
		{
			int xPos = 0;
			for(int j = 0; j < n;j++)
			{
				if((i+(j % 2))%2 == 0)
				{
					g.setColor(Color.black);
				} else {
					g.setColor(Color.white);
				}
				
				g.fillRect(xPos, yPos, fSize, fSize);
				xPos += fSize;
			}
			yPos += fSize;
		}
		
		Iterator<Board.Field> it = solution.descendingIterator();
		
		//draw begin circle
		Board.Field fBegin = null;
		if(it.hasNext()) {
			fBegin = it.next();
			g.setColor(Color.blue);
			g.fillOval(fBegin.x*fSize,fBegin.y*fSize, fSize, fSize);
		}
		
		//draw line
		while(it.hasNext())
		{
			Board.Field fEnd = it.next();
			g.setColor(Color.red);
			g.drawLine(fBegin.x*fSize+offset, fBegin.y*fSize+offset, fEnd.x*fSize+offset, fEnd.y*fSize+offset);
			fBegin = fEnd;
		}
		
		//draw end dot
		if(fBegin != null) 
			g.fillOval(fBegin.x*fSize,fBegin.y*fSize, fSize, fSize);
		
		return im;
	}