CTSTP
Builds hierarchical log‑linear models using forward selection, backward selection, or stepwise selection.
Required Arguments
NCLVAL — Vector of length NCLVAR containing, in its i‑th element, the number of levels or categories of the i‑th classification variable. (Input)
TABLE — Vector of length NCLVAL(1) * NCLVAL(2) * * NCLVAL(NCLVAR) containing the entries in the cells of the table to be fit. (Input)
See Comment 3 for comments on the ordering of the elements of TABLE.
ISTEP — Stepping option. (Input)
ISTEP
Action
-1
An attempt is made to remove an effect from the model (a backward step). An effect is removed if it has the largest p‑value among all effects considered for removal with p‑value exceeding POUT.
0
A backward step is attempted. If a variable is not removed, a forward step is attempted. This is a stepwise step.
1
An attempt is made to add an effect to the model (a forward step). An effect is added if it has the smallest p‑value among all effects with p‑value less than PIN.
NSTEP — Step length option. (Input)
For nonnegative NSTEP, NSTEP steps are taken. Less than NSTEPS are taken if no effect that can enter or leave the model meets the PIN or POUT criterion. Use NSTEP = 1 to indicate that stepping is to continue until no effect meets the PIN or POUT criterion to enter or leave the model.
NFORCE — The number of initial effects in the model that must be included in any model considered. (Input)
For NFORCE = k, the first k effects specified by NEF, NVEF, and INDEF will be included in all models considered.
NEF — Number of effects in the model. (Input/Output)
A marginal table is implied by each effect in the model. Lower order effects should not be included in the model specification since their inclusion is automatic (e.g., do not include effects A or B if effect AB is in the model). On input, NEF gives the number of effects in the initial model. On output, NEF gives the number of effects in the final model.
NVEF — Vector of length MAXNVF containing the number of classification variables associated with each effect. (Input/Output)
On input, NVEF contains the number of classification variables for each effect in the initial model. The final values are returned on output.
INDEF — Vector of length MAXIND containing, in consecutive positions, the indices of the variables that are included in each effect. (Input/Output)
The entries in INDEF are sequenced so that the first NVEF(1) elements contain the indices of the variables in effect 1, the next NVEF(2) elements of INDEF contain the indices of the variables in effect 2, etc. Each element of INDEF must be greater than zero. See Comment 4 for an example.
FIT — Vector of length NCLVAL(1) * NCLVAL(2) * * NCLVAL(NCLVAR) containing the model estimates of the cell counts. (Input/Output)
On input, FIT contains the initial estimates of the cell counts. Structural zeros in the model are specified by setting the corresponding element of FIT to 0.0. All other elements of FIT may be set to 1.0 if no other estimate of the expected cell counts is available. On output, FIT contains the fitted table. See Comment 3 for the ordering of the elements of FIT. If an element of FIT is positive but the corresponding element in TABLE is zero, the element is called a sampling zero. Sampling zeros may effect the number of parameters that can be estimated, but they will not affect the degrees of freedom in chi‑squared tests. See the Description section of the manual document.
STAT — Vector of length 3 containing some output statistics for the final model fit during this invocation. (Output)
I
STAT(I)
1
Asymptotic chi‑squared statistic based upon likelihood ratios for testing that the current model fits the observed data.
2
Degrees of freedom in chi‑squared. This is the number of cells in the table minus the number of structural zeros minus the degrees of freedom for the model.
3
Probability of a greater chi‑squared.
IEND — Completion indicator. (Output)
IEND
Meaning
0
Additional steps may be possible.
1
No additional steps are possible for the values of PIN and POUT.
Optional Arguments
IDO — Processing option. (Input)
Default: IDO = 0.
IDO
Action
0
This is the only invocation of CTSTP for this table. If there are sampling zeros, set up for computing the degrees of freedom for each effect. Perform NSTEP steps (if ISTEP, POUT, and PIN allow it) and then release all workspace.
1
This is the first invocation, and additional calls to CTSTP will be made. Set up for computing the degrees of freedom for each effect and then perform NSTEP steps (if ISTEP, POUT, and PIN allow it).
2
This is an intermediate invocation of CTSTP. Perform NSTEP steps (if ISTEP, POUT, and PIN allow it).
3
This is the final invocation of this routine. Perform NSTEP steps (if ISTEP, POUT, and PIN allow it). Release all workspace.
NCLVAR — Number of classification variables. (Input)
A variable specifying a margin in the table is a classification variable. The first classification variable is named A, the second classification variable is named B, etc.
Default: NCLVAR = size (NCLVAL,1).
PIN — Largest p‑value for entering variables. (Input)
Variables with p‑values less than PIN may enter the model. The choice 0.05 is common.
Default: PIN = .05.
POUT — Smallest p‑value for removing variables. (Input)
Variables with p‑values greater than POUT may leave the model. POUT must be greater than or equal to PIN. The choice 0.10 is common.
Default: POUT = .10.
IPRINT — Printing option. (Input)
Default: IPRINT = 0.
IPRINT
Action
0
No printing is performed.
1
Printing of the initial and final model summary statistics and step summaries.
2
Printing of the input table is performed followed by printing of the initial and final model summary statistics and of the step summaries.
MAXNVF — The maximum length of NVEF as specified in the dimension statement in the calling program. (Input)
If the required length of NVEF becomes greater than MAXNVF, a type 4 error message is issued and the final model chosen is returned in NEF, NVEF, and INDEF. See Comment 2.
Default: MAXNVF = size (NVEF,1).
MAXIND — The maximum possible length of INDEF as specified in the dimension statement in the calling program. (Input)
If the required length of INDEF becomes greater than MAXIND, a type 4 error message is issued and the final model chosen is returned in NEF, NVEF, and INDEF. See Comment 2.
Default: MAXIND = size (INDEF,1).
FORTRAN 90 Interface
Generic: CALL CTSTP (NCLVAL, TABLE, ISTEP, NSTEP, NFORCE, NEF, NVEF, INDEF, FIT, STAT, IEND [])
Specific: The specific interface names are S_CTSTP and D_CTSTP.
FORTRAN 77 Interface
Single: CALL CTSTP (IDO, NCLVAR, NCLVAL, TABLE, PIN, POUT, ISTEP, NSTEP, NFORCE, IPRINT, NEF, NVEF, MAXNVF, INDEF, MAXIND, FIT, STAT, IEND)
Double: The double precision name is DCTSTP.
Description
Routine CTSTP performs stepwise model building in hierarchical log‑linear models. CTSTP handles structural and sampling zeros, and allows “downward,” “upward,” or “stepwise” stepping. For NFORCE > 0, the leading NFORCE effects in the initial model specified in NEF, NVEF, and INDEF are forced to remain in the model. A variable number (NSTEP) of steps from the input model are performed during a single invocation of CTSTP. Printing of the input table and intermediate results is performed if requested.
In hierarchical models, lower order effects are automatically included whenever a higher order effect containing the lower order effect is in the model. That is, the model (AB) automatically includes the mean and the main effects A and B, and the model (AB, ACD) automatically includes the lower order effects A, B, C, D, AC, AD, and CD.
The algorithm proceeds through the following steps during a single invocation when IDO = 0. For IDO > 0, these steps are still followed, but they may require more than one invocation of the routine.
1. The input model is fit. The current model is set to the input model.
2. If downward stepping is to be performed (ISTEP = 1 or ISTEP = 0), then each effect in the model is examined to determine if it can be deleted from the current model. An effect may be deleted from the current model if it is not a “forced effect” and if it must be included in the hierarchical specification of the model (in which lower order terms are not specified). Thus, for example, the effect ABC can be deleted from the model (ABC, BCD), yielding a model (AB, AC, BCD), but not from the model (ABCD) since ABC is not included in the hierarchical specification.
For each effect that can be deleted in a downward step, the usual chi‑squared likelihood‑ratio test statistic is computed as twice the difference of the log‑likelihoods between the current model and the model in which the effect has been deleted. The degrees of freedom for the effect are determined (see below), and an asymptotic p‑value is computed via the chi‑squared distribution. After the p‑values for all deleted models have been determined, the maximum p‑value is selected. If it is greater than the p‑value for deletion, POUT, the effect is deleted from the model, and the resulting model is fit.
3. If a downward step is not possible, either because all computed p‑values are too small or because downward stepping is not to be performed, an upward step is attempted if requested (ISTEP = 0 or ISTEP = 1). For upward stepping, each effect in the full factorial analysis of variance specification of the table is examined to determine if the effect differs from the current model by exactly one term. For example, (ABC) differs by one term from the model (AB, AC, BC) and from the model (ABD, ACD, BCD), but it differs by more than one term from the model (AB, BC).
For each effect that may be added to the model, a chi‑squared likelihood‑ratio test statistic is computed comparing the current model to the model with the added effect, its degrees of freedom are determined (see below), and an asymptotic p‑value based upon the chi‑squared distribution is computed. After all p‑values for models with additive effects have been computed, the model with the minimum p‑value is determined. If the minimum p‑value is less than the p‑value for addition, PIN, then the effect is added to the model, and the resulting model is fit.
4. If neither a step down, nor a step up can be performed, then CTSTP sets IEND = 1 and returns the original model to the user. Otherwise, if additional steps are to be made, execution continues at Step 2 above.
Degrees of Freedom
In CTSTP, structural zeros are considered to be a restriction of the parameter space. As such, they subtract from the degrees of freedom for an effect. Alternatively, sampling zeros are a result of sampling, and thus, they do not subtract for the degrees of freedom or restrict the parameter space. When computing degrees of freedom, sampling zeros are treated as if they were positive counts. If there are no structural zeros, then the degrees of freedom are computed as the product of the degrees of freedom for each variable in the effect where the degrees of freedom for the variable is the number of levels for the variable minus one. When structural zeros are present, there are restrictions on the parameter space, and the degrees of freedom for an effect are computed as the number of non‑zero diagonal elements corresponding to the effect along the Cholesky factorization of the XT X matrix where X is the “design matrix” for the model. That is, each row of X contains the indicator variables for a cell in the table, with the indicator variables for the current model preceding the indicator variables for the effect for which degrees of freedom are desired. Because the degrees of freedom for an effect must be relative to the model, when there are structural zeros, it is possible for the degrees of freedom for an effect to change from one step to the next.
Comments
1. Workspace may be explicitly provided, if desired, by use of C2STP/DC2STP. The reference is:
CALL C2STP (IDO, NCLVAR, NCLVAL, TABLE, PIN, POUT, ISTEP, NSTEP, NFORCE, NEF, IPRINT, NVEF, MAXNVF, INDEF, MAXIND, FIT, STAT, IEND, MAXMAR, AMAR, INVEF, IINDEF, IDF, ZWK, RWK, IWK)
The additional arguments are as follows:
MAXMAR — The length of AMAR. (Input)
When workspace is allocated by CTSTP, MAXMAR is equal to the number of workspace elements remaining after all other workspace is allocated. MAXMAR should be chosen as the maximum over all models considered of the sum over all marginal tables tables in the model of the number of elements in each marginal table.
AMAR — Work vector of length MAXMAR used to store marginal means in the proportional fitting algorithm. (Output)
INVEF — Work vector whose length is dependent on ISTEP, IPRINT, and
z = the number of structural zeros in TABLE.
ISTEP
IPRINT
z
Length of INVEF
1, 0, 1
0, 1, 2
z > 1
3v
0, 1
0, 1, 2
z 1
3v
1
0
z 1
2v
Here, v = 2NCLVAR  1.
IINDEF — Work vector whose length is dependent on ISTEP, IPRINT, and z = the number of structural zeros in TABLE.
ISTEP
IPRINT
z
Length of IINDEF
1, 0, 1
0, 1, 2
z > 1
3d
0, 1
0, 1, 2
z 1
3d
1
0
z 1
2d
Here, d = NCLVAR * 2NCLVAR1.
IDF — Vector of length n + z. (Output, for IDO = 0 or 1; input/output otherwise). Here, n = NCLVAL(1) * NCLVAL(2) *  * NCLVAL(NCLVAR). If there are no structural zeros in TABLE, IDF is not referenced and may be dimensioned of length 1 in the calling program. When using the IDO = 1, 2, or 3 option, the values stored in IDF should not be altered between calls to C2STP.
ZWK — Vector of length n(n + 2). (Output, for IDO = 0 or 1; input/output otherwise). Here, n = NCLVAL(1) * NCLVAL(2) *  * NCLVAL(NCLVAR). If there are no structural zeros in TABLE, ZWK is not referenced and may be dimensioned of length 1 in the calling program. When using the IDO = 1, 2, or 3 option, the values stored in ZWK should not be altered between calls to C2STP.
RWK — Work vector whose length is dependent on IDO and z, the number of structural zeros in TABLE.
IDO
Z
Length of RWK
0, 1
z > 1
2n + m
0, 1
z 1
n
2, 3
z > 1
n
2, 3
z 1
n
Here, n = NCLVAL(1) * NCLVAL(2) *  * NCLVAL(NCLVAR) and m = NCLVAL(1) + NCLVAL(2) +  + NCLVAL(NCLVAR).
IWK — Work vector whose length is dependent on ISTEP and NSTEP.
ISTEP
NSTEP
Length of IWK
1, 0
NSTEP = 0
3 * NCLVAR + NEF
1, 0
NSTEP 0
3 * NCLVAR + v
1
NSTEP = 0
2 * NCLVAR + NEF
1
NSTEP 0
2 * NCLVAR + v
Here, v = 2NCLVAR1.
2. Informational errors
Type
Code
Description
3
1
The proportional fitting algorithm did not converge.
4
2
There is not enough workspace allocated for storing the marginal means.
4
3
The required length of NVEF to store the effects of the new model exceeds MAXNVF.
4
4
The required length of INDEF to store the effects of the new model exceeds MAXIND.
3. The cells of the vectors TABLE, and FIT are sequenced so that the first variable cycles from 1 to NCLVAL(1) the slowest, the second variable cycles from 1 to NCLVAL(2) the next slowest, etc., up to the NCLVAR‑th variable, which cycles from 1 to NCLVAL(NCLVAR) the fastest.
Example: For NCLVAR = 3, NCLVAL(1) = 2, NCLVAL(2) = 3, and NCLVAL(3) = 2, the cells of table X(IJK) are entered into TABLE(1) through TABLE(12) in the following order. X(1, 1, 1), X(1, 1, 2), X(1, 2, 1), X(1, 2, 2), X(1, 3, 1), X(1, 3, 2), X(2, 1, 1), X(2, 1, 2), X(2, 2, 1), X(2, 2, 2), X(2, 3, 1), X(2, 3, 2). The elements of FIT are similarly sequenced.
4. INDEF is used to describe the marginal tables to be fit. For example, if NCLVAR = 3 and the first effect is to fit the marginal table for variables 1 and 3 and the second effect is to fit the marginal table for variable 2, then: NEF = 2, NVEF(1) = 2, and NVEF(2) = 1. Since the sum of the NVEF(I) is 3, then INDEF is a vector of length 3 with values: INDEF(1) = 1, INDEF(2) = 3, and INDEF(3) = 2.
Examples
Example 1
The following example is taken from Lee (1977). It involves a simple four‑way table in which the first three factors have 2 levels, and the fourth factor has 3 levels. The data involves brand preference in different situations. In the example, the three‑way interaction is removed, leaving 3 two‑way interactions. In the new model, the three‑way interaction is omitted.
 
USE UMACH_INT
USE CTSTP_INT
USE WRIRN_INT
USE WRRRN_INT
USE ISUM_INT
 
IMPLICIT NONE
INTEGER IPRINT, LTAB, MAXIND, MAXNVF, NCLVAR
PARAMETER (IPRINT=2, LTAB=24, MAXIND=20, MAXNVF=10, NCLVAR=4)
!
INTEGER IEND, INDEF(MAXIND), ISTEP, LIND, NCLVAL(NCLVAR), &
NEF, NFORCE, NOUT, NSTEP, NVEF(MAXNVF)
REAL FIT(LTAB), STAT(3), TABLE(LTAB)
!
DATA TABLE/19.0, 57.0, 29.0, 63.0, 29.0, 49.0, 27.0, 53.0, 23.0, &
47.0, 33.0, 66.0, 47.0, 55.0, 23.0, 50.0, 24.0, 37.0, 42.0, &
68.0, 43.0, 52.0, 30.0, 42.0/
DATA NCLVAL/3, 2, 2, 2/, FIT/24*1.0/
DATA NEF/1/
!
CALL UMACH (2, NOUT)
!
ISTEP = 0
NSTEP = 1
NFORCE = 0
NVEF(1) = 3
INDEF(1) = 1
INDEF(2) = 2
INDEF(3) = 4
!
CALL CTSTP (NCLVAL, TABLE, ISTEP, NSTEP, NFORCE, NEF, &
NVEF, INDEF, FIT, STAT, IEND, IPRINT=IPRINT)
!
WRITE (NOUT,99999) IEND, NEF
CALL WRIRN ('NVEF', NVEF, 1, NEF, 1, 0)
LIND = ISUM(NEF,NVEF,1)
CALL WRIRN ('INDEF', INDEF, 1, LIND, 1, 0)
CALL WRRRN ('FIT', FIT, 1, LTAB, 1, 0)
!
99999 FORMAT (/, ' IEND = ', I3, ' NEF = ', I3)
END
Output
 
Variable Number of Levels
1 A 3
2 B 2
3 C 2
4 D 2
 
----------
Table 1: B = 1 C = 1
D (row) by A (column)
1 2 3
1 19.00 23.00 24.00
2 57.00 47.00 37.00
 
----------
Table 2: B = 1 C = 2
D (row) by A (column)
1 2 3
1 29.00 33.00 42.00
2 63.00 66.00 68.00
 
----------
Table 3: B = 2 C = 1
D (row) by A (column)
1 2 3
1 29.00 47.00 43.00
2 49.00 55.00 52.00
 
----------
Table 4: B = 2 C = 2
D (row) by A (column)
1 2 3
1 27.00 23.00 30.00
2 53.00 50.00 42.00
 
---------------------- Step: 0 ----------------------
Input Model: (A*B*D)
Smallest p-value for removing effects 0.100
Largest p-value for entering effects 0.050
Chi-squared 33.92
Degrees of Freedom 12.
p-value 0.0007
Degrees of
Effect Tested Chi-squared Freedom P-value
A*B*D 0.12 2 0.9408
Effect Removed: A*B*D
 
---------------------- Step: 1 ----------------------
Model: (A*B, A*D, B*D)
Chi-squared 34.05
Degrees of Freedom 14.
p-value 0.0020
 
