        SUBROUTINE  MDP
     *     (K,EK,TAIL, V,L, HEAD,LAST,NEXT, MARK)                         OD 427
        INTEGER  EK, TAIL,  V(1), L(1),  HEAD(1), LAST(1), NEXT(1),       OD 428
     *     MARK(1),  TAG, FREE, LI,VI,LVI,EVI, S,LS,ES, ILP,ILPMAX        OD 429
C                                                                         OD 430
C----INITIALIZE TAG                                                       OD 431
        TAG = MARK(EK)                                                    OD 432
C                                                                         OD 433
C----FOR EACH VERTEX VI IN EK                                             OD 434
        LI = EK                                                           OD 435
        ILPMAX = LAST(EK)                                                 OD 436
        IF (ILPMAX.LE.0)  GO TO 12                                        OD 437
        DO 11 ILP=1,ILPMAX                                                OD 438
          I = LI                                                          OD 439
          LI = L(I)                                                       OD 440
          VI = V(LI)                                                      OD 441
C                                                                         OD 442
C------REMOVE VI FROM DEGREE LIST                                         OD 443
          IF (LAST(VI).EQ.0)  GO TO 3                                     OD 444
            IF (LAST(VI).GT.0)  GO TO 1                                   OD 445
              HEAD(-LAST(VI)) = NEXT(VI)                                  OD 446
              GO TO 2                                                     OD 447
   1          NEXT(LAST(VI)) = NEXT(VI)                                   OD 448
   2        IF (NEXT(VI).GT.0)  LAST(NEXT(VI)) = LAST(VI)                 OD 449
C                                                                         OD 450
C------REMOVE INACTIVE ITEMS FROM ELEMENT LIST OF VI                      OD 451
   3      LS = VI                                                         OD 452
   4      S = LS                                                          OD 453
          LS = L(S)                                                       OD 454
          IF (LS.EQ.0)  GO TO 6                                           OD 455
            ES = V(LS)                                                    OD 456
            IF (MARK(ES).LT.TAG)  GO TO 5                                 OD 457
              FREE = LS                                                   OD 458
              L(S) = L(LS)                                                OD 459
              LS = S                                                      OD 460
   5        GO TO 4                                                       OD 461
C                                                                         OD 462
C------IF VI IS INTERIOR VERTEX, THEN REMOVE FROM LIST AND ELIMINATE      OD 463
   6      LVI = L(VI)                                                     OD 464
          IF (LVI.NE.0)  GO TO 7                                          OD 465
            L(I) = L(LI)                                                  OD 466
            LI = I                                                        OD 467
C                                                                         OD 468
            K = K+1                                                       OD 469
            NEXT(VI) = -K                                                 OD 470
            LAST(EK) = LAST(EK) - 1                                       OD 471
            GO TO 11                                                      OD 472
C                                                                         OD 473
C------ELSE ...                                                           OD 474
C--------CLASSIFY VERTEX VI                                               OD 475
   7        IF (L(LVI).NE.0)  GO TO 9                                     OD 476
              EVI = V(LVI)                                                OD 477
              IF (NEXT(EVI).GE.0)  GO TO 9                                OD 478
                IF (MARK(EVI).LT.0)  GO TO 8                              OD 479
C                                                                         OD 480
C----------IF VI IS PROTOTYPE VERTEX, THEN MARK AS SUCH, INITIALIZE       OD 481
C----------OVERLAP COUNT FOR CORRESPONDING ELEMENT, AND MOVE VI TO END    OD 482
C----------OF BOUNDARY LIST                                               OD 483
                  LAST(VI) = EVI                                          OD 484
                  MARK(EVI) = -1                                          OD 485
                  L(TAIL) = LI                                            OD 486
                  TAIL = LI                                               OD 487
                  L(I) = L(LI)                                            OD 488
                  LI = I                                                  OD 489
                  GO TO 10                                                OD 490
C                                                                         OD 491
C----------ELSE IF VI IS DUPLICATE VERTEX, THEN MARK AS SUCH AND ADJUST   OD 492
C----------OVERLAP COUNT FOR CORRESPONDING ELEMENT                        OD 493
   8              LAST(VI) = 0                                            OD 494
                  MARK(EVI) = MARK(EVI) - 1                               OD 495
                  GO TO 10                                                OD 496
C                                                                         OD 497
C----------ELSE MARK VI TO COMPUTE DEGREE                                 OD 498
   9              LAST(VI) = -EK                                          OD 499
C                                                                         OD 500
C--------INSERT EK IN ELEMENT LIST OF VI                                  OD 501
  10        V(FREE) = EK                                                  OD 502
            L(FREE) = L(VI)                                               OD 503
            L(VI) = FREE                                                  OD 504
  11      CONTINUE                                                        OD 505
C                                                                         OD 506
C----TERMINATE BOUNDARY LIST                                              OD 507
  12    L(TAIL) = 0                                                       OD 508
C                                                                         OD 509
        RETURN                                                            OD 510
        END                                                               OD 511
