#include <stdio.h>
#include <stdlib.h>
#define MAX_TEXT 101
int check_key(int argc, char *argv[]);
int read_data(int *width, char *text);
int str_len(char *str);
void skip_spaces(char *text, int *pos);
int word_len(char *text, int pos);
void print_part(char *text, int *pos, int count);
void print_text(char *text, int width);
void new_line(int *first_line);
int main(int argc, char *argv[]) {
int width;
char text[MAX_TEXT];
if (!check_key(argc, argv) || !read_data(&width, text)) {
printf("n/a");
} else {
print_text(text, width);
}
return 0;
}
int check_key(int argc, char *argv[]) {
return argc == 2 && argv[1][0] == '-' && argv[1][1] == 'w' && argv[1][2] == '\0';
}
int read_data(int *width, char *text) {
int result = 1;
if (scanf("%d\n", width) != 1 || *width <= 0 || fgets(text, MAX_TEXT, stdin) == NULL) {
result = 0;
}
if (result) {
int len = str_len(text);
if (len > 0 && text[len - 1] == '\n') {
text[len - 1] = '\0';
}
}
return result;
}
void print_text(char *text, int width) {
int pos = 0;
int line_len = 0;
int first_line = 1;
skip_spaces(text, &pos);
while (text[pos] != '\0') {
int len = word_len(text, pos);
if (line_len == 0) {
new_line(&first_line);
if (len <= width) {
print_part(text, &pos, len);
line_len = len;
} else {
print_part(text, &pos, width - 1);
putchar('-');
line_len = 0;
}
} else if (line_len + 1 + len <= width) {
putchar(' ');
print_part(text, &pos, len);
line_len += len + 1;
} else if (line_len + 3 <= width && len > width - line_len - 1) {
putchar(' ');
print_part(text, &pos, width - line_len - 2);
putchar('-');
line_len = 0;
} else {
line_len = 0;
}
skip_spaces(text, &pos);
}
}
void new_line(int *first_line) {
if (*first_line) {
*first_line = 0;
} else {
putchar('\n');
}
}
int str_len(char *str) {
int len = 0;
while (str[len] != '\0') {
len++;
}
return len;
}
void skip_spaces(char *text, int *pos) {
while (text[*pos] == ' ') {
(*pos)++;
}
}
int word_len(char *text, int pos) {
int len = 0;
while (text[pos + len] != '\0' && text[pos + len] != ' ') {
len++;
}
return len;
}
void print_part(char *text, int *pos, int count) {
for (int i = 0; i < count; i++) {
putchar(text[*pos]);
(*pos)++;
}
}