IEND = 0 NEF = 3
 
NVEF
1 2 3
2 2 2
 
INDEF
1 2 3 4 5 6
1 2 1 4 2 4
 
 
FIT
1 2 3 4 5 6 7 8 9 10
24.39 59.61 24.39 59.61 27.61 51.39 27.61 51.39 28.24 56.26
 
11 12 13 14 15 16 17 18 19 20
28.24 56.26 34.76 52.74 34.76 52.74 32.38 53.12 32.38 53.12
 
21 22 23 24
37.12 46.38 37.12 46.38
Example 2
Example two illustrates the use of CTSTP when sampling zeros are present. In this example, which is taken from Brown and Fuchs (1983), there are thirteen sampling zeros so that thirteen parameter estimates are infinite when the full model is fit. Here, we begin with the model fit by Brown and Fuchs, which, in CTSTP notation, is given as
(AC, AD, ABE, BCDE)
When this model is fit, there are five parameter estimates that are infinite. Note that these estimates have no effect on the degrees of freedom used in the tests computed here.
 
USE UMACH_INT
USE CTSTP_INT
USE WRIRN_INT
USE WRRRN_INT
USE ISUM_INT
 
IMPLICIT NONE
INTEGER IPRINT, LTAB, MAXIND, MAXNVF, NCLVAR, I
PARAMETER (IPRINT=2, LTAB=32, MAXIND=30, MAXNVF=10, NCLVAR=5)
!
INTEGER IDO, IEND, INDEF(MAXIND), ISTEP, LIND, NCLVAL(NCLVAR), &
NEF, NFORCE, NOUT, NSTEP, NVEF(MAXNVF)
REAL FIT(LTAB), STAT(3), TABLE(LTAB)
!
DATA TABLE/33.0, 32.0, 8.0, 8.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, &
0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 2.0, 10.0, 3.0, 6.0, 1.0, &
2.0, 0.0, 2.0, 0.0, 1.0, 0.0, 4.0, 0.0, 1.0, 0.0, 2.0/
DATA NCLVAL/2, 2, 2, 2, 2/, FIT/32*1.0/, NEF/4/
DATA (NVEF(I),I=1,4)/2, 2, 3, 4/
DATA (INDEF(I),I=1,11)/1, 3, 1, 4, 1, 2, 5, 2, 3, 4, 5/
!
CALL UMACH (2, NOUT)
!
ISTEP = -1
NSTEP = 2
NFORCE = 0
!
CALL CTSTP (NCLVAL, TABLE, ISTEP, NSTEP, NFORCE, NEF, &
NVEF, INDEF, FIT, STAT, IEND, IPRINT=IPRINT)
!
WRITE (NOUT,99999) IEND, NEF
CALL WRIRN ('NVEF', NVEF, 1, NEF, 1, 0)
LIND = ISUM(NEF,NVEF,1)
CALL WRIRN ('INDEF', INDEF, 1, LIND, 1, 0)
CALL WRRRN ('FIT', FIT, 1, LTAB, 1, 0)
!
99999 FORMAT (/, ' IEND = ', I3, ' NEF = ', I3)
END
Output
 
