#include <stdio.h>
#define N 100
#define T 200

int max(int a,int b)
{
  if (a<b) return b;
  else return a;
}

main()
{
  int n, p[N],w[N];
  int j,t, d;
  
  int f[N][T];
  int x1,x2,x3;
  
  
    
  
  
  printf("Enter n, the number of jobs\n");
  scanf("%d",&n);

  printf("\nEnter common deadline\n");
  scanf("%d",&d);
  
  
  
  printf("\nEnter p,w pairs\n");
  
  for (j=1;j<=n;j++)
    scanf("%d %d",&p[j],&w[j]);
  
  for(j=0;j<n;j++)
    f[j][0] = 0;
  
  for(t=0;t<d;t++)
    f[0][t] = 0;


  for(t=1;t<=d;t++)
    for(j=1;j<=n;j++) {
      
      x1 = f[j-1][t];

      if (t-p[j] < 0)
	x2 = 0;
      else
	x2 = f[j-1][t-p[j]] + w[j];
      
      x3 = f[j][t-1];
      
      f[j][t] = max(max(x1,x2),x3);
      
    }

  
  
  for (t=0;t<=d;t++) {
    
    printf("t=%d:  ",t);
    
      for (j=0;j<=n; j++) 
	printf("%10d ",f[j][t]);
    
    printf("\n");
    
  }
}

     
