Skip to content

Conversation

@findepi
Copy link
Member

@findepi findepi commented Oct 3, 2022

@findepi findepi requested a review from rdblue October 3, 2022 08:17
@github-actions github-actions bot added the API label Oct 3, 2022
@findepi findepi force-pushed the findepi/reduce-scanning-table-log-verbosiy-for-long-in-list-443d47 branch from f940938 to fecf392 Compare October 3, 2022 08:55
@findepi findepi changed the title Reduce 'Scanning table' log verbosiy for long IN list Reduce 'Scanning table' log verbosity for long IN list Oct 3, 2022
Expressions.in(
"test", "(2-digit-int)", "(3-digit-int)", "... (63 values hidden, 65 in total) ..."),
ExpressionUtil.sanitize(
Expressions.in("test", IntStream.range(37, 102).boxed().toArray())));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The conversion to strings like "2-digit-int" and "3-digit-int" should handle this already when deduped. I think a better solution for the sanitizers is to dedup using a set and then do this. Only strings would need this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think i captured the idea, please take a look

case NOT_IN:
Iterable<String> iter =
() -> pred.literals().stream().map(ExpressionUtil::sanitize).iterator();
Iterable<String> iter = () -> sanitizeValuesList(pred.literals()).iterator();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that this could be done in StringSanitizer, but probably shouldn't be done in this sanitizer. The string sanitizer should be what's used for log messages where this makes sense. But the expression sanitizer is intended to pass expressions to metrics collection, where we want to be able to estimate the cardinality of literals.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reverting this one

@findepi findepi force-pushed the findepi/reduce-scanning-table-log-verbosiy-for-long-in-list-443d47 branch from fecf392 to 4c2ec11 Compare October 4, 2022 19:56
@findepi
Copy link
Member Author

findepi commented Oct 4, 2022

Thank you @rdblue for your review. Please take another look

@findepi findepi requested a review from rdblue October 4, 2022 19:57
}

@Test
public void testSanitizeLongIn() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be good to have a small test around the threshold value LONG_IN_PREDICATE_ABBREVIATION_THRESHOLD to make sure values are abbreviated/not abbreviated.

EDIT: I accidentally noticed that something like ExpressionUtil.toSanitizedString(Expressions.in("test", IntStream.range(0, 10).boxed().toArray())) actually produces test IN ((-2147483647-digit-int), (1-digit-int), ... (8 values hidden, 10 in total) ...). Notice the -2147483647-digit-int because of the 0. FWIW, this isn't something that is being caused by this PR, so I'll take a look into this separately

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be good to have a small test around the threshold value

done

@findepi findepi force-pushed the findepi/reduce-scanning-table-log-verbosiy-for-long-in-list-443d47 branch from 4c2ec11 to 422b7e0 Compare October 6, 2022 10:44
@findepi findepi requested a review from nastra October 6, 2022 10:45
@findepi findepi force-pushed the findepi/reduce-scanning-table-log-verbosiy-for-long-in-list-443d47 branch from 422b7e0 to 2317280 Compare October 6, 2022 10:45
@findepi
Copy link
Member Author

findepi commented Oct 6, 2022

There is some CI problem, which may not be related to my change

Download action repository 'actions/checkout@v3' (SHA:2541b1294d2704b0964813337f33b291d3f8596b)
Error: Can't use 'tar -xzf' extract archive file: /home/runner/work/_actions/_temp_7b1e7ac4-a85a-4410-ae9d-ae03a77dd17f/07983924-9158-4490-8b19-5006d31956a1.tar.gz. return code: 2.

i tried re-running, but got same results.
Will re-run build later, in hope it's transient.

@nastra nastra closed this Oct 6, 2022
@nastra nastra reopened this Oct 6, 2022
Example log line before the change

    2022-10-01T17:36:40.6483238Z 2022-10-01T12:36:40.234-0500	INFO
    Query-20221001_173635_04266_n8hz9-9878	org.apache.iceberg.BaseTableScan
    Scanning table tpch."test_in_predicate_large_set" snapshot
    2612675337175668169 created at 2022-10-01 17:36:35.120 with filter col2
    IN ((-2147483647-digit-int), (1-digit-int), (1-digit-int),
    (1-digit-int), (1-digit-int), (1-digit-int), (1-digit-int),
    (1-digit-int), (1-digit-int), (1-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (2-digit-int), (2-digit-int), (2-digit-int),
    (2-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (3-digit-int), (3-digit-int), (3-digit-int),
    (3-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-digit-int), (4-digit-int), (4-digit-int), (4-digit-int),
    (4-dig…
@findepi findepi force-pushed the findepi/reduce-scanning-table-log-verbosiy-for-long-in-list-443d47 branch from 2317280 to 16da9de Compare October 6, 2022 19:49
@findepi
Copy link
Member Author

findepi commented Oct 6, 2022

rebased to resolve conflict after #5928 was merged

return abbreviatedList;
}
}
return sanitizedValues;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Iceberg, we add an empty newline between a control flow block and the following statement.

abbreviatedList.addAll(distinctValues);
abbreviatedList.add(
String.format(
"... (%d values hidden, %d in total) ...",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove the second ...? I don't think it is very useful

@rdblue rdblue merged commit 31edba2 into apache:master Oct 6, 2022
@rdblue
Copy link
Contributor

rdblue commented Oct 6, 2022

Thanks, @findepi!

@findepi findepi deleted the findepi/reduce-scanning-table-log-verbosiy-for-long-in-list-443d47 branch October 7, 2022 07:07
Comment on lines +275 to +277
Set<String> distinctValues = ImmutableSet.copyOf(sanitizedValues);
if (distinctValues.size()
<= sanitizedValues.size() - LONG_IN_PREDICATE_ABBREVIATION_MIN_GAIN) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This logic of de-duplicating sanitized values works well only when we're dealing with integers because sanitized integers are represented by a limited set of values like 2-digit-int, 3-digit-int etc.
But when we have string values which are sanitized to hashes (e.g. (hash-1b409883), (hash-53cd6d46), (hash-24add70a), (hash-7df3cf93), ... this logic isn't helpful in abbrevaiting long IN list.
Since we're already dealing with sanitized values, I'm wondering why we're making the effort to always print all the distinct sanitized values ?
Can we make this simpler and just print first 2 and last distinct sanitized values when the number of distinctValues exceeds some threshold ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make this simpler and just print first 2 and last distinct sanitized values when the number of distinctValues exceeds some threshold ?

yes! (or a few more)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants