# Split a large Even number into small Even number

Here given code implementation process.

``````// C program for
// Split a large Even number into small Even number
#include <stdio.h>
#include <string.h>

// Check whether given character is form of even or not
int isEvenDigit(char ch)
{
if (ch == '0' || ch == '2' ||
ch == '4' || ch == '6' || ch == '8')
{
// Yes
return 1;
}
// No
return 0;
}
void partition(char *num, char result[], int index, int position, int k)
{
if (position == k)
{
// Display calculated result
result[index] = '\0';
printf("\n %s", result);
return;
}
int count = 0;
for (int i = position; i < k; ++i)
{
result[index + count] = num[i];

if (count == 0 && num[i] == '0')
{
// When if number starts with zero
// Include space
result[index + count + 1] = ' ';
count++;
}
else if (isEvenDigit(num[i]) == 1)
{
// Include space
result[index + count + 1] = ' ';
// Find next even number
partition(num, result, index + count + 2, i + 1, k);
}
count++;
}
}
void splitIntoEvenNumber(char *num)
{
int k = strlen(num);
if (k == 0 || !isEvenDigit(num[k - 1]))
{
return;
}
// Collect result
char result[(k *2) + 1];
printf("\n Given number : %s", num);
partition(num, result, 0, 0, k);
}
int main()
{
// Test
splitIntoEvenNumber("12341872017226");
return 0;
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````/*
Java program
Split a large Even number into small Even number
*/
public class Splitting
{
// Check whether given character is form of even or not
public boolean isEvenDigit(char ch)
{
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
{
// Yes
return true;
}
// No
return false;
}
public void displayResult(char[] result, int n)
{
for (int i = 0; i < n; ++i)
{
System.out.print(result[i]);
}
System.out.print("\n");
}
public void partition(String num, char[] result,
int index, int position, int k)
{
if (position == k)
{
displayResult(result, index);
return;
}
int count = 0;
for (int i = position; i < k; ++i)
{
result[index + count] = num.charAt(i);
if (count == 0 && num.charAt(i) == '0')
{
// When if number starts with zero
// Include space
result[index + count + 1] = ' ';
count++;
}
else if (isEvenDigit(num.charAt(i)))
{
// Include space
result[index + count + 1] = ' ';
// Find next even number
partition(num, result, index + count + 2, i + 1, k);
}
count++;
}
}
public void splitIntoEvenNumber(String num)
{
int k = num.length();
if (k == 0 || !isEvenDigit(num.charAt(k - 1)))
{
return;
}
// Collect result
char[] result = new char[(k * 2) + 1];
System.out.println("\n Given number : " + num);
partition(num, result, 0, 0, k);
}
public static void main(String[] args)
{
Splitting task = new Splitting();
// Test
task.splitIntoEvenNumber("12341872017226");
}
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````// Include header file
#include <iostream>
#include <string>

using namespace std;
/*
C++ program
Split a large Even number into small Even number
*/
class Splitting
{
public:
// Check whether given character is form of even or not
bool isEvenDigit(char ch)
{
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
{
// Yes
return true;
}
// No
return false;
}
void displayResult(char result[], int n)
{
for (int i = 0; i < n; ++i)
{
cout << result[i];
}
cout << "\n";
}
void partition(string num, char result[],
int index, int position, int k)
{
if (position == k)
{
this->displayResult(result, index);
return;
}
int count = 0;
for (int i = position; i < k; ++i)
{
result[index + count] = num[i];
if (count == 0 && num[i] == '0')
{
// When if number starts with zero
// Include space
result[index + count + 1] = ' ';
count++;
}
else if (this->isEvenDigit(num[i]))
{
// Include space
result[index + count + 1] = ' ';
// Find next even number
this->partition(num, result, index + count + 2, i + 1, k);
}
count++;
}
}
void splitIntoEvenNumber(string num)
{
int k = num.length();
if (k == 0 || !this->isEvenDigit(num[k - 1]))
{
return;
}
// Collect result
char result[(k *2) + 1];
cout << "\n Given number : " << num << endl;
this->partition(num, result, 0, 0, k);
}
};
int main()
{
Splitting *task = new Splitting();
// Test
task->splitIntoEvenNumber("12341872017226");
return 0;
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````// Include namespace system
using System;
/*
Csharp program
Split a large Even number into small Even number
*/
public class Splitting
{
// Check whether given character is form of even or not
public Boolean isEvenDigit(char ch)
{
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
{
// Yes
return true;
}
// No
return false;
}
public void displayResult(char[] result, int n)
{
for (int i = 0; i < n; ++i)
{
Console.Write(result[i]);
}
Console.Write("\n");
}
public void partition(String num, char[] result,
int index, int position, int k)
{
if (position == k)
{
this.displayResult(result, index);
return;
}
int count = 0;
for (int i = position; i < k; ++i)
{
result[index + count] = num[i];
if (count == 0 && num[i] == '0')
{
// When if number starts with zero
// Include space
result[index + count + 1] = ' ';
count++;
}
else if (this.isEvenDigit(num[i]))
{
// Include space
result[index + count + 1] = ' ';
// Find next even number
this.partition(num, result, index + count + 2, i + 1, k);
}
count++;
}
}
public void splitIntoEvenNumber(String num)
{
int k = num.Length;
if (k == 0 || !this.isEvenDigit(num[k - 1]))
{
return;
}
// Collect result
char[] result = new char[(k * 2) + 1];
Console.WriteLine("\n Given number : " + num);
this.partition(num, result, 0, 0, k);
}
public static void Main(String[] args)
{
Splitting task = new Splitting();
// Test
task.splitIntoEvenNumber("12341872017226");
}
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````package main
import "fmt"
/*
Go program
Split a large Even number into small Even number
*/
type Splitting struct {}
func getSplitting() * Splitting {
var me *Splitting = &Splitting {}
return me
}
// Check whether given character is form of even or not
func(this Splitting) isEvenDigit(ch byte) bool {
if ch == '0' || ch == '2' || ch == '4' || ch == '6' || ch == '8' {
// Yes
return true
}
// No
return false
}
func(this Splitting) displayResult(result[] byte, n int) {
for i := 0 ; i < n ; i++ {
fmt.Printf("%c",result[i])
}
fmt.Print("\n")
}
func(this Splitting) partition(num string, result[] byte, index int,
position int, k int) {
if position == k {
this.displayResult(result, index)
return
}
var count int = 0
for i := position ; i < k ; i++ {
result[index + count] = num[i]
if count == 0 && num[i] == '0' {
// When if number starts with zero
// Include space
result[index + count + 1] = ' '
count++
} else if this.isEvenDigit(num[i]) {
// Include space
result[index + count + 1] = ' '
// Find next even number
this.partition(num, result, index + count + 2, i + 1, k)
}
count++
}
}
func(this Splitting) splitIntoEvenNumber(num string) {
var k int = len(num)
if k == 0 || !this.isEvenDigit(num[k - 1]) {
return
}
// Collect result
var result = make([] byte, (k * 2) + 1)
fmt.Println("\n Given number : ", num)
this.partition(num, result, 0, 0, k)
}
func main() {
var task * Splitting = getSplitting()
// Test
task.splitIntoEvenNumber("12341872017226")
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````<?php
/*
Php program
Split a large Even number into small Even number
*/
class Splitting
{
// Check whether given character is form of even or not
public  function isEvenDigit(\$ch)
{
if (\$ch == '0' || \$ch == '2' || \$ch == '4' ||
\$ch == '6' || \$ch == '8')
{
// Yes
return true;
}
// No
return false;
}
public  function displayResult(\$result, \$n)
{
for (\$i = 0; \$i < \$n; ++\$i)
{
echo(\$result[\$i]);
}
echo("\n");
}
public  function partition(\$num, \$result, \$index, \$position, \$k)
{
if (\$position == \$k)
{
\$this->displayResult(\$result, \$index);
return;
}
\$count = 0;
for (\$i = \$position; \$i < \$k; ++\$i)
{
\$result[\$index + \$count] = \$num[\$i];
if (\$count == 0 && \$num[\$i] == '0')
{
// When if number starts with zero
// Include space
\$result[\$index + \$count + 1] = ' ';
\$count++;
}
else if (\$this->isEvenDigit(\$num[\$i]))
{
// Include space
\$result[\$index + \$count + 1] = ' ';
// Find next even number
\$this->partition(\$num, \$result,
\$index + \$count + 2, \$i + 1, \$k);
}
\$count++;
}
}
public  function splitIntoEvenNumber(\$num)
{
\$k = strlen(\$num);
if (\$k == 0 || !\$this->isEvenDigit(\$num[\$k - 1]))
{
return;
}
// Collect result
\$result = array_fill(0, (\$k * 2) + 1, ' ');
echo("\n Given number : ".\$num.
"\n");
\$this->partition(\$num, \$result, 0, 0, \$k);
}
}

function main()
{
\$task = new Splitting();
// Test
\$task->splitIntoEvenNumber("12341872017226");
}
main();``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````/*
Node JS program
Split a large Even number into small Even number
*/
class Splitting
{
// Check whether given character is form of even or not
isEvenDigit(ch)
{
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
{
// Yes
return true;
}
// No
return false;
}
displayResult(result, n)
{
for (var i = 0; i < n; ++i)
{
process.stdout.write(result[i]);
}
process.stdout.write("\n");
}
partition(num, result, index, position, k)
{
if (position == k)
{
this.displayResult(result, index);
return;
}
var count = 0;
for (var i = position; i < k; ++i)
{
result[index + count] = num.charAt(i);
if (count == 0 && num.charAt(i) == '0')
{
// When if number starts with zero
// Include space
result[index + count + 1] = ' ';
count++;
}
else if (this.isEvenDigit(num.charAt(i)))
{
// Include space
result[index + count + 1] = ' ';
// Find next even number
this.partition(num, result,
index + count + 2, i + 1, k);
}
count++;
}
}
splitIntoEvenNumber(num)
{
var k = num.length;
if (k == 0 || !this.isEvenDigit(num.charAt(k - 1)))
{
return;
}
// Collect result
var result = Array((k * 2) + 1).fill(' ');
console.log("\n Given number : " + num);
this.partition(num, result, 0, 0, k);
}
}

function main()
{
var task = new Splitting();
// Test
task.splitIntoEvenNumber("12341872017226");
}
main();``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````#    Python 3 program
#    Split a large Even number into small Even number
class Splitting :
#  Check whether given character is form of even or not
def isEvenDigit(self, ch) :
if (ch == '0'
or ch == '2'
or ch == '4'
or ch == '6'
or ch == '8') :
#  Yes
return True

#  No
return False

def displayResult(self, result, n) :
i = 0
while (i < n) :
print(result[i], end = "")
i += 1

print(end = "\n")

def partition(self, num, result, index, position, k) :
if (position == k) :
self.displayResult(result, index)
return

count = 0
i = position
while (i < k) :
result[index + count] = num[i]
if (count == 0 and num[i] == '0') :
#  When if number starts with zero
#  Include space
result[index + count + 1] = ' '
count += 1
elif (self.isEvenDigit(num[i])) :
#  Include space
result[index + count + 1] = ' '
#  Find next even number
self.partition(num, result,
index + count + 2, i + 1, k)

count += 1
i += 1

def splitIntoEvenNumber(self, num) :
k = len(num)
if (k == 0 or not self.isEvenDigit(num[k - 1])) :
return

#  Collect result
result = [ ' ' ] * ((k * 2) + 1)
print("\n Given number : ", num)
self.partition(num, result, 0, 0, k)

def main() :
task = Splitting()
#  Test
task.splitIntoEvenNumber("12341872017226")

if __name__ == "__main__": main()``````

#### Output

`````` Given number :  12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````#    Ruby program
#    Split a large Even number into small Even number
class Splitting
#  Check whether given character is form of even or not
def isEvenDigit(ch)
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
#  Yes
return true
end

#  No
return false
end

def displayResult(result, n)
i = 0
while (i < n)
print(result[i])
i += 1
end

print("\n")
end

def partition(num, result, index, position, k)
if (position == k)
self.displayResult(result, index)
return
end

count = 0
i = position
while (i < k)
result[index + count] = num[i]
if (count == 0 && num[i] == '0')
#  When if number starts with zero
#  Include space
result[index + count + 1] = ' '
count += 1
elsif (self.isEvenDigit(num[i]))
#  Include space
result[index + count + 1] = ' '
#  Find next even number
self.partition(num, result, index + count + 2, i + 1, k)
end

count += 1
i += 1
end

end

def splitIntoEvenNumber(num)
k = num.length
if (k == 0 || !self.isEvenDigit(num[k - 1]))
return
end

#  Collect result
result = Array.new((k * 2) + 1) { ' '
}
print("\n Given number : ", num, "\n")
self.partition(num, result, 0, 0, k)
end

end

def main()
task = Splitting.new()
#  Test
task.splitIntoEvenNumber("12341872017226")
end

main()``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226
``````
``````import scala.collection.mutable._;
/*
Scala program
Split a large Even number into small Even number
*/
class Splitting()
{
// Check whether given character is form of even or not
def isEvenDigit(ch: Char): Boolean = {
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
{
// Yes
return true;
}
// No
return false;
}
def displayResult(result: Array[Char], n: Int): Unit = {
var i: Int = 0;
while (i < n)
{
print(result(i));
i += 1;
}
print("\n");
}
def partition(num: String, result: Array[Char],
index: Int, position: Int, k: Int): Unit = {
if (position == k)
{
displayResult(result, index);
return;
}
var count: Int = 0;
var i: Int = position;
while (i < k)
{
result(index + count) = num.charAt(i);
if (count == 0 && num.charAt(i) == '0')
{
// When if number starts with zero
// Include space
result(index + count + 1) = ' ';
count += 1;
}
else if (isEvenDigit(num.charAt(i)))
{
// Include space
result(index + count + 1) = ' ';
// Find next even number
partition(num, result, index + count + 2, i + 1, k);
}
count += 1;
i += 1;
}
}
def splitIntoEvenNumber(num: String): Unit = {
var k: Int = num.length();
if (k == 0 || !isEvenDigit(num.charAt(k - 1)))
{
return;
}
// Collect result
var result: Array[Char] = Array.fill[Char]((k * 2) + 1)(' ');
println("\n Given number : " + num);
partition(num, result, 0, 0, k);
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Splitting = new Splitting();
// Test
task.splitIntoEvenNumber("12341872017226");
}
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````import Foundation;
/*
Swift 4 program
Split a large Even number into small Even number
*/
class Splitting
{
// Check whether given character is form of even or not
func isEvenDigit(_ ch: Character) -> Bool
{
if (ch == "0" || ch == "2" || ch == "4" ||
ch == "6" || ch == "8")
{
// Yes
return true;
}
// No
return false;
}
func displayResult(_ result: [Character], _ n: Int)
{
var i: Int = 0;
while (i < n)
{
print(result[i], terminator: "");
i += 1;
}
print(terminator: "\n");
}
func partition(_ num: [Character], _ result: inout[Character],
_ index: Int, _ position: Int, _ k: Int)
{
if (position == k)
{
self.displayResult(result, index);
return;
}
var count: Int = 0;
var i: Int = position;
while (i < k)
{
result[index + count] = num[i];
if (count == 0 && num[i] == "0")
{
// When if number starts with zero
// Include space
result[index + count + 1] = " ";
count += 1;
}
else if (self.isEvenDigit(num[i]))
{
// Include space
result[index + count + 1] = " ";
// Find next even number
self.partition(num, &result,
index + count + 2, i + 1, k);
}
count += 1;
i += 1;
}
}
func splitIntoEvenNumber(_ number: String)
{
let num = Array(number);
let k: Int = num.count;
if (k == 0 || !self.isEvenDigit(num[k - 1]))
{
return;
}
// Collect result
var result: [Character] = Array(repeating: " ", count: (k * 2) + 1);
print("\n Given number : ", number);
self.partition(num, &result, 0, 0, k);
}
}
func main()
{
let task: Splitting = Splitting();
// Test
task.splitIntoEvenNumber("12341872017226");
}
main();``````

#### Output

`````` Given number :  12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````
``````/*
Kotlin program
Split a large Even number into small Even number
*/
class Splitting
{
// Check whether given character is form of even or not
fun isEvenDigit(ch: Char): Boolean
{
if (ch == '0' || ch == '2' || ch == '4' ||
ch == '6' || ch == '8')
{
// Yes
return true;
}
// No
return false;
}
fun displayResult(result: Array < Char > , n: Int): Unit
{
var i: Int = 0;
while (i < n)
{
print(result[i]);
i += 1;
}
print("\n");
}
fun partition(num: String, result: Array < Char > ,
index: Int, position: Int, k: Int): Unit
{
if (position == k)
{
this.displayResult(result, index);
return;
}
var count: Int = 0;
var i: Int = position;
while (i < k)
{
result[index + count] = num.get(i);
if (count == 0 && num.get(i) == '0')
{
// When if number starts with zero
// Include space
result[index + count + 1] = ' ';
count += 1;
}
else if (this.isEvenDigit(num.get(i)))
{
// Include space
result[index + count + 1] = ' ';
// Find next even number
this.partition(num, result,
index + count + 2,
i + 1, k);
}
count += 1;
i += 1;
}
}
fun splitIntoEvenNumber(num: String): Unit
{
val k: Int = num.length;
if (k == 0 || !this.isEvenDigit(num.get(k - 1)))
{
return;
}
// Collect result
val result: Array < Char > = Array((k * 2) + 1)
{
' '
};
println("\n Given number : " + num);
this.partition(num, result, 0, 0, k);
}
}
fun main(args: Array < String > ): Unit
{
val task: Splitting = Splitting();
// Test
task.splitIntoEvenNumber("12341872017226");
}``````

#### Output

`````` Given number : 12341872017226
12 34 18 72 0 172 2 6
12 34 18 72 0 172 26
12 34 18 72 0 1722 6
12 34 18 72 0 17226
12 34 18 720 172 2 6
12 34 18 720 172 26
12 34 18 720 1722 6
12 34 18 720 17226
12 34 18 720172 2 6
12 34 18 720172 26
12 34 18 7201722 6
12 34 18 72017226
12 34 1872 0 172 2 6
12 34 1872 0 172 26
12 34 1872 0 1722 6
12 34 1872 0 17226
12 34 18720 172 2 6
12 34 18720 172 26
12 34 18720 1722 6
12 34 18720 17226
12 34 18720172 2 6
12 34 18720172 26
12 34 187201722 6
12 34 1872017226
12 3418 72 0 172 2 6
12 3418 72 0 172 26
12 3418 72 0 1722 6
12 3418 72 0 17226
12 3418 720 172 2 6
12 3418 720 172 26
12 3418 720 1722 6
12 3418 720 17226
12 3418 720172 2 6
12 3418 720172 26
12 3418 7201722 6
12 3418 72017226
12 341872 0 172 2 6
12 341872 0 172 26
12 341872 0 1722 6
12 341872 0 17226
12 3418720 172 2 6
12 3418720 172 26
12 3418720 1722 6
12 3418720 17226
12 3418720172 2 6
12 3418720172 26
12 34187201722 6
12 341872017226
1234 18 72 0 172 2 6
1234 18 72 0 172 26
1234 18 72 0 1722 6
1234 18 72 0 17226
1234 18 720 172 2 6
1234 18 720 172 26
1234 18 720 1722 6
1234 18 720 17226
1234 18 720172 2 6
1234 18 720172 26
1234 18 7201722 6
1234 18 72017226
1234 1872 0 172 2 6
1234 1872 0 172 26
1234 1872 0 1722 6
1234 1872 0 17226
1234 18720 172 2 6
1234 18720 172 26
1234 18720 1722 6
1234 18720 17226
1234 18720172 2 6
1234 18720172 26
1234 187201722 6
1234 1872017226
123418 72 0 172 2 6
123418 72 0 172 26
123418 72 0 1722 6
123418 72 0 17226
123418 720 172 2 6
123418 720 172 26
123418 720 1722 6
123418 720 17226
123418 720172 2 6
123418 720172 26
123418 7201722 6
123418 72017226
12341872 0 172 2 6
12341872 0 172 26
12341872 0 1722 6
12341872 0 17226
123418720 172 2 6
123418720 172 26
123418720 1722 6
123418720 17226
123418720172 2 6
123418720172 26
1234187201722 6
12341872017226``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

### New Comment

© 2022, kalkicode.com, All rights reserved