Variable Number of Levels
1 A 2
2 B 2
3 C 2
4 D 2
5 E 2
 
----------
Table 1: A = 1 B = 1 C = 1
D (row) by E (column)
1 2
1 33.00 32.00
2 8.00 8.00
 
----------
Table 2: A = 1 B = 1 C = 2
D (row) by E (column)
1 2
1 0.000 1.000
2 1.000 0.000
 
----------
Table 3: A = 1 B = 2 C = 1
D (row) by E (column)
1 2
1 0.000 1.000
2 0.000 0.000
 
----------
Table 4: A = 1 B = 2 C = 2
D (row) by E (column)
1 2
1 0.000 1.000
2 0.000 0.000
 
----------
Table 5: A = 2 B = 1 C = 1
D (row) by E (column)
1 2
1 2.00 10.00
2 3.00 6.00
 
----------
Table 6: A = 2 B = 1 C = 2
D (row) by E (column)
1 2
1 1.000 2.000
2 0.000 2.000
 
----------
Table 7: A = 2 B = 2 C = 1
D (row) by E (column)
1 2
1 0.000 1.000
2 0.000 4.000
 
----------
Table 8: A = 2 B = 2 C = 2
D (row) by E (column)
1 2
1 0.000 1.000
2 0.000 2.000
 
