a:6:{i:0;s:10367:"				<div class="h1"><h1>Luxury Andaman Honeymoon Trip</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.globalandamantravels.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.globalandamantravels.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Luxury Andaman Honeymoon Trip</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair, Havelock</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.globalandamantravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Luxury Andaman Honeymoon Trip - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="110597"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_16/471939/182290.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/471939/182290.jpg"  width="150" height="150"    alt="Luxury Andaman Honeymoon Trip" title="Luxury Andaman Honeymoon Trip" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival
								</p>
								<p class="aj">Arrival at Port Blair in the morning/afternoon by flight and our representative will be waiting outside holding a placard with your name on it. You will be taken to your hotel where you relax and rest. Post lunch rest and later proceed to one among the most visited attraction in Andaman Islands, Cellular Jail. This jail before India's Independence hosted the most ferocious prisoners in the Andaman Islands. Today this jail stands as a national memorial. Visit to the this historic attractions and know about the rich history of the Andaman Islands. Later visit the light and sound show from where you see an enactment of the struggle that was faced by the freedom fighters before India's Independence. Post completion of this trip, we drop you back to your hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Andaman Islands
								</p>
								<p class="aj">Today we depart to Andaman Islands most amazing destination, Havelock Island. The destination is rated as the best island in India. Depart from Port Blair to Havelock Island in a cruise. Upon reaching Havelock, our representative attends you and will drop you at your hotel. Rest and Relax in a beachside resort. We at Experience Andamans only share beach side resorts for exquisite experiences. Later we begin our journey to one among Asia's best beach, Radhanagar Beach. Explore this white sand beach and bask in the beauty of this natural wonder. Post this we drop you back to your resort where you relax and unwind. A high speed cruise with Royal Class tickets are provided for your journey.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Elephant Beach
								</p>
								<p class="aj">Embark on the most memorable snorkeling trip, just 40 min by Boat Elephant beach offers snorkelers calm blue crystal clear shallow waters and is the perfect spot for beginner snorkelers. The boat goes right up to the beach. ' also a great place to just spend the day lying on the beach and relaxing. The reef here starts very close to shore at a depth of about 1 meter. The large reef is mostly made up of hard coral and has plenty of marine life.Upon completion, return back to the resort to relax. You will be reaching Elephant Beach either by boat or trekking based upon which path is open that day. <br />
After snorkelling you avail the best underwater experience, Sea Walk at Elephant Beach. Upon completion of these activities we return back to the resort to relax. Arrangement for Candle light dinner in one among the best resorts at Havelock will be made in the evening.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Havelock Island
								</p>
								<p class="aj">Spend the day at leisure enjoying white sand beaches and do scuba Diving with the best diver centre in the Andaman Islands. A two wheeler will also be provided for you to explore the islands by yourself. We will take you to the diving centre where you get ready for the diving experience. A guide trains you and takes you the underwater reef. No swimming skills are required to do Scuba Diving at Havelock Island. Explore the best reef in Andaman for beginners during this course. Post completion of the tour, we will spend the entire day at leisure.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Havelock Island
								</p>
								<p class="aj">Today, we return back from the exotic Havelock Island at 10:15 AM in a cruise. Upon reaching our representative will attend you and will take you to the hotel for check-in. Rest and relax at the hotel.<br />
<br />
Later at 3:30 PM we begin our journey about 30 kms from Port Blair, to one among the best sunset point in the Andaman Islands, Chidiatapu. Watch a mesmerizing sunset by the beach, take some snaps and imagine the wonderful moments you spent at the Andaman Islands.<br />
<br />
Return back to Port Blair and later in the evening we take you to do shopping before your last night at this amazing destination, Andamans.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Departure
								</p>
								<p class="aj">Return home with sweet memories. Do note that hotels have an early check out time and guest will need to keep their luggage in the reception prior to departure, if the flight is scheduled in the afternoon.<br />
Depart Port Blair with fond memories of these mesmerizing Islands.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.globalandamantravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Luxury Andaman Honeymoon Trip - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="110597"/>
						</form>
						</div>
						
						";i:1;s:68:"Book Luxury Andaman Honeymoon Trip - 5 Nights / 6 Days Tour Packages";i:2;s:145:"book luxury andaman honeymoon trip - 5 nights / 6 days tour packages, water sports and activity tour packages, port blair, havelock tour packages";i:3;s:191:"Global Andaman Tour & Travels offers Luxury Andaman Honeymoon Trip - 5 Nights / 6 Days tour package, budget Water Sports and Activity tour packages for Port Blair, Havelock at exciting price.";i:4;s:421:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair, Havelock"        
		                 },
		      "description": "",
		      "name": "Luxury Andaman Honeymoon Trip",
		      "telephone": "+91-9474239777"
		    }
		    </script>
			";i:5;N;}