How to get equal number of elements after range division leaving a remainderHow to find the remainder of a division in C?C++ Best way to get integer division and remainderDivide Loop Execution According to Threads In JavaMultithreading Sieve of Eratosthenes - Taking a very very long timeLogic Help: Calculating primes of a range of numbers with multiple threadsThreaded prime generation in C, how can I give each thread its own start and end?cyclicBarrier on calculate prime numbersLeast run time with threadsHow do I chunk prime numbers for multithreading?Processes and Message Queues Issue
A steel cutting sword?
I know that there is a preselected candidate for a position to be filled at my department. What should I do?
Why did the person in charge of a principality not just declare themself king?
What could a self-sustaining lunar colony slowly lose that would ultimately prove fatal?
Are black holes spherical during merger?
Who decides how to classify a novel?
NIntegrate doesn't evaluate
Can a British citizen living in France vote in both France and Britain in the European Elections?
How to patch glass cuts in a bicycle tire?
Does pair production happen even when the photon is around a neutron?
The art of clickbait captions
Do photons bend spacetime or not?
Need to read my home electrical meter
Why most published works in medical imaging try reducing false positives?
What is the difference between singing and speaking?
Why are GND pads often only connected by four traces?
Can I connect my older mathematica front-end to the free wolfram engine?
Did this character show any indication of wanting to rule before S8E6?
What is a fully qualified name?
In general, would I need to season a meat when making a sauce?
Find the three digit Prime number P from the given unusual relationships
Is the Unsullied name meant to be ironic? How did it come to be?
How should I introduce map drawing to my players?
My employer faked my resume to acquire projects
How to get equal number of elements after range division leaving a remainder
How to find the remainder of a division in C?C++ Best way to get integer division and remainderDivide Loop Execution According to Threads In JavaMultithreading Sieve of Eratosthenes - Taking a very very long timeLogic Help: Calculating primes of a range of numbers with multiple threadsThreaded prime generation in C, how can I give each thread its own start and end?cyclicBarrier on calculate prime numbersLeast run time with threadsHow do I chunk prime numbers for multithreading?Processes and Message Queues Issue
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I know the title is not the best description but it was the best I could do .
Long story sort, I am trying to get a range of numbers,
lets say for the example :
MIN: 0 and MAX: 10 ,
so the range would be 10 .
I want to divide the range in n fields (The user gives this this input, so it is variable) and then create n threads-children , using fork() , where each one will get its own sub-range of these numbers and execute some code using these numbers , actually its going to check if this number is a prime number or not.
So my problem is that I can't think of a formula to write so that the numbers will be equally split.
I tried:
for(int i = 0; i<n; i++)
//fork()
int temp = MIN + (i*(RANGE/n));
for(int a =; a< temp +(RANGE/n)+1; a++)
//check if prime
//other actions
But I know this will not work correctly because if we have 3 threads(n),it is going to check the ranges (0,3) , (3,6) , (6,9) because the
(RANGE/n) gives 3
That means that the last number , in this example the 10, will never be checked in cases where the division of the RANGE from the N number of children leave a remain.
Is there any smart way to split the range and check all the numbers by different number of processes each time ?
thanks in advance
c multithreading formula division
add a comment |
I know the title is not the best description but it was the best I could do .
Long story sort, I am trying to get a range of numbers,
lets say for the example :
MIN: 0 and MAX: 10 ,
so the range would be 10 .
I want to divide the range in n fields (The user gives this this input, so it is variable) and then create n threads-children , using fork() , where each one will get its own sub-range of these numbers and execute some code using these numbers , actually its going to check if this number is a prime number or not.
So my problem is that I can't think of a formula to write so that the numbers will be equally split.
I tried:
for(int i = 0; i<n; i++)
//fork()
int temp = MIN + (i*(RANGE/n));
for(int a =; a< temp +(RANGE/n)+1; a++)
//check if prime
//other actions
But I know this will not work correctly because if we have 3 threads(n),it is going to check the ranges (0,3) , (3,6) , (6,9) because the
(RANGE/n) gives 3
That means that the last number , in this example the 10, will never be checked in cases where the division of the RANGE from the N number of children leave a remain.
Is there any smart way to split the range and check all the numbers by different number of processes each time ?
thanks in advance
c multithreading formula division
add a comment |
I know the title is not the best description but it was the best I could do .
Long story sort, I am trying to get a range of numbers,
lets say for the example :
MIN: 0 and MAX: 10 ,
so the range would be 10 .
I want to divide the range in n fields (The user gives this this input, so it is variable) and then create n threads-children , using fork() , where each one will get its own sub-range of these numbers and execute some code using these numbers , actually its going to check if this number is a prime number or not.
So my problem is that I can't think of a formula to write so that the numbers will be equally split.
I tried:
for(int i = 0; i<n; i++)
//fork()
int temp = MIN + (i*(RANGE/n));
for(int a =; a< temp +(RANGE/n)+1; a++)
//check if prime
//other actions
But I know this will not work correctly because if we have 3 threads(n),it is going to check the ranges (0,3) , (3,6) , (6,9) because the
(RANGE/n) gives 3
That means that the last number , in this example the 10, will never be checked in cases where the division of the RANGE from the N number of children leave a remain.
Is there any smart way to split the range and check all the numbers by different number of processes each time ?
thanks in advance
c multithreading formula division
I know the title is not the best description but it was the best I could do .
Long story sort, I am trying to get a range of numbers,
lets say for the example :
MIN: 0 and MAX: 10 ,
so the range would be 10 .
I want to divide the range in n fields (The user gives this this input, so it is variable) and then create n threads-children , using fork() , where each one will get its own sub-range of these numbers and execute some code using these numbers , actually its going to check if this number is a prime number or not.
So my problem is that I can't think of a formula to write so that the numbers will be equally split.
I tried:
for(int i = 0; i<n; i++)
//fork()
int temp = MIN + (i*(RANGE/n));
for(int a =; a< temp +(RANGE/n)+1; a++)
//check if prime
//other actions
But I know this will not work correctly because if we have 3 threads(n),it is going to check the ranges (0,3) , (3,6) , (6,9) because the
(RANGE/n) gives 3
That means that the last number , in this example the 10, will never be checked in cases where the division of the RANGE from the N number of children leave a remain.
Is there any smart way to split the range and check all the numbers by different number of processes each time ?
thanks in advance
c multithreading formula division
c multithreading formula division
asked Mar 24 at 2:23
Flora BiletsiouFlora Biletsiou
83
83
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
How to get equal number of elements after range division leaving a remainder
Various approaches.
A key issues is if the 0
and 10
are both included in the integer range: Is it [0... 10]
or [0... 10)
or ...? Notice the ]
or )
? Let us assume the lists end-points are included and [0... 10]
is 11 different integer values.
Note: There are extremes such as having 11 numbers divided into 12 groups.
The below forms the sub-range from the first 1/n
part of the range, then the 1/(n-1)
part of the remaining range, etc.
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
for(int i = n; i > 0 && inclusive_min <= inclusive_max; i--)
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range/i;
if (sub_range == 0) sub_range = 1;
printf("Sub range [%d %d]n", inclusive_min, inclusive_min + sub_range - 1);
inclusive_min += sub_range;
int main(void)
range(3, 0, 10);
range(2, 0, 10);
range(5, 0, 10);
range(3, 0, 1);
return 0;
Output
Range [0 10] / 3
Sub range [0 2]
Sub range [3 6]
Sub range [7 10]
Range [0 10] / 2
Sub range [0 4]
Sub range [5 10]
Range [0 10] / 5
Sub range [0 1]
Sub range [2 3]
Sub range [4 5]
Sub range [6 7]
Sub range [8 10]
Range [0 1] / 3
Sub range [0 0]
Sub range [1 1]
A more elegant solution, akin to Bresenham's line algorithm
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range / n;
int sub_range_res = range % n;
int p = 0;
for (int i = 0; i < n; i++)
int next = inclusive_min + sub_range;
p += sub_range_res;
if (2 * p >= n) // like p >= n/2 without integer truncation.
p -= n;
next++;
if (next > inclusive_min)
printf("Sub range %d:[%d %d]n", i, inclusive_min, next - 1);
inclusive_min = next;
Output
Range [0 10] / 3
Sub range 0:[0 3]
Sub range 1:[4 6]
Sub range 2:[7 10]
Range [0 10] / 2
Sub range 0:[0 5]
Sub range 1:[6 10]
Range [0 10] / 5
Sub range 0:[0 1]
Sub range 1:[2 3]
Sub range 2:[4 6]
Sub range 3:[7 8]
Sub range 4:[9 10]
Range [0 1] / 3
Sub range 0:[0 0]
Sub range 2:[1 1]
add a comment |
If your task is to verify if a number is prime, it is convenient that the larger numbers are in smaller groups (since it is more difficult to verify that they are prime numbers).
You could use a policy, started by MAX. Then create the following interval: MAX-1, MAX-2 for example (and so on) until you have the number of required ranges.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55320196%2fhow-to-get-equal-number-of-elements-after-range-division-leaving-a-remainder%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
How to get equal number of elements after range division leaving a remainder
Various approaches.
A key issues is if the 0
and 10
are both included in the integer range: Is it [0... 10]
or [0... 10)
or ...? Notice the ]
or )
? Let us assume the lists end-points are included and [0... 10]
is 11 different integer values.
Note: There are extremes such as having 11 numbers divided into 12 groups.
The below forms the sub-range from the first 1/n
part of the range, then the 1/(n-1)
part of the remaining range, etc.
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
for(int i = n; i > 0 && inclusive_min <= inclusive_max; i--)
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range/i;
if (sub_range == 0) sub_range = 1;
printf("Sub range [%d %d]n", inclusive_min, inclusive_min + sub_range - 1);
inclusive_min += sub_range;
int main(void)
range(3, 0, 10);
range(2, 0, 10);
range(5, 0, 10);
range(3, 0, 1);
return 0;
Output
Range [0 10] / 3
Sub range [0 2]
Sub range [3 6]
Sub range [7 10]
Range [0 10] / 2
Sub range [0 4]
Sub range [5 10]
Range [0 10] / 5
Sub range [0 1]
Sub range [2 3]
Sub range [4 5]
Sub range [6 7]
Sub range [8 10]
Range [0 1] / 3
Sub range [0 0]
Sub range [1 1]
A more elegant solution, akin to Bresenham's line algorithm
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range / n;
int sub_range_res = range % n;
int p = 0;
for (int i = 0; i < n; i++)
int next = inclusive_min + sub_range;
p += sub_range_res;
if (2 * p >= n) // like p >= n/2 without integer truncation.
p -= n;
next++;
if (next > inclusive_min)
printf("Sub range %d:[%d %d]n", i, inclusive_min, next - 1);
inclusive_min = next;
Output
Range [0 10] / 3
Sub range 0:[0 3]
Sub range 1:[4 6]
Sub range 2:[7 10]
Range [0 10] / 2
Sub range 0:[0 5]
Sub range 1:[6 10]
Range [0 10] / 5
Sub range 0:[0 1]
Sub range 1:[2 3]
Sub range 2:[4 6]
Sub range 3:[7 8]
Sub range 4:[9 10]
Range [0 1] / 3
Sub range 0:[0 0]
Sub range 2:[1 1]
add a comment |
How to get equal number of elements after range division leaving a remainder
Various approaches.
A key issues is if the 0
and 10
are both included in the integer range: Is it [0... 10]
or [0... 10)
or ...? Notice the ]
or )
? Let us assume the lists end-points are included and [0... 10]
is 11 different integer values.
Note: There are extremes such as having 11 numbers divided into 12 groups.
The below forms the sub-range from the first 1/n
part of the range, then the 1/(n-1)
part of the remaining range, etc.
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
for(int i = n; i > 0 && inclusive_min <= inclusive_max; i--)
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range/i;
if (sub_range == 0) sub_range = 1;
printf("Sub range [%d %d]n", inclusive_min, inclusive_min + sub_range - 1);
inclusive_min += sub_range;
int main(void)
range(3, 0, 10);
range(2, 0, 10);
range(5, 0, 10);
range(3, 0, 1);
return 0;
Output
Range [0 10] / 3
Sub range [0 2]
Sub range [3 6]
Sub range [7 10]
Range [0 10] / 2
Sub range [0 4]
Sub range [5 10]
Range [0 10] / 5
Sub range [0 1]
Sub range [2 3]
Sub range [4 5]
Sub range [6 7]
Sub range [8 10]
Range [0 1] / 3
Sub range [0 0]
Sub range [1 1]
A more elegant solution, akin to Bresenham's line algorithm
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range / n;
int sub_range_res = range % n;
int p = 0;
for (int i = 0; i < n; i++)
int next = inclusive_min + sub_range;
p += sub_range_res;
if (2 * p >= n) // like p >= n/2 without integer truncation.
p -= n;
next++;
if (next > inclusive_min)
printf("Sub range %d:[%d %d]n", i, inclusive_min, next - 1);
inclusive_min = next;
Output
Range [0 10] / 3
Sub range 0:[0 3]
Sub range 1:[4 6]
Sub range 2:[7 10]
Range [0 10] / 2
Sub range 0:[0 5]
Sub range 1:[6 10]
Range [0 10] / 5
Sub range 0:[0 1]
Sub range 1:[2 3]
Sub range 2:[4 6]
Sub range 3:[7 8]
Sub range 4:[9 10]
Range [0 1] / 3
Sub range 0:[0 0]
Sub range 2:[1 1]
add a comment |
How to get equal number of elements after range division leaving a remainder
Various approaches.
A key issues is if the 0
and 10
are both included in the integer range: Is it [0... 10]
or [0... 10)
or ...? Notice the ]
or )
? Let us assume the lists end-points are included and [0... 10]
is 11 different integer values.
Note: There are extremes such as having 11 numbers divided into 12 groups.
The below forms the sub-range from the first 1/n
part of the range, then the 1/(n-1)
part of the remaining range, etc.
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
for(int i = n; i > 0 && inclusive_min <= inclusive_max; i--)
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range/i;
if (sub_range == 0) sub_range = 1;
printf("Sub range [%d %d]n", inclusive_min, inclusive_min + sub_range - 1);
inclusive_min += sub_range;
int main(void)
range(3, 0, 10);
range(2, 0, 10);
range(5, 0, 10);
range(3, 0, 1);
return 0;
Output
Range [0 10] / 3
Sub range [0 2]
Sub range [3 6]
Sub range [7 10]
Range [0 10] / 2
Sub range [0 4]
Sub range [5 10]
Range [0 10] / 5
Sub range [0 1]
Sub range [2 3]
Sub range [4 5]
Sub range [6 7]
Sub range [8 10]
Range [0 1] / 3
Sub range [0 0]
Sub range [1 1]
A more elegant solution, akin to Bresenham's line algorithm
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range / n;
int sub_range_res = range % n;
int p = 0;
for (int i = 0; i < n; i++)
int next = inclusive_min + sub_range;
p += sub_range_res;
if (2 * p >= n) // like p >= n/2 without integer truncation.
p -= n;
next++;
if (next > inclusive_min)
printf("Sub range %d:[%d %d]n", i, inclusive_min, next - 1);
inclusive_min = next;
Output
Range [0 10] / 3
Sub range 0:[0 3]
Sub range 1:[4 6]
Sub range 2:[7 10]
Range [0 10] / 2
Sub range 0:[0 5]
Sub range 1:[6 10]
Range [0 10] / 5
Sub range 0:[0 1]
Sub range 1:[2 3]
Sub range 2:[4 6]
Sub range 3:[7 8]
Sub range 4:[9 10]
Range [0 1] / 3
Sub range 0:[0 0]
Sub range 2:[1 1]
How to get equal number of elements after range division leaving a remainder
Various approaches.
A key issues is if the 0
and 10
are both included in the integer range: Is it [0... 10]
or [0... 10)
or ...? Notice the ]
or )
? Let us assume the lists end-points are included and [0... 10]
is 11 different integer values.
Note: There are extremes such as having 11 numbers divided into 12 groups.
The below forms the sub-range from the first 1/n
part of the range, then the 1/(n-1)
part of the remaining range, etc.
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
for(int i = n; i > 0 && inclusive_min <= inclusive_max; i--)
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range/i;
if (sub_range == 0) sub_range = 1;
printf("Sub range [%d %d]n", inclusive_min, inclusive_min + sub_range - 1);
inclusive_min += sub_range;
int main(void)
range(3, 0, 10);
range(2, 0, 10);
range(5, 0, 10);
range(3, 0, 1);
return 0;
Output
Range [0 10] / 3
Sub range [0 2]
Sub range [3 6]
Sub range [7 10]
Range [0 10] / 2
Sub range [0 4]
Sub range [5 10]
Range [0 10] / 5
Sub range [0 1]
Sub range [2 3]
Sub range [4 5]
Sub range [6 7]
Sub range [8 10]
Range [0 1] / 3
Sub range [0 0]
Sub range [1 1]
A more elegant solution, akin to Bresenham's line algorithm
void range(int n, int inclusive_min, int inclusive_max)
printf("Range [%d %d] / %dn", inclusive_min, inclusive_max, n);
int range = 1 + inclusive_max - inclusive_min;
int sub_range = range / n;
int sub_range_res = range % n;
int p = 0;
for (int i = 0; i < n; i++)
int next = inclusive_min + sub_range;
p += sub_range_res;
if (2 * p >= n) // like p >= n/2 without integer truncation.
p -= n;
next++;
if (next > inclusive_min)
printf("Sub range %d:[%d %d]n", i, inclusive_min, next - 1);
inclusive_min = next;
Output
Range [0 10] / 3
Sub range 0:[0 3]
Sub range 1:[4 6]
Sub range 2:[7 10]
Range [0 10] / 2
Sub range 0:[0 5]
Sub range 1:[6 10]
Range [0 10] / 5
Sub range 0:[0 1]
Sub range 1:[2 3]
Sub range 2:[4 6]
Sub range 3:[7 8]
Sub range 4:[9 10]
Range [0 1] / 3
Sub range 0:[0 0]
Sub range 2:[1 1]
edited Mar 24 at 9:02
answered Mar 24 at 8:46
chuxchux
86.1k875160
86.1k875160
add a comment |
add a comment |
If your task is to verify if a number is prime, it is convenient that the larger numbers are in smaller groups (since it is more difficult to verify that they are prime numbers).
You could use a policy, started by MAX. Then create the following interval: MAX-1, MAX-2 for example (and so on) until you have the number of required ranges.
add a comment |
If your task is to verify if a number is prime, it is convenient that the larger numbers are in smaller groups (since it is more difficult to verify that they are prime numbers).
You could use a policy, started by MAX. Then create the following interval: MAX-1, MAX-2 for example (and so on) until you have the number of required ranges.
add a comment |
If your task is to verify if a number is prime, it is convenient that the larger numbers are in smaller groups (since it is more difficult to verify that they are prime numbers).
You could use a policy, started by MAX. Then create the following interval: MAX-1, MAX-2 for example (and so on) until you have the number of required ranges.
If your task is to verify if a number is prime, it is convenient that the larger numbers are in smaller groups (since it is more difficult to verify that they are prime numbers).
You could use a policy, started by MAX. Then create the following interval: MAX-1, MAX-2 for example (and so on) until you have the number of required ranges.
answered Mar 24 at 5:53
Dante HavershamDante Haversham
1
1
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55320196%2fhow-to-get-equal-number-of-elements-after-range-division-leaving-a-remainder%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown