#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
//#define WIDTH 70 //横幅
//#define HEIGHT 40 //縦の長さ
//#define MAXWORM 300 //虫の数

#define WIDTH 100 //横幅
#define HEIGHT 100 //縦の長さ
#define MAXWORM 1100 //虫の数

int main()
{
  srand((unsigned) time(NULL));
  
  char matrix[HEIGHT][WIDTH];
  int x,y;

  // Initialization                                                                                                                                             
  for (y=0 ; y<HEIGHT ; y++){
    for (x=0 ; x<WIDTH ; x++ ){
      // '.'で初期化
      matrix[y][x] = ' ';
    }
  }

  // Set value
  int i=0;
  while(i<MAXWORM){
    x = rand()%WIDTH;
    y = rand()%HEIGHT;
    // printf("x=%d y=%d\n", x, y);

    switch(x){
    case 0: //左端が選ばれたとき
      switch(y){
      case 0:

	if(matrix[0][1] != '*' && matrix[1][0] != '*' && matrix[1][1] != '*'){
	  matrix[0][0] = '*';
	  i++;
	}
	break;

      case HEIGHT-1:
	if(matrix[HEIGHT-1][1] != '*' && matrix[HEIGHT-2][0] != '*' && matrix[HEIGHT-2][1] != '*'){
	  matrix[HEIGHT-1][0] = '*';
	  i++;
	}
	break;

      default:
	if(matrix[y-1][0] != '*' && matrix[y-1][1] != '*' && matrix[y][1] != '*'&& matrix[y+1][1] != '*' && matrix[y+1][0] != '*'){
	  matrix[y][0] = '*';
	  i++;
	}
	break;
      }
      
    case WIDTH-1: //右端が選ばれたとき
      switch(y){
      case 0:
	if(matrix[0][WIDTH-2] != '*' && matrix[1][WIDTH-2] != '*' && matrix[1][WIDTH-1] != '*'){
	  matrix[0][WIDTH-1] = '*';
	  i++;
	}
	break;

      case HEIGHT-1:
	if(matrix[HEIGHT-1][WIDTH-2] != '*' && matrix[HEIGHT-2][WIDTH-2] != '*' && matrix[HEIGHT-2][WIDTH-1] != '*'){
	  matrix[HEIGHT-1][WIDTH-1] = '*';
	  i++;
	}
	break;

      default:
	if(matrix[y-1][WIDTH-1] != '*' && matrix[y-1][WIDTH-2] != '*' && matrix[y][WIDTH-2] != '*' && matrix[y+1][WIDTH-2] != '*' && matrix[y+1][WIDTH-1] != '*'){
	  matrix[y][WIDTH-1] = '*';
	  i++;
	}
	break;
      }
      
    default: //それ以外
      switch(y){
      case 0:
	if(matrix[0][x-1] != '*' && matrix[1][x-1] != '*' && matrix[1][x] != '*' && matrix[1][x+1] != '*' && matrix[0][x+1] != '*'){
	  matrix[0][x] = '*';
	  i++;
	}
	break;

      case HEIGHT-1:
	if(matrix[HEIGHT-1][x-1] != '*' && matrix[HEIGHT-2][x-1] != '*' && matrix[HEIGHT-2][x] != '*' && matrix[HEIGHT-2][x+1] != '*' && matrix[HEIGHT-1][x+1] != '*'){
	  matrix[HEIGHT-1][x] = '*';
	  i++;
	}
	break;
	
      default:
	if(matrix[y-1][x-1] != '*' && matrix[y-1][x] != '*' && matrix[y-1][x+1] != '*' && matrix[y][x-1] != '*' && matrix[y][x+1] != '*' && matrix[y+1][x-1] != '*' && matrix[y+1][x] != '*' && matrix[y+1][x+1] != '*'){
	  matrix[y][x] = '*';
	  i++;
	}
	break;	   
      }
    }
  }
  


  // Print                                                                                                                                                            

printf("\\begin{picture}(%d,%d)\n", WIDTH, HEIGHT);


  for (y=0 ; y<HEIGHT ; y++ ){

    for (x=0 ; x<WIDTH ; x++ ){
      
     if(matrix[y][x] == '*')
	printf("\\put(%d,%d){\\circle*{0.8}}\n", y, x);
      
    }
    
  }

printf("\\end{picture}\n", WIDTH, HEIGHT);

  return 0;
}