---------------------- Step: 0 ----------------------
Input Model: (A*C, A*D, A*B*E, B*C*D*E)
Smallest p-value for removing effects 0.100
Chi-squared 9.07
Degrees of Freedom 10.
p-value 0.5251
 
Degrees of
Effect Tested Chi-squared Freedom P-value
A*C 4.41 1 0.0358
A*D 6.56 1 0.0104
A*B*E 0.00 1 0.9912
B*C*D*E 0.00 1 0.9912
Effect Removed: B*C*D*E
 
---------------------- Step: 1 ----------------------
Model: (A*C, A*D, A*B*E, B*C*D, B*C*E, B*D*E, C*D*E)
Chi-squared 9.07
Degrees of Freedom 11.
p-value 0.6151
 
Degrees of
Effect Tested Chi-squared Freedom P-value
A*C 4.41 1 0.0358
A*D 6.56 1 0.0104
A*B*E 0.00 1 1.0000
B*C*D 0.53 1 0.4673
B*C*E 0.00 1 1.0000
B*D*E 0.00 1 1.0000
C*D*E 0.10 1 0.7522
Effect Removed: B*C*E
 
---------------------- Step: 2 ----------------------
Model: (A*C, A*D, A*B*E, B*C*D, B*D*E, C*D*E)
Chi-squared 9.07
Degrees of Freedom 12.
p-value 0.6966
IEND = 0 NEF = 6
 
NVEF
1 2 3 4 5 6
2 2 3 3 3 3
 
INDEF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 3 1 4 1 2 5 2 3 4 2 4 5 3 4 5
 
FIT
1 2 3 4 5 6 7 8 9 10
32.36 32.56 8.53 6.91 0.71 1.21 0.40 0.32 0.00 0.90
 
11 12 13 14 15 16 17 18 19 20
0.00 0.75 0.00 0.27 0.00 0.09 2.64 9.44 2.47 7.09
 
21 22 23 24 25 26 27 28 29 30
0.29 1.79 0.60 1.68 0.00 1.10 0.00 3.25 0.00 1.73
 
31 32
0.00 1.91
Published date: 03/19/2020
Last modified date: 03/19/2020